Releases: touying-typ/touying
Touying 0.6.1
Added support for the theorion package, and used it as the default math theorem environment.
🌌 Theorion
Theorion (The Orion) is an out-of-the-box, customizable and multilingual theorem environment package for Typst. Quick start:
#import "@preview/theorion:0.3.0": *
#import cosmos.fancy: *
// #import cosmos.rainbow: *
// #import cosmos.clouds: *
#show: show-theorion
#theorem(title: "Euclid's Theorem")[
There are infinitely many prime numbers.
] <thm:euclid>
#theorem-box(title: "Theorem without numbering", outlined: false)[
This theorem is not numbered.
]
Current features:
- Out-of-the-box styles 🎨:
- 📄 Simple - Clean and minimalistic
- 🌈 Rainbow - Colorful and vibrant
- ☁️ Clouds - Soft and elegant
- ✨ Fancy - Professional and polished
- Highly customizable ⚙️:
- Custom counters and numbering styles
- Configurable inheritance levels
- Custom theorem environments
- Custom rendering functions
- Built-in multilingual support 🌐
- Rich theorem environments 📚: theorem, definition, lemma, corollary, example, proof, and many more presets
- Theorem restatement 🔄:
#theorion-restate(filter: it => it.outlined and it.identifier == "theorem")
- Additional features 📑:
- Theorem table of contents
- Appendix numbering adjustments
- Complete label and reference system
- Optional outline and numbering display
- Touying animation support
Touying 0.6.0
It's not a big update, but it's the first touying release since typst 0.13 was released.
Features
- feat: add auto style for display-current-heading.
- For users, you can use
show heading: set text(blue)
to change color for heading in some themes likedewdrop
. - For theme creator, you can use syntax like
utils.display-current-heading(level: 1, style: auto)
to achieve the same result.
- For users, you can use
- feat: apply config-info information to
set document
. - feat: set
stretch: false
by default foralternatives
functions. This is a minor breaking change, but I think it would be more intuitive: no auto empty space.
Fixes
- fix: fix error with uncover using semi-transparent-cover
- fix: fix type string comparison #153
- fix: fix horizontal-line bug in typst 0.13.0
- refactor: fix display-current-short-heading
Touying 0.5.5
Fixed bugs.
Touying 0.5.4
Features
- docs: improve param documentation and we have better hints for tinymist #98
- feat: fake frozon states support for
heading
#124 - feat: add alpha-changing-cover and color-changing-cover #129
- feat: add effect function #111
- Example:
#effect(text.with(fill: red), "2-")[Something]
will display[Something]
if the current slide is 2 or later.
- Example:
- feat: add argument
config: (..)
forxxx-slide
functions - feat: add
align
argument for university theme
Fixes
- fix: also hide enum numbers with show-hide-set-list-marker-none #114
- fix: fixed progress bar not to break apart when global figure gutter is set nonzero #120
- fix: fixed frozen-counters bug with multiple #pause commands #124
- fix: fixed incorrect page num when draft is true #125
- fix: fix behaviors of fit-to-height and fit-to-width partially #131
- fix: duplicated footnotes in headings #132
- fix: do not hardcode page sizes #134
- fix: add default numbering for page #100
- refactor: move show-strong-with-alert to per-slide level #123
- refactor: remove unnecessary
config-page(fill: ...)
- theme(metropolis): fix color of title page and fix #103
- theme(metropolis): fixed metropolis slide's header to return content if title is specified #126
- theme(metropolis): respect colors dict in metropolis theme #133
Thanks for the contributions from @enklht.
Touying 0.5.3
Features
- feat: add
stretch
parameter for#alternatives[]
function class. This allows us to handle cases where the internal element is a context expression. - feat: add
config-common(align-enum-marker-with-baseline: true)
for aligning the enum marker with the baseline. - feat: add
linebreaks
option tocomponents.mini-slides
. #96 - feat: add
<touying:skip>
label to skip a new-section-slide. - feat: add
config-common(show-hide-set-list-marker-none: true)
to make the markers oflist
andenum
invisible after#pause
. - feat: add
config-common(bibliography-as-footnote: bibliography(title: none, "ref.bib"))
to display the bibliography in footnotes. - refactor: add
config-common(show-strong-with-alert: true)
configuration to display strong text with an alert. (small breaking change for some themes) - refactor: refactor
display-current-heading
for preserving heading style in title and subtitle. #71 - refactor: make
new-section-slide-fn
function class can receivebody
parameter. We can usereceive-body-for-new-section-slide-fn
to control it. (Breaking change)- For example, you can add
#speaker-note[]
for a new section slide, like= Section Title \ #speaker-note[]
. - If you don't want to append content to the body of the new section slide, you can use
---
after the section title.
- For example, you can add
Fixes
- fix outdated documentation.
- fix bug of
enable-frozen-states-and-counters
in handout mode. - fix unusable
square()
function. #73 - fix hidden footer for
show-notes-on-second-screen: bottom
. #89 - fix metadata element in table cells. #77 #95
- fix
auto-offset-for-heading
tofalse
by default. - fix uncover/only hides more content than it should. #85
- theme(simple): fix wrong title and subtitle. #70
Touying 0.5.2
Fix some bugs.
Touying 0.5.1
Fix some bugs.
Touying 0.5.0
This is a significant disruptive version update. Touying has removed many mistakes that resulted from incorrect decisions. We have redesigned numerous features. The goal of this version is to make Touying more user-friendly, more flexible, and more powerful.
Major changes include:
- Avoiding closures and OOP syntax, which makes Touying's configuration simpler and allows for the use of document comments to provide more auto-completion information for the slide function.
- The existing
#let slide(self: none, ..args) = { .. }
is now#let slide(..args) = touying-slide-wrapper(self => { .. })
, whereself
is automatically injected. - We can use
config-xxx
syntax to configure Touying, for example,#show: university-theme.with(aspect-ratio: "16-9", config-colors(primary: blue))
.
- The existing
- The
touying-slide
function no longer includes parameters likesection
,subsection
, andtitle
. These will be automatically inserted into the slide as invisible level 1, 2, or 3 headings viaself.headings
(controlled by theslide-level
configuration).- We can leverage the powerful headings provided by Typst to support numbering, outlines, and bookmarks.
- Headings within the
#slide[= XXX]
function will be adjusted to levelslide-level + 1
using theoffset
parameter. - We can use labels on headings to control many aspects, such as supporting the
<touying:hidden>
and other special labels, implementing short headings, or recalling a slide with#touying-recall()
.
- Touying now supports the normal use of
set
andshow
rules at any position, without requiring them to be in specific locations.
A simple usage example is shown below, and more examples can be found in the examples
directory:
#import "@preview/touying:0.5.0": *
#import themes.university: *
#show: university-theme.with(
aspect-ratio: "16-9",
config-info(
title: [Title],
subtitle: [Subtitle],
author: [Authors],
date: datetime.today(),
institution: [Institution],
logo: emoji.school,
),
)
#set heading(numbering: "1.1")
#title-slide()
= The Section
== Slide Title
#lorem(40)
Theme Migration Guide:
For detailed changes to specific themes, you can refer to the themes
directory. Generally, if you want to migrate an existing theme, you should:
- Rename the
register
function toxxx-theme
and remove theself
parameter. - Add a
show: touying-slides.with(..)
configuration.- Change
self.methods.colors
toconfig-colors(primary: rgb("#xxxxxx"))
. - Change
self.page-args
toconfig-page()
. - Change
self.methods.slide = slide
toconfig-methods(slide: slide)
. - Change
self.methods.new-section-slide = new-section-slide
toconfig-methods(new-section-slide: new-section-slide)
. - Change private theme variables like
self.xxx-footer
toconfig-store(footer: [..])
, which you can access throughself.store.footer
. - Move the configuration of headers and footers into the
slide
function rather than in thexxx-theme
function. - You can directly use
set
orshow
rules inxxx-theme
or configure them throughconfig-methods(init: (self: none, body) => { .. })
to fully utilize theself
parameter.
- Change
- For
states.current-section-with-numbering
, you can useutils.display-current-heading(level: 1)
instead.- If you only need the previous heading regardless of whether it is a section or a subsection, use
utils.display-current-heading()
.
- If you only need the previous heading regardless of whether it is a section or a subsection, use
- The
alert
function can be replaced withconfig-methods(alert: utils.alert-with-primary-color)
. - The
touying-outline()
function is no longer needed; you can usecomponents.adaptive-columns(outline())
instead. Consider usingcomponents.progressive-outline()
orcomponents.custom-progressive-outline()
. - Replace
states.slide-counter.display() + " / " + states.last-slide-number
withcontext utils.slide-counter.display() + " / " + utils.last-slide-number
. That is, we no longer usestates
bututils
. - Remove the
slides
function; we no longer need this function. Instead of implicitly injectingtitle-slide()
, explicitly use#title-slide()
. If necessary, consider adding it in thexxx-theme
function. - Change
#let slide(self: none, ..args) = { .. }
to#let slide(..args) = touying-slide-wrapper(self => { .. })
, whereself
is automatically injected.- Change specific parameter configurations to
self = utils.merge-dicts(self, config-page(fill: self.colors.neutral-lightest))
. - Remove
self = utils.empty-page(self)
and useconfig-common(freeze-slide-counter: true)
andconfig-page(margin: 0em)
instead. - Change
(self.methods.touying-slide)()
totouying-slide()
.
- Change specific parameter configurations to
- You can insert visible headings into slides by configuring
config-common(subslide-preamble: self => text(1.2em, weight: "bold", utils.display-current-heading(depth: self.slide-level)))
. - Finally, don't forget to add document comments to your functions so your users can get better auto-completion hints, especially when using the Tinymist plugin.
Other Changes:
- theme(stargazer): new stargazer theme modified from Coekjan/touying-buaa.
- feat: implemented fake frozen states support, allowing you to use numbering and
#pause
normally. This behavior can be controlled withenable-frozen-states-and-counters
,frozen-states
, andfrozen-counters
inconfig-common()
. - feat: implemented
label-only-on-last-subslide
functionality to prevent non-unique label warnings when working with@equation
and@figure
in conjunction with#pause
animations. - feat: added the
touying-recall(<label>)
function to replay a specific slide. - feat: implemented
nontight-list-enum-and-terms
, which defaults totrue
and forceslist
,enum
, andterms
to have theirtight
parameter set tofalse
. You can control spacing size with#set list(spacing: 1em)
. - feat: replaced
list
withterms
implementation to achievealign-list-marker-with-baseline
, which is off by default. - feat: implemented
scale-list-items
, scaling list items by a factor, e.g.,scale-list-items: 0.8
scales list items by 0.8. - feat: supported direct use of
#pause
and#meanwhile
in math expressions, such as$x + pause y$
. - feat: provided
#pause
and#meanwhile
support for most layout functions, such asgrid
andtable
. - feat: added
#show: appendix
support, essentially equivalent to#show: touying-set-config.with((appendix: true))
. - feat: Introduced special labels
<touying:hidden>
,<touying:unnumbered>
,<touying:unoutlined>
,<touying:unbookmarked>
to simplify control over heading behavior. - feat: added basic
utils.short-heading
support to display short headings using labels, such as displaying<sec:my-section>
as "My Section". - feat: added
#components.adaptive-columns()
to achieve adaptive columns that span a page, typically used with theoutline()
function. - feat: added
#show: magic.bibliography-as-footnote.with(bibliography("ref.bib"))
to display the bibliography in footnotes. - feat: added components like
custom-progressive-outline
,mini-slides
. - feat: removed
touying-outline()
, which can be directly replaced withoutline()
. - fix: replaced potentially incompatible code, such as
type(s) == "string"
andlocate(loc => { .. })
. - fix: Fixed some bugs.
Touying 0.4.2
Feature: Export slides to PPTX and HTML formats and show presentation online. touying-exporter touying-template online
- theme(metropolis): decoupled text color with
neutral-dark
(Breaking change) - feat: add mark-style uncover, only and alternatives
- feat: add warning for styled block for slides
- feat: add warning for touying-temporary-mark
- feat: add markup-text for speaker-note
- fix: fix bug of slides
Touying 0.4.1
Features
- feat: support builtin outline and bookmark #44
- feat: support speaker note for dual-screen #43
- feat: add touying-mitex function
Fixes
- fix: add outline-slide for dewdrop theme #42
- fix: fix regression of default value "auto" for repeat
Miscellaneous Improvements
- feat: add list support for
touying-outline
function - feat: add auto-reset-footnote
- feat: add
freeze-in-empty-page
for better page counter - feat: add
..args
for register method to capture unused arguments #22