بنقرة واحدة
touying-author
Author, refactor, and troubleshoot Typst slide decks built with Touying
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Author, refactor, and troubleshoot Typst slide decks built with Touying
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | touying-author |
| description | Author, refactor, and troubleshoot Typst slide decks built with Touying |
Guide Typst presentation authoring with Touying, emphasizing clean structure, repeatable configuration, and slide-safe patterns.
#show: <theme>.with(...).#slide for custom layouts or animations.examples/simple.typ for a minimal deck, or examples/default.typ for the bare theme.Snippet from examples/simple.typ:
#import "@preview/touying:0.6.1": *
#import themes.simple: *
#show: simple-theme.with(
aspect-ratio: "16-9",
footer: [Simple slides],
)
main.typ) that applies #show and all config-* calls.globals.typ + main.typ + content.typ pattern; use #include for content and #import for globals to avoid circular refs.config.typ (see docs/start.md) and globals.typ (see docs/multi-file.md) for the shared config file; pick one name and use it consistently in your project.content.typ into sections/ and include sections/content.typ (and optional sections/another-section.typ) from main.typ.config-page, config-common, config-info, config-colors, config-methods, and config-store over direct set page or ad-hoc global show.config-common(slide-level: n) to choose which heading levels create slides.#slide only for custom layout or animation; always wrap slide functions with touying-slide-wrapper.#slide(repeat: n, self => [...])), set repeat explicitly and use utils.methods(self) to access uncover, only, and alternatives..
├── globals.typ
├── main.typ
└── content.typ
.
├── globals.typ
├── main.typ
└── sections/
├── content.typ
└── another-section.typ
touying-slides, slide, touying-slide, touying-slide-wrapper, empty-slidepause, meanwhile, uncover, only, effect, alternatives, alternatives-match, alternatives-fn, alternatives-casesconfig-common, config-page, config-info, config-colors, config-methods, config-store, default-config, touying-set-config, appendixutils.* (fit-to-height, fit-to-width, cover helpers, progress, heading helpers)components.side-by-side, components.adaptive-columns, components.progressive-outline, components.custom-progressive-outlinetouying-reducer, touying-equation, touying-mitex, speaker-note, pdfpc.*touying-recall, touying-fn-wrapper<touying:hidden> (see docs/code-styles.md), and see docs/changelog.md for <touying:unnumbered>, <touying:unoutlined>, <touying:unbookmarked>, and <touying:skip>.components.adaptive-columns(outline(...)) for a table of contents slide; use components.progressive-outline for progress-aware outlines.== <touying:hidden> to insert a blank title slide and clear the previous heading context.#pagebreak() or --- to split slides without changing headings.#empty-slide[...] for slides without header/footer.config-common(handout: true) to keep only the last subslide per slide in handout output.#show: appendix to freeze last-slide counts after the main deck.Snippet from examples/default.typ:
= Outline <touying:hidden>
#components.adaptive-columns(outline(title: none, indent: 1em))
#pause and #meanwhile for simple reveals; avoid using them inside context where marks are not supported.#uncover to reserve layout space; use #only to remove layout space when hidden.repeat and utils.methods(self).pause/meanwhile inside $ ... $; use touying-equation when you need the helper for inline equation text (you can also use #pause or #pause;).examples/example.typ for simple/complex/callback animations and equation animations.Snippet from examples/simple.typ:
== Dynamic slide
Did you know that...
#pause
...you can see the current section at the top of the slide?
Snippet from examples/example.typ:
#slide(
repeat: 3,
self => [
#let (uncover, only, alternatives) = utils.methods(self)
At subslide #self.subslide, we can
use #uncover("2-")[`#uncover` function] for reserving space,
use #only("2-")[`#only` function] for not reserving space,
#alternatives[call `#only` multiple times \u{2717}][use `#alternatives` function #sym.checkmark] for choosing one of the alternatives.
],
)
composer in #slide for columns; pass (1fr, 2fr) or a custom grid function.config-page for margin, header, footer, and background; do not use set page directly.config-methods(cover: utils.semi-transparent-cover.with(alpha: 85%)) only when layout changes are acceptable.config-store to stash theme-specific values for headers/footers or navigation elements.config-common(new-section-slide-fn: none) to disable automatic section slides, or provide a custom function to replace them.#show: <theme>.with(...) or via config-methods(init: ...) in a theme.config-info(...) for title/author/date and config-common(datetime-format: ...) to control date formatting.Snippet from examples/default.typ:
#import "@preview/touying:0.6.1": *
#import themes.default: *
#import "@preview/numbly:0.1.0": numbly
#show: default-theme.with(
aspect-ratio: "16-9",
config-common(
slide-level: 3,
zero-margin-header: false,
),
config-colors(primary: blue),
config-methods(alert: utils.alert-with-primary-color),
config-page(
header: text(gray, utils.display-current-short-heading(level: 2)),
),
)
#speaker-note[...].config-common(show-notes-on-second-screen: right) or bottom.enable-pdfpc: true and typst query --field value --one "<pdfpc-file>".docs/start.md and docs/intro.md for basics and import patterns.docs/multi-file.md for multi-file layout and include patterns.docs/layout.md and docs/sections.md for slide-level and heading behavior.docs/code-styles.md for simple vs block style and pagination tricks.docs/global-settings.md for global styles and config-info usage.docs/dynamic/*.md for pause, meanwhile, cover behavior, and equation animation.docs/themes/*.md for theme-specific APIs and defaults.docs/external/*.md for pdfpc and Pympress usage.docs/integration/*.md for CeTZ/Fletcher/Theorion/MiTeX integrations.examples/*.typ as working templates for each theme.docs/
├── build-your-own-theme.md
├── changelog.md
├── code-styles.md
├── dynamic
│ ├── complex.md
│ ├── cover.md
│ ├── equation.md
│ ├── handout.md
│ ├── other.md
│ └── simple.md
├── external
│ ├── pdfpc.md
│ ├── pympress.md
│ └── typst-preview.md
├── global-settings.md
├── integration
│ ├── cetz.md
│ ├── codly.md
│ ├── fletcher.md
│ ├── mitex.md
│ ├── pinit.md
│ └── theorion.md
├── intro.md
├── layout.md
├── multi-file.md
├── progress
│ ├── counters.md
│ └── sections.md
├── sections.md
├── start.md
├── themes
│ ├── aqua.md
│ ├── custom.md
│ ├── dewdrop.md
│ ├── metropolis.md
│ ├── simple.md
│ ├── stargazer.md
│ └── university.md
└── utilities
└── fit-to.md
examples/
├── aqua-zh.typ
├── aqua.typ
├── default.typ
├── dewdrop.typ
├── example.typ
├── metropolis.typ
├── simple.typ
├── stargazer.typ
└── university.typ