From d30225f4e63a3898bc8f3602f05004693235b308 Mon Sep 17 00:00:00 2001 From: Stephen Waits Date: Tue, 10 Dec 2024 20:39:09 +0000 Subject: [PATCH] feat(glossy): 0.1.2 --- preview/glossy/README.md | 50 ++++++++++++++- preview/glossy/examples/readme.pdf | Bin 31003 -> 43430 bytes preview/glossy/examples/readme.typ | 98 ++++++++++++++++++++++++++--- preview/glossy/src/gloss.typ | 6 +- 4 files changed, 143 insertions(+), 11 deletions(-) diff --git a/preview/glossy/README.md b/preview/glossy/README.md index 01fe0b2..0a5d378 100644 --- a/preview/glossy/README.md +++ b/preview/glossy/README.md @@ -43,7 +43,7 @@ different goals: ### Import the package ```typst -#import "@preview/glossy:0.1.1": * +#import "@preview/glossy:0.1.2": * ``` @@ -86,6 +86,32 @@ Note that you could also load glossary entries from a data file using [#json()](https://typst.app/docs/reference/data-loading/json/), or [similar](https://typst.app/docs/reference/data-loading/). +For example, the above glossary could be in this YAML file: + +```yaml +- key: html, + short: HTML, + long: Hypertext Markup Language, + description: A standard language for creating web pages, + group: Web + +- key: css + short: CSS, + long: Cascading Style Sheets, + description: A stylesheet language used for describing the presentation of a document, + group: Web + +- key: tps, + short: TPS, + long: test procedure specification +``` + +And then loaded during initialization as follows: + +```typst +#show: init-glossary.with(yaml("glossary.yaml")) +``` + ### Using Glossary Terms in Your Document Use glossary terms within your text using the `@reference` functionality in @@ -142,7 +168,27 @@ the title and specify a theme if desired: #glossary(title: "Web Development Glossary", theme: my-theme, groups: ("Web")) ``` -### Themes +See more on theming below in "Glossary Themes." + +### Customizing the Output + +#### Term usage in documents + +You can control how terms are displayed when using the `@term` reference syntax +in your document by passing a custom function to `init-glossary` in the +`show-term` parameter. + +For example, if you wanted all terms to be italicized, you could do this: + +```typst +#let emph-term(body) = { emph(body) } + +#show: init-glossary.with(myGlossary, show-term: emph-term) + +// remainder of document follows +``` + +#### Glossary Themes Customize the appearance of the glossary using themes. Each theme defines how sections, groups, and entries are displayed. diff --git a/preview/glossy/examples/readme.pdf b/preview/glossy/examples/readme.pdf index 8b6f6ee997dfda0b181ff6fc59c23cee3edd49e6..8703a0461c851bb12041c52a4337b611c126d121 100644 GIT binary patch delta 26213 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 [#emph(body)]) + +#set heading(numbering: "1.1") + += Hello, `glossy`! + +In modern web development, languages like @html and @css are essential. + +Now make sure I get your @tps:short reports by 2pm! + += Examples with modifiers + +#table( + columns: 2, + table.header([*Input*], [*Output*]), + + [`@tps:short` ], [@tps:short], + [`@tps:long` ], [@tps:long], + [`@tps:both` ], [@tps:both], + [`@tps:long:cap` ], [@tps:long:cap], + [`@tps:long:pl` ], [@tps:long:pl], + [`@tps:short:pl` ], [@tps:short:pl], + [`@tps:both:pl:cap`], [@tps:both:pl:cap], +) + +== Using conflicting modifiers (short, long, both) + +These modifiers are semantically mutually exclusive, by they can be combined +syntactically. When multiple are used, `glossy` tries to make a smart choice on +which one to display. + +#table( + columns: 2, + table.header([*Input*], [*Output*]), + + [`@tps:short:long` ], [@tps:short:long], + [`@tps:short:both` ], [@tps:short:both], + [`@tps:long:both` ], [@tps:long:both], + [`@tps:short:long:both`], [@tps:short:long:both], +) + +#let my-theme = ( + section: (title, body) => { + heading(level: 1, title) + body + }, + group: (name, i, n, body) => { + if name != "" and n > 1 { + heading(level: 2, name) + } + body + }, + entry: (entry, i, n) => { + // i is the entry's index, n is total number of entries + let output = [#entry.short] + if entry.long != none { + output = [#output -- #entry.long] + } + if entry.description != none { + output = [#output: #entry.description] + } + block( + grid( + columns: (auto, 1fr, auto), + output, + repeat([#h(0.25em) . #h(0.25em)]), + entry.pages, + ) + ) + } +) + +#glossary(theme: my-theme) +#glossary(title: "Glossary with just empty group", groups: ("",), theme: my-theme) +#glossary(title: "Glossary with just Web group", groups: ("Web",), theme: my-theme) +// a minimal example, also listed in the README + +#import "@preview/glossy:0.1.2": * #let myGlossary = ( (key: "html", short: "HTML", long: "Hypertext Markup Language", description: "A standard language for creating web pages", group: "Web"), @@ -44,12 +130,10 @@ which one to display. columns: 2, table.header([*Input*], [*Output*]), -[`@tps:short:long` ], [@tps:short:long], -[`@tps:long:short` ], [@tps:long:short], -[`@tps:short:both` ], [@tps:short:both], -[`@tps:long:both` ], [@tps:long:both], -[`@tps:short:long:both` ], [@tps:short:long:both], -[`@tps:long:pl` ], [@tps:long:pl], + [`@tps:short:long` ], [@tps:short:long], + [`@tps:short:both` ], [@tps:short:both], + [`@tps:long:both` ], [@tps:long:both], + [`@tps:short:long:both` ], [@tps:short:long:both], ) #let my-theme = ( diff --git a/preview/glossy/src/gloss.typ b/preview/glossy/src/gloss.typ index 8c70355..f5306b6 100644 --- a/preview/glossy/src/gloss.typ +++ b/preview/glossy/src/gloss.typ @@ -215,7 +215,9 @@ // Main wrapper (usually used in a `#show: init-glossary`) which loads the // entries passed in into our state. Furthermore, hooks into references so that // we can intercept term usage in a doc and label them appropriately. -#let init-glossary(entries, body) = context { +// +// Pass a function in `show-term(term-body)` to control how you display terms. +#let init-glossary(entries, show-term: (term-body) => term-body, body) = context { for entry in __normalize_entries(entries) { __add_entry(entry) } @@ -224,7 +226,7 @@ show ref: r => { let (key, ..modifiers) = str(r.target).split(":") if __has_entry(key) { - __gls(key, modifiers: modifiers) + show-term(__gls(key, modifiers: modifiers)) } else { r }