diff options
author | Norbert Preining <norbert@preining.info> | 2024-02-19 03:01:14 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2024-02-19 03:01:14 +0000 |
commit | e11a34ebeb96a1e568cc937df3b614062ddb0adf (patch) | |
tree | be8835e935b7358f24c2057ec9ef972132a056a9 /macros | |
parent | a3b386e8476527e1b87ec71f7156cd7751f8f325 (diff) |
CTAN sync 202402190301
Diffstat (limited to 'macros')
560 files changed, 23747 insertions, 11050 deletions
diff --git a/macros/generic/markdown/CHANGES.md b/macros/generic/markdown/CHANGES.md index 4e1e87e508..e0f893ab21 100644 --- a/macros/generic/markdown/CHANGES.md +++ b/macros/generic/markdown/CHANGES.md @@ -1,5 +1,323 @@ # Changes +## 3.4.1 (2024-02-16) + +Fixes: + +- Rename option `contentType` to `contentLevel`. (#300, #400, ca98e039) +- Correctly produce paragraph separators inside block-level elements. + (#376, #377, #403, contributed by @lostenderman) + +Deprecation: + +- Replace all instances of `\markdownInfo`, `\markdownWarning`, and + `\markdownError` with l3msg functions and deprecate `\markdownInfo`, + `\markdownWarning`, and `\markdownError`. (#383, #398, e3ca682c, 48002f84) +- Use the `TEXMF_OUTPUT_DIRECTORY` environmental variable to set + `\markdownOptionOutputDir` and deprecate `\markdownOptionOutputDir`. + (#405, #409, [matrix.org][matrix-405]) + + [matrix-405]: https://matrix.to/#/!efVbynJpCMjlOTfose:matrix.org/$8oUA2Bn3ch3q9K6RU-1EgpO9uQOd_3Mky4YwT325Ib0?via=matrix.org&via=im.f3l.de + +Docker: + +- Add support for TeX Live 2024 pretest. + (#404, #406, e51738ba, #410, 7ef64dd9, a7cff81d, contributed by @jspitz) + +## 3.4.0 (2024-01-31) + +Development: + +- Separate default token renderer prototype definitions to a universal theme + `witiko/markdown/defaults`. (#391, #392) +- Add format-independent options `noDefaults` and `plain`, which control the + loading of theme `witiko/markdown/defaults`. (#393, #394) +- Add `contentLevel` Lua option. + (#300, #375, #400, contributed by @lostenderman) + +Fixes: + +- Make Pandoc syntax extensions `tex_single_backslash_math` and + `tex_double_backslash_math` robust against extra spaces at the beginning / + end of inline / display math. (#386, #399, contributed by @lostenderman) + +Libraries: + +- Update `tinyyaml` to v0.4.4. (e2a59ba) + +Contributed Software: + +- Remove private GitHub repository `contributions/istqb_latex`. (cc21fe2) +- Add `contributions/37c3-beamer`. (f5bb26b, contributed by @TeXhackse) + +Default Renderer Prototypes: + +- Do not unnecessarily override math renderer prototypes in LaTeX/ConTeXt. + (#387, #396, contributed by @zousiyu1995) + +Unit Tests: + +- In pull requests, process added and modified testfiles first. + (feafe9b9, 9ff530da, 18deae73) + +Deprecation: + +- Replace all instances of `\markdownInfo`, `\markdownWarning`, and + `\markdownError` with l3msg functions and deprecate `\markdownInfo`, + `\markdownWarning`, and `\markdownError`. (#383, #398) + +Docker: + +- Uninstall the distribution Markdown package. (258a73d4) + +## 3.3.0 (2023-12-30) + +Development: + +- Add support for universal (cross-format) themes. (#276, #373) + +Fixes: + +- Prevent unwanted space tokens before `*ContextEnd` renderers. (#373) +- Make ConTeXt command `\inputmarkdown` properly process extra options. + (#389, #390, contributed by @ibotty) + +Documentation: + +- Improve the discoverability of the `\markdownInput` macro. + (#381, #382, contributed by @solernou) +- Encourage alternatives to the `hybrid` option in the user manual. (#382) + +Speed Improvements: + +- Optimize needless catcode switching in package code. (3eb7231) + +Default Renderer Prototypes: + +- Fix the typesetting of level four headings with attributes for LaTeX document + classes without the `\chapter` command such as `article` and level five + headings for LaTeX document classes with the `\chapter` command such as + `book`. (86eefc0) + +## 3.2.1 (2023-11-23) + +Fixes: + +- Remove the `options.cacheDir` directory if it is empty after conversion. + (5cfcea6) +- Allow tables inside lists. (#368, #371, contributed by @lostenderman, + sponsored by ISTQB) +- Check that shell access is unrestricted before attempting shell escape. + (#365, witiko/lt3luabridge#22, latex3/latex3#1339, #372) + +Documentation: + +- Add a link to a work-in-progress article for TUGboat 45:1 to `README.md`. + (1988a0c2, 3b85533d) +- Fix miscellaneous issues with the technical documentation. (#366, #367) +- In `README.md`, add a link to a GPT chatbot with background knowledge about + the Markdown Package for TeX. (59eb04d) + +Docker: + +- Include developer tools in the development Docker image. (#374) + +## 3.2.0 (2023-10-21) + +Development: + +- Add support for Pandoc `auto_identifiers` and `gfm_auto_identifiers` + syntax extensions. + (#237, #238, lostenderman/markdown#153, #315, #354, + contributed by @lostenderman) +- Add support for bulk redefinition of token renderers and token renderer + prototypes in the `\markdownSetup` command using enumeration. + (#232, #361..#363, [matrix.org][matrix-361]) + + [matrix-361]: https://matrix.to/#/!UeAwznpYwwsinVTetR:matrix.org/$k__vWylYp_L9eyZ0lXCPy26GokZ-Y9g5v8Xs9n47twQ?via=matrix.org&via=im.f3l.de + +Fixes: + +- Make the `import` LaTeX option correctly handle recursive imports. + (68c7a2f5, danopolan/istqb_latex#87) +- Support attributes on multi-line setext headings. + (#315, #355, #356, contributed by @lostenderman) +- Correctly process the combination of Lua options `fancyLists` and + `startNumber`. (59fb97e8) +- Properly parse emphasis at line endings in headings. + (#358, #360, contributed by @lostenderman) +- Fix fancy lists that use roman numerals as markers. + (danopolan/istqb_latex#87, #359, #364, + contributed by @lostenderman, sponsored by ISTQB) + +Documentation: + +- Add a link to a preprint from TUGboat 44:3 to `README.md`. + (cf6b3d7b, dc57af7) +- Measure the speed impact of test file batching. + (#357, b526fa65, 8c94ffc9, [matrix.org][matrix-357]) + + [matrix-357]: https://matrix.to/#/!efVbynJpCMjlOTfose:matrix.org/$WR3quuO1fyOl6w_KX6YFA4BACBcL-cWUWBpVfpPWDkI?via=matrix.org&via=im.f3l.de + +Unit Tests: + +- Restore CommonMark testfiles with trailing tabs and spaces. + (#348, #353, lostenderman/markdown#2, contributed by @lostenderman) +- Fail faster during batch bisection. (5177ef6) +- Speed up tests by running ConTeXt MkIV only once. (61f36e6d) +- Use `BEGIN document` and `END document` instead of `documentBegin` + and `documentEnd` for consistence with other renderers. (0be6be4) + +Continuous Integration: + +- Do not rebuild existing Docker images when we rerun the + continuous integration for the same commit multiple times. + (ae390ec, 70c5f2e5) + +Default Renderer Prototypes: + +- In LaTeX, correctly capitalize fancy list labels. (0a10053f) +- In LaTeX, properly indent fancy ordered lists when the Lua option + `startNumber` is enabled. (6a7649e8) + +## 3.1.0 (2023-09-27) + +Development: + +- Add `\markdownSetup` command to all TeX formats. + (#275, #349, [matrix.org][matrix-349]) +- Add an optional argument to the `markdown` LaTeX environment. + (#299, #351) +- Add support for Pandoc `mark` syntax extension. + (jgm/lunamark#67, #303, #352, [matrix.org][matrix-352], + contributed by @Omikhleia) + + [matrix-349]: https://matrix.to/#/!efVbynJpCMjlOTfose:matrix.org/$8JXGbDz0viyRyv6ySWQ3344BOhwd4dj5WYeawzEg_tU?via=matrix.org&via=im.f3l.de + [matrix-352]: https://matrix.to/#/!lWGKeMcpgwGHpfLYkf:matrix.org/$yVeWB0Yzfz6mgORv5VeG9IEl7a4xLogkAUmdNMSCxEg?via=matrix.org&via=im.f3l.de + +Deprecation: + +- Deprecate the `markdown*` LaTeX environment. + (#299, #351, [matrix.org][matrix-351]) + + [matrix-351]: https://matrix.to/#/!lWGKeMcpgwGHpfLYkf:matrix.org/$yVeWB0Yzfz6mgORv5VeG9IEl7a4xLogkAUmdNMSCxEg?via=matrix.org&via=im.f3l.de + +Unit Tests: + +- Add support for YAML metadata in testfiles. + (#345, #347, [matrix.org][matrix-347]) + + [matrix-347]: https://matrix.to/#/!efVbynJpCMjlOTfose:matrix.org/$8JXGbDz0viyRyv6ySWQ3344BOhwd4dj5WYeawzEg_tU?via=matrix.org&via=im.f3l.de + +Documentation: + +- Add a link to a preprint from CSTUG Bulletin to `README.md`. + (2c354f49) + +## 3.0.1 (2023-09-10) + +Fixes: + +- Correctly parse paragraphs with trailing spaces. + (danopolan/istqb_latex#77, #345, #347) + +## 3.0.0 (2023-08-25) + +Development: + +- Add support for TeX-like rich paragraphs. + (#30, #306, [matrix.org][matrix-306]) + + [matrix-306]: https://matrix.to/#/!lWGKeMcpgwGHpfLYkf:matrix.org/$g9ZTEyXP-V_5elJjcqRd-D9QyIfJuTw-TWlZIFoh72c?via=matrix.org&via=im.f3l.de + +Fixes: + +- Reset current heading level at the end of a markdown document. + (1261e6f) +- Fix out-of-memory issues with CommonMark implementation. + (#308, #318, 28650b8) +- Fix `rawAttribute` option being enabled in Lua by default. + (92c9ac2) +- Make our implementation of attributes compatible with jgm/pandoc. + (jgm/lunamark#68, #304, #343, contributed by @Omikhleia) + +Documentation: + +- Fix the link to @xvrabcov's talk at TUG 2022 in `README.md`. + (166c4506) +- Add a link to @writersglen's talk at TUG 2022 to `README.md`. + (f3efcb9) +- Document setting up catcodes in Lua. (#329, #342) + +Unit Tests: + +- Batch unit tests to improve speed. + (#245, #316, 8bfd0b3, #317, #319..#325, #327, #328, e3b31696, + #331, #332, #334, 0a230fa, 90cc428, 3be0013, dbe1808, a0108814) +- Use self-hosted GitHub runners for tests to improve speed. + (#326, #330, #331, a9948a86, 68b6216b, contributed by @TeXhackse, + [matrix.org][matrix-331]) + + [matrix-331]: https://matrix.to/#/!efVbynJpCMjlOTfose:matrix.org/$6qKDXlLxsaJnOl0muFX3K7Htj41B-7hL2PmSFTIm6NE?via=matrix.org&via=im.f3l.de + +Continuous Integration: + +- In draft pull requests, do not build documentation or examples + and do not run pkgcheck. (#337, #338, 189bb153) +- Push temporary Docker images to GitHub Packages. + (#340, #341, d15ae88a, 7e42e846) + +## 3.0.0-alpha.2 (2023-08-01) + +Development: + +- Add support for attributes on tables. (#310, #313, 8786408) + +Default Renderer Prototypes: + +- Correctly handle multiple heading identifiers. (3ae1b0d1) +- Add alt text to figures. (#312) + +Documentation: + +- Add a link to TUG 2023 slides and video to the README. + (ce6047b8, adb69e2f) + +Unit Tests: + +- Rewrite the unit testing framework from Bash to Python + and implement summarization. (#245, #314) + +## 3.0.0-alpha (2023-06-27) + +Development: + +- Comply with CommonMark 0.30 and increment `grammar_version` to `3`. + (contributed by @lostenderman, #29, #210, #212, #226) +- Add a demo of using the Markdown package in OpTeX. + (contributed by @olsak, #215, 109c1b5, #292) +- Add `singletonCache` Lua option. (#226) + +Documentation: + +- Add @lostenderman's thesis to `README.md`. (#226, 8a4536e) + +Default Renderer Prototypes: + +- Do not force line breaks after high-level headings in LaTeX. + Allow the text to follow the heading on the same line. (df8562c) + +Deprecation: + +- Remove deprecated parts of the package. (#309) +- Remove support for LuaMetaTeX. (#226) + +Fixes: + +- Allow references in fenced divs. (#307, jgm/lunamark#69) +- Prevent `eagerCache=false` from causing undefined behavior and make + it the new default. (#129) + ## 2.23.0 (2023-04-27) Development: @@ -55,9 +373,12 @@ Development: parens and brackets. (contributed by @lostenderman, #61, #235, #236, #270) - Add support for attributes on links, images, fenced code, - and inline code spans. (jgm#36, jgm#43, #50, #123, #256, #280) + and inline code spans. (jgm/lunamark#36, jgm/lunamark#43, + #50, #123, #256, #280, [matrix.org][matrix-256]) - Add `import` LaTeX option. (#107, #286) + [matrix-256]: https://matrix.to/#/!pznomuvubVyxElflTe:matrix.org/$mDATROtxOLOGBvH5Nt3o86iysRe1LCfZB-lw4PqjKJk?via=matrix.org&via=im.f3l.de + Documentation: - Unify how Pandoc syntax extensions are named and cited in @@ -107,9 +428,10 @@ Deprecation: Development: - Add support for line blocks. - (contributed by @Omikhleia and @lostenderman, jgm#41, #209, #248) + (contributed by @Omikhleia and @lostenderman, jgm/lunamark#41, + #209, #248) - Add support for attributes on fenced code blocks. - (contributed by @Omikhleia, jgm#36, #123, #211) + (contributed by @Omikhleia, jgm/lunamark#36, #123, #211) Documentation: @@ -126,7 +448,8 @@ Fixes: - Fix input normalization and move it from Lua CLI and plain TeX layers directly to the `convert()` Lua method. (#246, #253) - Allow fenced div closing tag to break out of a blockquote. - (contributed by @Omikhleia, jgm#60, jgm#61, #230, #259) + (contributed by @Omikhleia, jgm/lunamark#60, jgm/lunamark#61, + #230, #259) Default Renderer Prototypes: @@ -194,8 +517,7 @@ Development: - Rename the `footnotes` and `inlineFootnotes` options to `notes` and `inlineNotes`. - Rename the `HorizontalRule` rule to `ThematicBreak` and increment - `grammar_version` to `2`. This change is not backwards-compatible with the - `grammar_version` of `1`. + `grammar_version` to `2`. - Add `\markdownEscape` macro that inputs a TeX document in the middle of a markdown document fragment. (1478f7b) - Add support for raw attributes. (#173, #202) diff --git a/macros/generic/markdown/README.md b/macros/generic/markdown/README.md index 217cd6710e..5a87521f0f 100644 --- a/macros/generic/markdown/README.md +++ b/macros/generic/markdown/README.md @@ -4,24 +4,26 @@ Markdown [![license](https://img.shields.io/github/license/witiko/markdown)](LICENSE) [![ci](https://github.com/witiko/markdown/actions/workflows/main.yml/badge.svg)][ci] [![release](https://img.shields.io/github/release/witiko/markdown)][release] -  -[![matrix](https://img.shields.io/matrix/witiko-markdown:matrix.org?label=matrix%20chat)][matrix] -[![discord](https://img.shields.io/discord/1011667276908474440?label=discord%20chat&color=blueviolet)][discord] - - [release]: https://github.com/Witiko/markdown/releases/latest "Releases · Witiko/markdown" - [ci]: https://github.com/Witiko/markdown/actions "GitHub Actions" - [matrix]: https://matrix.to/#/#witiko-markdown:matrix.org "The Matrix Chat Space for the Markdown package" - [discord]: https://discord.gg/8xJsPghzSH "The Discord Chat Space for the Markdown package" - -The Markdown package converts [markdown][] markup to TeX commands. The +[![docker-witiko/markdown](https://img.shields.io/docker/v/witiko/markdown/latest?label=docker)][docker-witiko/markdown] +[![matrix](https://img.shields.io/matrix/witiko-markdown:matrix.org?label=matrix)][matrix] +[![discord](https://img.shields.io/discord/1011667276908474440?label=discord&color=blueviolet)][discord] +[![chatgpt](https://img.shields.io/badge/gpt-9cf)][chatgpt] + + [release]: https://github.com/Witiko/markdown/releases/latest "Releases · Witiko/markdown" + [ci]: https://github.com/Witiko/markdown/actions "GitHub Actions" + [matrix]: https://matrix.to/#/#witiko-markdown:matrix.org "The Matrix Chat Space for the Markdown package" + [discord]: https://discord.gg/8xJsPghzSH "The Discord Chat Space for the Markdown package" + [chatgpt]: https://chat.openai.com/g/g-I3K0DweJe-markdown-package-for-tex "ChatGPT - Markdown package for TeX" + +The Markdown package converts [CommonMark][] markup to TeX commands. The functionality is provided both as a Lua module, and as plain TeX, LaTeX, and ConTeXt macro packages that can be used to directly typeset TeX documents -containing markdown markup. Unlike other convertors, the Markdown package -does not require any external programs, and makes it easy to redefine how each -and every markdown element is rendered. Creative abuse of the markdown syntax -is encouraged. 😉 +containing markdown markup. Unlike other convertors, the Markdown package does +not require any external programs, and makes it easy to redefine how each and +every markdown element is rendered. Creative abuse of the markdown syntax is +encouraged. 😉 - [markdown]: https://daringfireball.net/projects/markdown/basics "Daring Fireball: Markdown Basics" + [commonmark]: https://commonmark.org/ "CommonMark: A strongly defined, highly compatible specification of Markdown" Your first Markdown document ---------------------------- @@ -56,12 +58,12 @@ Next, run the [LaTeXMK][] tool from [our official Docker image][docker-witiko/markdown] on `document.tex`: docker run --rm -v "$PWD"/workdir:/workdir -w /workdir witiko/markdown \ - latexmk -lualatex -silent document.tex + latexmk -pdf -shell-escape -silent document.tex Alternatively, you can install [TeX Live][tex-live] (can take up to several hours) and use its [LaTeXMK][] tool: - latexmk -cd -lualatex -silent workdir/document.tex + latexmk -cd -pdf -shell-escape -silent workdir/document.tex A PDF document named `workdir/document.pdf` should be produced and contain the following output: @@ -95,6 +97,8 @@ jobs: - uses: actions/checkout@v2 - run: latexmk -lualatex document.tex - uses: marvinpinto/action-automatic-releases@latest + permissions: + contents: write with: title: The latest typeset book automatic_release_tag: latest @@ -114,7 +118,7 @@ In fact, this is how we automatically produce Peek under the hood ------------------- -Remember how we said that the Markdown package converts [markdown][] markup to +Remember how we said that the Markdown package converts markdown markup to TeX commands? Let's see what that means and what we can do with this knowledge. Using a text editor, create an empty text document named `document.md` with @@ -180,26 +184,32 @@ For further information, consult one of the following: - [Writing Beamer Slides with Markdown][overleaf-4], - [Writing Posters with Markdown][overleaf-5], and - [Using Markdown in LaTeX documents][overleaf-6]. -4. My journal articles published by [TUGboat][]: +4. Journal articles published by [TUGboat][]: - [Using Markdown inside TeX documents][tb119], - [Markdown 2.7.0: Towards lightweight markup in TeX][tb124], - [Making Markdown into a Microwave Meal][tb129], - [Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX][tb131], - [Markdown 2.15.0: What's New?][tb133], - - [Markdown 2.17.1: What's New, What's Next?][tb135], and - - [Attributes in Markdown][tb136]. -5. Journal articles of me and my students published by [CSTUG Bulletin][csbul] (in Czech and Slovak): + - [Markdown 2.17.1: What's New, What's Next?][tb135], + - [Attributes in Markdown][tb136], + - Markdown 3 at TUG 2023: Reflections from the Q&A session ([preprint][tb138]), and + - Fast Regression Testing of TeX Packages: The Unreasonable Effectiveness of Batching ([work in progress][tb139]). +5. Journal articles published by [CSTUG Bulletin][csbul] (in Czech and Slovak): - [Rendering Markdown inside TeX Documents][10.5300/2016-1-4/78], - [Markdown 2.8.1: Boldly Unto the Throne of Lightweight Markup in TeX][10.5300/2020-1-2/48], - [Markdown 2.10.0: LaTeX Themes & Snippets][10.5300/2021-1-4/76], - - [Direct Typesetting of Various Document Formats in TeX Using the Pandoc Utility][10.5300/2021-1-4/83], and - - [High-Level Languages for TeX][10.5300/2022-1-4/35]. -6. Talks by me and my students: - - [Five Years of Markdown in LaTeX: What, Why, How, and Whereto][pv212-fall2020] (in Czech), and - - [Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX][tb131-video] ([slides][tb131-slides]). - - [A Gentle Introduction to Markdown for Writers][tb134-video] ([slides][tb134-slides], [example][tb134-example]). -7. Theses by my students: + - [Direct Typesetting of Various Document Formats in TeX Using the Pandoc Utility][10.5300/2021-1-4/83], + - [High-Level Languages for TeX][10.5300/2022-1-4/35], and + - Markdown 3: What's New, What's Next? ([preprint][10.5300/2023-?-?/??]). +6. Talks: + - [Five Years of Markdown in LaTeX: What, Why, How, and Whereto][pv212-fall2020] (in Czech), + - [Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX][tb131-video] ([slides][tb131-slides]), + - [A Self-Publisher's Take on Markdown and TeX][tb134-01-video] ([slides][tb134-01-slides]), and + - [A Gentle Introduction to Markdown for Writers][tb134-02-video] ([slides][tb134-02-slides], [example][tb134-02-example]), and + - [Markdown 3: What's New, What's Next?][tb137-video] ([slides][tb137-slides]). +7. Theses: - [Generic TeX Writer for the Pandoc Document Converter][thesis-umhg5] + - [An implementation of the CommonMark standard into the Markdown package for TeX][thesis-r7z7l] [overleaf-1]: https://www.overleaf.com/learn/latex/Articles/How_to_write_in_Markdown_on_Overleaf "How to write in Markdown on Overleaf" [overleaf-2]: https://www.overleaf.com/learn/latex/Articles/Markdown_into_LaTeX_with_Style "Markdown into LaTeX with Style" @@ -208,19 +218,25 @@ For further information, consult one of the following: [overleaf-5]: https://www.overleaf.com/latex/examples/writing-posters-with-markdown/jtbgmmgqrqmh "Writing Posters with Markdown" [overleaf-6]: https://www.overleaf.com/latex/examples/using-markdown-in-latex-documents/whdrnpcpnwrm "Using Markdown in LaTeX documents" - [tb119]: https://www.tug.org/TUGboat/tb38-2/tb119novotny.pdf "Using Markdown inside TeX documents" - [tb124]: https://www.tug.org/TUGboat/tb40-1/tb124novotny-markdown.pdf "Markdown 2.7.0: Towards lightweight markup in TeX" - [tb129]: https://www.tug.org/TUGboat/tb41-3/tb129novotny-frozen.pdf "Making Markdown into a Microwave Meal" - [tb131]: https://www.tug.org/TUGboat/tb42-2/tb131novotny-markdown.pdf "Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX" - [tb133]: https://www.tug.org/TUGboat/tb43-1/tb133novotny-markdown.pdf "Markdown 2.15.0: What's New?" - [tb135]: https://www.overleaf.com/read/pgwrhhskmgfm "Markdown 2.17.1: What's New, What's Next?" - [tb136]: https://www.overleaf.com/read/dshtsnnmtshs "Attributes in Markdown" - - [tb131-slides]: https://tug.org/tug2021/assets/pdf/tug2021-novotny-slides.pdf "Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX" - [tb131-video]: https://youtu.be/THmPkAncMnc "Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX" - [tb134-slides]: https://tug.org/tug2022/assets/pdf/Tereza_Vrabcová-TUG2022-slides.pdf "A Gentle Introduction to Markdown for Writers" - [tb134-example]: https://tug.org/tug2022/assets/pdf/Tereza_Vrabcová-TUG2022-example.pdf "A Gentle Introduction to Markdown for Writers" - [tb134-video]: https://youtu.be/cqbKgjAlNjo?t=2h10m35s "A Gentle Introduction to Markdown for Writers" + [tb119]: https://www.tug.org/TUGboat/tb38-2/tb119novotny.pdf "Using Markdown inside TeX documents" + [tb124]: https://www.tug.org/TUGboat/tb40-1/tb124novotny-markdown.pdf "Markdown 2.7.0: Towards lightweight markup in TeX" + [tb129]: https://www.tug.org/TUGboat/tb41-3/tb129novotny-frozen.pdf "Making Markdown into a Microwave Meal" + [tb131]: https://www.tug.org/TUGboat/tb42-2/tb131novotny-markdown.pdf "Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX" + [tb133]: https://www.tug.org/TUGboat/tb43-1/tb133novotny-markdown.pdf "Markdown 2.15.0: What's New?" + [tb135]: https://www.tug.org/TUGboat/tb43-3/tb135novotny-markdown.pdf "Markdown 2.17.1: What's New, What's Next?" + [tb136]: https://www.tug.org/TUGboat/tb44-1/tb136novotny-markdown-attr.pdf "Attributes in Markdown" + [tb138]: https://www.overleaf.com/read/mjghwhrbgmfj "Markdown 3 at TUG 2023: Reflections from the Q&A session" + [tb139]: https://github.com/witiko/fast-regression-testing/releases/download/latest/main.pdf "Fast Regression Testing of TeX Packages: The Unreasonable Effectiveness of Batching" + + [tb131-slides]: https://tug.org/tug2021/assets/pdf/tug2021-novotny-slides.pdf "Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX" + [tb131-video]: https://youtu.be/i2GJMnLCZls "Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX" + [tb134-01-slides]: https://tug.org/tug2022/assets/served/Lloyd_Prentice-TUG2022-prentice-selfpub-slides.pdf "A Self-Publisher's Take on Markdown and TeX" + [tb134-01-video]: https://youtu.be/OhwzT3TcLj8 "A Self-Publisher's Take on Markdown and TeX" + [tb134-02-slides]: https://tug.org/tug2022/assets/pdf/Tereza_Vrabcová-TUG2022-slides.pdf "A Gentle Introduction to Markdown for Writers" + [tb134-02-example]: https://tug.org/tug2022/assets/pdf/Tereza_Vrabcová-TUG2022-example.pdf "A Gentle Introduction to Markdown for Writers" + [tb134-02-video]: https://youtu.be/FhN_x9rsR4M "A Gentle Introduction to Markdown for Writers" + [tb137-slides]: https://tug.org/tug2023/files/sa-03-novotny-markdown3/novotny-markdown3-slides.pdf "Markdown 3: What's New, What's Next?" + [tb137-video]: https://youtu.be/U8XjTOhJkg0 "Markdown 3: What's New, What's Next?" [10.5300/2016-1-4/78]: https://www.doi.org/10.5300/2016-1-4/78 "Rendering Markdown inside TeX Documents" [10.5300/2020-1-2/48]: https://www.doi.org/10.5300/2020-1-2/48 "Markdown 2.8.1: Boldly Unto the Throne of Lightweight Markup in TeX" @@ -228,7 +244,9 @@ For further information, consult one of the following: [10.5300/2021-1-4/83]: https://www.doi.org/10.5300/2021-1-4/83 "Direct Typesetting of Various Document Formats in TeX Using the Pandoc Utility" [10.5300/2022-1-4/35]: https://www.doi.org/10.5300/2022-1-4/35 "High-Level Languages for TeX" - [pv212-fall2020]: https://is.muni.cz/elearning/warp?qurl=%2Fel%2Ffi%2Fpodzim2020%2FPV212%2Findex.qwarp;prejit=5595952 + [10.5300/2023-?-?/??]: https://github.com/witiko/markdown-3-whats-new-whats-next/releases/download/latest/main.pdf "Markdown 3: What's New, What's Next?" + + [pv212-fall2020]: https://is.muni.cz/elearning/io/?qurl=%2Fel%2Ffi%2Fpodzim2020%2FPV212%2Findex.qwarp;prejit=5595952 [install]: https://mirrors.ctan.org/macros/generic/markdown/markdown.html#installation "Markdown Package User Manual" [liantze]: http://liantze.penguinattack.org/ "Rants from the Lab" @@ -243,6 +261,7 @@ For further information, consult one of the following: [techdoc-tex-live]: https://mirrors.ctan.org/macros/generic/markdown/markdown.pdf "A Markdown Interpreter for TeX" [thesis-umhg5]: https://is.muni.cz/th/umhg5/?lang=en "Generic TeX Writer for the Pandoc Document Converter" + [thesis-r7z7l]: https://is.muni.cz/th/r7z7l/?lang=en "An implementation of the CommonMark standard into the Markdown package for TeX" Acknowledgements ---------------- @@ -252,12 +271,17 @@ Acknowledgements | [<img width="150" src="https://www.fi.muni.cz/images/fi-logo.png">][fimu] | I gratefully acknowledge the funding from the [Faculty of Informatics][fimu] at the [Masaryk University][mu] in Brno, Czech Republic, for the development of the Markdown package in projects [MUNI/33/12/2015][], [MUNI/33/1784/2020][], [MUNI/33/0776/2021][], [MUNI/33/1654/2022][], and [MUNI/33/1658/2022][]. | | [<img width="150" src="https://cdn.overleaf.com/img/ol-brand/overleaf_og_logo.png">][overleaf] | Extensive user documentation for the Markdown package was kindly written by [Lian Tze Lim][liantze] and published by [Overleaf][]. | | [<img width="150" src="https://pbs.twimg.com/profile_images/1004769879319334912/6Bh1UthD.jpg">][omedym] | Support for content slicing (Lua options [`shiftHeadings`][option-shift-headings] and [`slice`][option-slice]) and pipe tables (Lua options [`pipeTables`][option-pipe-tables] and [`tableCaptions`][option-table-captions]) was graciously sponsored by [David Vins][dvins] and [Omedym][]. | +| [<img width="150" src="https://www.istqb.org/static/istqb-logo-1b043e800a580724ad223567f9ea57c0.png">][istqb] | Fixes for issues [#359][issue-359] and [#368][issue-368] were graciously sponsored by the [International Software Testing Qualifications Board (ISTQB)][istqb]. | [dvins]: https://github.com/dvins "David Vins" [fimu]: https://www.fi.muni.cz/index.html.en "Faculty of Informatics, Masaryk University" + [ISTQB]: https://www.istqb.org/ "International Software Testing Qualifications Board" [mu]: https://www.muni.cz/en "Masaryk University" [Omedym]: https://www.omedym.com/ "Omedym" + [issue-359]: https://github.com/witiko/markdown/issues/359 "First item of a fancy list forms a separate list" + [issue-368]: https://github.com/witiko/markdown/issues/368 "Tables nested in list items have empty lines" + [option-pipe-tables]: https://mirrors.ctan.org/macros/generic/markdown/markdown.html#pipe-tables "Markdown Package User Manual" [option-shift-headings]: https://mirrors.ctan.org/macros/generic/markdown/markdown.html#option-shiftheadings "Markdown Package User Manual" [option-slice]: https://mirrors.ctan.org/macros/generic/markdown/markdown.html#slice "Markdown Package User Manual" diff --git a/macros/generic/markdown/VERSION b/macros/generic/markdown/VERSION index 51e0f67329..941a04710b 100644 --- a/macros/generic/markdown/VERSION +++ b/macros/generic/markdown/VERSION @@ -1 +1 @@ -2.23.0-0-g0b22f91 (2023-04-27) +3.4.1-0-g457226ae (2024-02-16) diff --git a/macros/generic/markdown/docstrip.cfg b/macros/generic/markdown/docstrip.cfg index 853817bb0a..9dc5f65230 100644 --- a/macros/generic/markdown/docstrip.cfg +++ b/macros/generic/markdown/docstrip.cfg @@ -22,7 +22,7 @@ -- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE^^J% -- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.^^J% --^^J% --- Copyright (C) 2016-2023 Vít Novotný^^J% +-- Copyright (C) 2016-2024 Vít Starý Novotný^^J% --^^J% -- This work may be distributed and/or modified under the^^J% -- conditions of the LaTeX Project Public License, either version 1.3^^J% @@ -35,7 +35,7 @@ -- version 2005/12/01 or later.^^J% --^^J% -- This work has the LPPL maintenance status `maintained'.^^J% --- The Current Maintainer of this work is Vít Novotný.^^J% +-- The Current Maintainer of this work is Vít Starý Novotný.^^J% --^^J% -- Send bug reports, requests for additions and questions^^J% -- either to the GitHub issue tracker at^^J% @@ -62,7 +62,7 @@ \let\luapostamble\empty \declarepreamble\texpreamble -Copyright (C) 2016-2023 Vít Novotný +Copyright (C) 2016-2024 Vít Starý Novotný This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c @@ -72,7 +72,7 @@ The latest version of this license is in http://www.latex-project.org/lppl.txt This work has the LPPL maintenance status `maintained'. -The Current Maintainer of this work is Vít Novotný. +The Current Maintainer of this work is Vít Starý Novotný. Send bug reports, requests for additions and questions either to the GitHub issue tracker at diff --git a/macros/generic/markdown/examples/context-mkiv.tex b/macros/generic/markdown/examples/context-mkiv.tex index 4c05059f3a..8b000e43ed 100644 --- a/macros/generic/markdown/examples/context-mkiv.tex +++ b/macros/generic/markdown/examples/context-mkiv.tex @@ -58,8 +58,10 @@ kpse.set_program_name("luatex") \starttext % Typeset the document `example.md` by letting the Markdown package handle -% the conversion internally. -\inputmarkdown{./example.md} +% the conversion internally. Optionally, we can specify additional options +% between the square brackets similarly to the command `\setupmarkdown`. +% Unlike `\setupmarkdown`, the options will only apply for this document. +\inputmarkdown[smart_ellipses = yes]{./example.md} % Typeset the document `example.tex` that we prepared separately using the % Lua command-line interface and that contains a plain TeX representation diff --git a/macros/generic/markdown/examples/example.md b/macros/generic/markdown/examples/example.md index 8819ef5b67..5e5457088e 100644 --- a/macros/generic/markdown/examples/example.md +++ b/macros/generic/markdown/examples/example.md @@ -41,9 +41,7 @@ This is a table: This is a bullet list: -* The first item of a bullet list - - that spans several paragraphs, +* The first item of a bullet list, * the second item of a bullet list, @@ -57,9 +55,7 @@ This is a compact bullet list: This is an ordered list: -5. The first item of an ordered list - - that spans several paragraphs, +5. The first item of an ordered list, 6. the second item of an ordered list, @@ -67,9 +63,7 @@ This is an ordered list: This is a fancy ordered list: -e) The first item of an ordered list - - that spans several paragraphs, +e) The first item of an ordered list, f) the second item of an ordered list, @@ -77,9 +71,7 @@ g) the third item of an ordered list. This is an ordered list using hash enumerators: -#. The first item of an ordered list - - that spans several paragraphs, +#. The first item of an ordered list, #. the second item of an ordered list, diff --git a/macros/generic/markdown/examples/latex-luatex.tex b/macros/generic/markdown/examples/latex-luatex.tex index 18b16bf776..9b2e623408 100644 --- a/macros/generic/markdown/examples/latex-luatex.tex +++ b/macros/generic/markdown/examples/latex-luatex.tex @@ -1,5 +1,15 @@ \documentclass{book} \usepackage{polyglossia} +% work around a bug in polyglossia +\makeatletter +\ExplSyntaxOn +\pretocmd\xpg@set@alias@values{% + \prop_if_exist:cF { xpg@alias@keyvals@#1@#4 } + { \prop_new:c {xpg@alias@keyvals@#1@#4} } +}{}{} +\ExplSyntaxOff +\makeatother +% end of workaround \setmainlanguage{english} \usepackage{fontspec} \usepackage{booktabs} @@ -28,13 +38,13 @@ texMathSingleBackslash, ]{markdown} % Set the document metadata using a YAML metadata block. -\begin{markdown*}{hybrid} +\begin{markdown}[hybrid] --- title: An Example *Markdown* Document -author: Vít Novotný +author: Vít Starý Novotný date: \today --- -\end{markdown*} +\end{markdown} \begin{document} % Typeset the document `example.md` by letting the Markdown package handle % the conversion internally. diff --git a/macros/generic/markdown/examples/latex-pdftex.tex b/macros/generic/markdown/examples/latex-pdftex.tex index db6cbea8c8..7d188d75f2 100644 --- a/macros/generic/markdown/examples/latex-pdftex.tex +++ b/macros/generic/markdown/examples/latex-pdftex.tex @@ -29,13 +29,13 @@ texMathSingleBackslash, ]{markdown} % Set the document metadata using a YAML metadata block. -\begin{markdown*}{hybrid} +\begin{markdown}[hybrid] --- title: An Example *Markdown* Document -author: Vít Novotný +author: Vít Starý Novotný date: \today --- -\end{markdown*} +\end{markdown} \begin{document} % Typeset the document `example.md` by letting the Markdown package handle % the conversion internally. @@ -55,7 +55,7 @@ date: \today Here are some non-ASCII characters: *ěščřžýáíé*. \end{markdown} -\begin{markdown*}{html, hybrid} +\begin{markdown}[hybrid] Here is some <b>HTML code</b> mixed *with Markdown*. In \TeX, the HTML code will be silently ignored, whereas in \TeX 4ht, the HTML code will be passed through to the output: @@ -72,5 +72,5 @@ through to the output: <td>10</td> </tr> </table> -\end{markdown*} +\end{markdown} \end{document} diff --git a/macros/generic/markdown/examples/optex.tex b/macros/generic/markdown/examples/optex.tex new file mode 100644 index 0000000000..d39369f6b3 --- /dev/null +++ b/macros/generic/markdown/examples/optex.tex @@ -0,0 +1,379 @@ +\fontfam[lm] +\hyperlinks\Blue\Blue + +% Set options of the Markdown module +\_def \markdownOptions { + cacheDir="_markdown_example", + definitionLists=true, + fencedCode=true, + hashEnumerators=true, + smartEllipses=true, + strikeThrough=true, +} + +% Set renderers of the Markdown module +%% Attribute Renderers +%%% TODO + +%% Block Quote Renderers +\_def \markdownRendererBlockQuoteBegin {\_begblock} +\_def \markdownRendererBlockQuoteEnd {\_endblock} + +%% Bracketed Spans Attribute Context Renderers +%%% TODO + +%% Bullet List Renderers +\_def \markdownRendererUlBegin {\_begitems \_itemskipamount=\_olistskipamount} +\_def \markdownRendererUlBeginTight {\_begitems} +\_def \markdownRendererUlItem {\_startitem} +\_def \markdownRendererUlItemEnd {\_par} +\_def \markdownRendererUlEnd {\_enditems} +\_def \markdownRendererUlEndTight {\_enditems} + +%% Citations Renderers +%%% TODO + +%% Code Block Renderers +\_def \markdownRendererInputVerbatim #1{\_verbinput (-) {#1} } +\_def \markdownRendererInputFencedCode #1#2{\_verbinput \_hisyntax{#2} (-) {#1} } + +%% Code Span Renderer +\_def \markdownRendererCodeSpan #1{{\_ttfont #1}} + +%% Code Span Attribute Context Renderers +%%% TODO + +%% Content Block Renderers +%%% TODO + +%% Definition List Renderers +\_sdef{_item:d}{\_aftergroup\dword} +\_def \dword #1#2{{\bf#2 }\ignorespaces} +\_def \markdownRendererDlBegin {\_begitems \_style d \_itemskipamount=\_olistskipamount} +\_def \markdownRendererDlBeginTight {\_begitems \_style d} +\_def \markdownRendererDlItem {% + \_begingroup + \_def \markdownRendererInterblockSeparator {% + \_par + \_advance\_leftskip by\_iindent + \_def \markdownRendererInterblockSeparator {\_par}% + }% + \_startitem +} +\_def \markdownRendererDlItemEnd {% + \_par + \_endgroup +} +\_def \markdownRendererDlDefinitionBegin {} +\_def \markdownRendererDlDefinitionEnd #1{% + \_ifx #1\markdownRendererDlDefinitionBegin + \_firstnoindent + \markdownRendererInterblockSeparator + \_vskip\_itemskipamount + \_fi + #1% +} +\_def \markdownRendererDlEnd {\_enditems} +\_def \markdownRendererDlEndTight {\_enditems} + +%% Ellipsis Renderer +\_def \markdownRendererEllipsis {$\_ldots$} + +%% Emphasis Renderers +\_def \markdownRendererEmphasis #1{{\_em #1}} +\_def \markdownRendererStrongEmphasis #1{{\_bf #1}} + +%% Fenced Code Attribute Context Renderers +%%% TODO + +%% Fenced Div Attribute Context Renderers +%%% TODO + +%% Header Attribute Context Renderers +%%% TODO + +%% Heading Renderers +\_def \markdownRendererHeadingOne #1{\_printtit{#1}} +\_def \markdownRendererHeadingTwo #1{\_inchap{#1}} +\_def \markdownRendererHeadingThree #1{\_insec{#1}} +\_def \markdownRendererHeadingFour #1{\_insecc{#1}} +\_def \markdownRendererHeadingFive #1{{\_bf #1}\_firstnoindent} +\_def \markdownRendererHeadingSix #1{#1\_firstnoindent} + +%% HTML Comment Renderers +%%% TODO + +%% HTML Tag and Element Renderers +%%% TODO + +%% Image Renderer +\_def \markdownRendererImage #1#2#3#4{% + \_topinsert + \_centerline{\_inspic{#3}}% + \_cskip + \_caption/f #4% + \_par + \_endinsert +} + +%% Image Attribute Context Renderers +%%% TODO + +%% Interblock Separator Renderer +\_def \markdownRendererInterblockSeparator {\_par} +\_def \markdownRendererParagraphSeparator {\markdownRendererInterblockSeparator} + +%% Line Block Renderers +%%% TODO + +%% Line Break Renderers +\_def \markdownRendererSoftLineBreak { } +\_def \markdownRendererHardLineBreak {\_nl} + +%% Link Renderer +\_def \markdownRendererLink #1#2#3#4{\_ea\_ulink\_ea[\_expanded{#3}]{#1}} + +%% Link Attribute Context Renderers +%%% TODO + +%% Markdown Document Renderers +\_let \markdownRendererDocumentBegin \_relax +\_let \markdownRendererDocumentEnd \_relax + +%% Non-Breaking Space Renderer +\_def \markdownRendererNbsp {~} + +%% Note Renderer +%%% TODO + +%% Ordered List Renderers +\_def \markdownRendererOlBegin {\_begitems \_style n \_itemskipamount=\_olistskipamount} +\_def \markdownRendererOlBeginTight {\_begitems \_style n} +\_def \markdownRendererFancyOlBegin #1#2{\markdownRendererOlBegin} +\_def \markdownRendererFancyOlBeginTight #1#2{\markdownRendererOlBeginTight} +\_def \markdownRendererOlItem {\_startitem} +\_def \markdownRendererOlItemEnd {\_par} +\_def \markdownRendererOlItemWithNumber #1{\_itemnum=#1 \_advance\_itemnum by -1 \_startitem} +\_let \markdownRendererFancyOlItem \markdownRendererOlItem +\_let \markdownRendererFancyOlItemEnd \markdownRendererOlItemEnd +\_let \markdownRendererFancyOlItemWithNumber \markdownRendererOlItemWithNumber +\_def \markdownRendererOlEnd {\_enditems} +\_def \markdownRendererOlEndTight {\_enditems} +\_let \markdownRendererFancyOlEndTight \markdownRendererOlEndTight +\_let \markdownRendererFancyOlEnd \markdownRendererOlEnd + +%% Raw Content Renderers +%%% TODO + +%% Section Renderers +\_let \markdownRendererSectionBegin \_relax +\_let \markdownRendererSectionEnd \_relax + +%% Replacement Character Renderers +\_def \markdownRendererReplacementCharacter {^^^^fffd} + +%% Special Character Renderers +\_edef \markdownRendererAmpersand #1{\_csstring\&} +\_edef \markdownRendererBackslash #1{\_csstring\\} +\_edef \markdownRendererCircumflex #1{\_csstring\^} +\_edef \markdownRendererDollarSign #1{\_csstring\$} +\_edef \markdownRendererHash #1{\_csstring\#} +\_edef \markdownRendererLeftBrace #1{\_csstring\{} +\_edef \markdownRendererPercentSign #1{\_csstring\%} +\_def \markdownRendererPipe #1{|} +\_edef \markdownRendererRightBrace #1{\_csstring\}} +\_edef \markdownRendererTilde #1{\_csstring\~} +\_def \markdownRendererUnderscore #1{_} + +%% Strike-Through Renderer +\_def \markdownRendererStrikeThrough #1{% + \_setbox0=\_hbox {#1}% + \_leavevmode + \_rlap {\raise.5ex \_hbox to \_wd0 {\_hfil \_hrulefill \_hfil}}% + \_box0 +} + +%% Subscript Renderer +%%% TODO + +%% Superscript Renderer +%%% TODO + +%% Table Renderer +%%% TODO + +%% TeX Math Renderers +%%% TODO + +%% Thematic Break Renderer +\_def \markdownRendererThematicBreak {% + \_vskip 0.5\_baselineskip + \_hrule + \_par + \_vskip 0.5\_baselineskip + \_firstnoindent +} + +%% Tickbox Renderers +%%% TODO + +%% YAML Metadata Renderers +\_let \markdownRendererJekyllDataBegin \_relax +\_let \markdownRendererJekyllDataEnd \_relax +\_def \markdownRendererJekyllDataMappingBegin #1#2{} +\_let \markdownRendererJekyllDataMappingEnd \_relax +\_def \markdownRendererJekyllDataSequenceBegin #1#2{} +\_let \markdownRendererJekyllDataSequenceEnd \_relax +\_def \markdownRendererJekyllDataBoolean #1#2{} +\_def \markdownRendererJekyllDataNumber #1#2{} +\_def \markdownRendererJekyllDataString #1#2{} +\_def \markdownRendererJekyllDataEmpty #1{} + +% Load the Markdown module and set TeX macros for the Markdown module +\_directlua{ + kpse = require("kpse") + kpse.set_program_name("luatex") + markdown = require("markdown") +} + +\_eoldef \markdownBegin #1{% #1 includes the end of the current line, parameters can be here + \_def\_markdownParams{#1}% + \_bgroup \_setverb \_savemathsb \_endlinechar=`\^^J + \_markdownBeginA +} + +\_ea\_def \_ea\_markdownBeginA \_ea#\_ea1\_csstring\\markdownEnd#2^^J{% + \_restoremathsb \_egroup + \_bgroup + \_catcode`\%=12\_relax + \_catcode`\#=12\_relax + \_directlua { + % Prepare a table of options. + local defaultOptions = {\markdownOptions} + local currentOptions = {\_markdownParams} + local options = {} + for k,v in pairs(defaultOptions) do options[k] = v end + for k,v in pairs(currentOptions) do options[k] = v end + % Ensure that the cache directory exists. + if options.cacheDir then + local lfs = require("lfs") + if not lfs.isdir(options.cacheDir) then + assert(lfs.mkdir(options.cacheDir)) + end + end + % Convert Markdown to TeX and print it. + local convert = markdown.new(options) + local input = "\_luaescapestring{#1}" + local output = convert(input) + tex.print(output) + }% + \_egroup +} + +% Set the document metadata using a YAML metadata block +\markdownBegin hybrid=true,jekyllData=true +--- +title: An Example *Markdown* Document +author: Vít Starý Novotný +date: \today +--- + +# This is an H1 + +## This is an H2 + +### This is an H3 + +#### This is an H4 + +##### This is an H5 + +###### This is an H6 + +This is a text paragraph containing an ellipsis ... and followed by a +thematic break. + +*** + +This is inline `code`. This is a [link](http://google.cz "Google"). +This is an *emphasized* span of text. +This is a __strongly emphasized__ span of text. + + ![example image](example-image.png "An example image from Martin Scharrer's mwe package") + +This is a fenced code block: + +``` tex +\fontfam[LMfonts] +Hello World! \bye +``` + +This is a bullet list: + +* The first item of a bullet list, + +* the second item of a bullet list, + +* the third item of a bullet list. + +This is a compact bullet list: + +* The first item of a bullet list, +* the second item of a bullet list, +* the third item of a bullet list. + +This is an ordered list: + +5. The first item of an ordered list, + +6. the second item of an ordered list, + +7. the third item of an ordered list. + +This is an ordered list using hash enumerators: + +#. The first item of an ordered list, + +#. the second item of an ordered list, + +#. the third item of an ordered list. + +This is a compact ordered list: + +5. The first item of an ordered list, +6. the second item of an ordered list, +7. the third item of an ordered list. + +This is a compact ordered list using hash enumerators: + +#. The first item of an ordered list, +#. the second item of an ordered list, +#. the third item of an ordered list. + +This is a definition list: + +Term 1 + +: Definition 1 with some ~~removed text~~ + +Term 2 + +: Definition 2 + + Some code, part of Definition 2 + + Third paragraph of Definition 2. + +: Definition 3 + +This is a compact definition list: + +Term 1 +: Definition 1 +Term 2 +: Definition 2 +: Definition 3 + +\markdownEnd + +\bye diff --git a/macros/generic/markdown/libraries/markdown-tinyyaml.lua b/macros/generic/markdown/libraries/markdown-tinyyaml.lua index 074ad79446..36cef293ed 100644 --- a/macros/generic/markdown/libraries/markdown-tinyyaml.lua +++ b/macros/generic/markdown/libraries/markdown-tinyyaml.lua @@ -633,8 +633,10 @@ function Parser:parseseq(line, lines, indent) error("did not find expected alphabetic or numeric character") elseif rest then -- Array entry with a value + local nextline = lines[1] + local indent2 = countindent(nextline) tremove(lines, 1) - tinsert(seq, self:parsescalar(rest, lines)) + tinsert(seq, self:parsescalar(rest, lines, indent2)) end end return seq diff --git a/macros/generic/markdown/markdown.dtx b/macros/generic/markdown/markdown.dtx index 3edb022e15..26b5db62f1 100644 --- a/macros/generic/markdown/markdown.dtx +++ b/macros/generic/markdown/markdown.dtx @@ -104,13 +104,7 @@ \newunicodechar{☒}{\markdownRendererTickedBox} \newunicodechar{⌛}{\markdownRendererHalfTickedBox} \newunicodechar{☐}{\markdownRendererUntickedBox} -\usepackage{emoji} -\makeatletter -\@ifpackagelater{emoji}{2020/03/16}{ - \newunicodechar{😉}{\emoji{winking-face}} -}{ - \newunicodechar{😉}{;-)} -} +\newunicodechar{😉}{;-)} \makeatother % Set up the catcodes. @@ -122,7 +116,7 @@ --- title: A Markdown Interpreter for \TeX url: https://github.com/witiko/markdown -authors: [Vít Novotný] +authors: [Vít Starý Novotný] email: witiko@mail.muni.cz revision: \markdownVersion date: \markdownLastModified @@ -763,23 +757,17 @@ abbr { author = {Knuth, Donald Ervin}, year = {1986}, title = {\TeX: The Program}, - isbn = {0-201-13437-7}, + isbn = {978-0-201-13437-7}, pagetotal = {xvi, 594}, series = {Computers \& Typesetting}, volume = {B}, location = {Reading, MA}, publisher = {Addison-Wesley}} -@online{novotny21, - author = {Novotný, Vít}, - title = {\Hologo{LaTeX2e} no longer keys packages by pathnames}, - date = {2021-02-20}, - url = {https://github.com/latex3/latex2e/issues/510}, - urldate = {2021-02-21}} @book{eijkhout92, author = {Victor Eijkhout}, title = {\TeX{} by Topic}, subtitle = {A \TeX nician's Reference}, - isbn = {0-201-56882-0}, + isbn = {978-0-201-56882-0}, pagetotal = {307}, date = {1992-02-01}, location = {Wokingham, England}, @@ -792,50 +780,23 @@ abbr { pages = {196-205}, doi = {10.1109/ICPC.2010.41}} %</techdoc-bibliography> -%<*latex-themes-witiko-markdown-techdoc> -\ProvidesPackage{markdownthemewitiko_markdown_techdoc}[2022/02/23] +%<@@=markdown> +%<*themes-witiko-markdown-techdoc> +\ProvidesPackage{markdownthemewitiko_markdown_techdoc}[2022/12/13] \RequirePackage{etoolbox} \markdownSetup{ renderers = { - head*Four = {% - \paragraph{#1}\leavevmode - \def\markdownRendererInterblockSeparator{% - \let\markdownRendererInterblockSeparator\par - }% - \noindent - }, + head*Four = {\paragraph{#1}\leavevmode}, }, rendererPrototypes = { codeSpan = {\inline{#1}}, - jek*llDataEnd = {% + jekyllData(End) = {% \AfterEndPreamble{% \printtitlepage \tableofcontents {\def\addcontentsline##1##2##3{}\listoffigures}% }% }, - headerAttributeContextBegin = { - \markdownSetup{ - rendererPrototypes = { - attributeIdentifier = {% - \begingroup - \def\next####1{% - \def####1########1{% - \endgroup - ####1{########1}% - \label{sec:##1}% - }% - }% - \next\markdownRendererHeadingOne - \next\markdownRendererHeadingTwo - \next\markdownRendererHeadingThree - \next\markdownRendererHeadingFour - \next\markdownRendererHeadingFive - \next\markdownRendererHeadingSix - }, - }, - }% - }, }, jekyllDataRenderers = { /authors/* = {% @@ -853,6 +814,17 @@ abbr { url = {\gdef\ltd@title@url{#1}}, } } +\ExplSyntaxOn +\markdownSetup{ + rendererPrototypes = { + headerAttributeContextEnd = { + \seq_map_inline:Nn + \l_@@_header_identifiers_seq + { \label { sec:##1 } } + }, + }, +} +\ExplSyntaxOff \renewcommand\markdownLaTeXRendererDirectOrIndirectLink[4]{% #1\footnote{See \url{#3}.}} \RequirePackage{varioref} @@ -884,12 +856,12 @@ abbr { dlEnd = {\end{optionlist}}, } } -%</latex-themes-witiko-markdown-techdoc> +%</themes-witiko-markdown-techdoc> %<*manual> --- title: Markdown Package User Manual -author: Vít Novotný +author: Vít Starý Novotný date: \markdownVersion{} \markdownLastModified{} --- @@ -901,7 +873,7 @@ date: \markdownVersion{} \markdownLastModified{} Introduction ============ -The [Markdown package][pkg] converts [markdown][] markup to \TeX{} commands. The +The [Markdown package][pkg] converts [CommonMark][] markup to \TeX{} commands. The functionality is provided both as a Lua module and as plain \TeX{}, \LaTeX{}, and \Hologo{ConTeXt} macro packages that can be used to directly typeset \TeX{} documents containing markdown markup. Unlike other convertors, the Markdown package @@ -909,10 +881,10 @@ does not require any external programs, and makes it easy to redefine how each and every markdown element is rendered. Creative abuse of the markdown syntax is encouraged. 😉 - [markdown]: https://daringfireball.net/projects/markdown/basics - (Daring Fireball: Markdown Basics) - [pkg]: https://ctan.org/pkg/markdown - (CTAN: Package markdown) + [commonmark]: https://commonmark.org/ + (CommonMark: A strongly defined, highly compatible specification of Markdown) + [pkg]: https://ctan.org/pkg/markdown + (CTAN: Package markdown) % This document is a technical documentation for the \pkg{Markdown} package. It % consists of three sections. This section introduces the package and outlines @@ -942,9 +914,9 @@ documentation][techdoc]. local metadata = { version = "(((VERSION)))", comment = "A module for the conversion from markdown to plain TeX", - author = "John MacFarlane, Hans Hagen, Vít Novotný", + author = "John MacFarlane, Hans Hagen, Vít Starý Novotný", copyright = {"2009-2016 John MacFarlane, Hans Hagen", - "2016-2023 Vít Novotný"}, + "2016-2023 Vít Starý Novotný"}, license = "LPPL 1.3c" } @@ -994,15 +966,19 @@ make base `````` This should produce the following files: -* `markdown.lua`, the Lua module, -* `libraries/markdown-tinyyaml.lua`, an external library for reading \acro{yaml}, -* `markdown-cli.lua`, the Lua command-line interface, -* `markdown.tex`, the plain \TeX{} macro package, -* `markdown.sty`, the \LaTeX{} package, -* `markdownthemewitiko_dot.sty`, the `witiko/dot` \LaTeX{} theme, -* `markdownthemewitiko_graphicx_http.sty`, the `witiko/graphicx/http` \LaTeX{} theme, -* `markdownthemewitiko_tilde.sty`, the `witiko/tilde` \LaTeX{} theme, and -* `t-markdown.tex`, the \Hologo{ConTeXt} module. +* `markdown.lua`: The Lua module +* `libraries/markdown-tinyyaml.lua`: An external library for reading \acro{yaml} +* `markdown-cli.lua`: The Lua command-line interface +* `markdown.tex`: The plain \TeX{} macro package +* `markdown.sty`: The \LaTeX{} package +* `markdownthemewitiko_dot.sty`: The `witiko/dot` \LaTeX{} theme +* `markdownthemewitiko_graphicx_http.sty`: The `witiko/graphicx/http` \LaTeX{} theme +* `markdownthemewitiko_tilde.tex`: The `witiko/tilde` theme +* `markdownthemewitiko_markdown_defaults.tex`, + `markdownthemewitiko_markdown_defaults.sty`, and + `t-markdownthemewitiko_markdown_defaults.tex`: The `witiko/markdown/defaults` + theme +* `t-markdown.tex`: The \Hologo{ConTeXt} module ### Local Installation @@ -1014,11 +990,14 @@ placed: * `⟨TEXMF⟩/tex/luatex/markdown/markdown-tinyyaml.lua` * `⟨TEXMF⟩/scripts/markdown/markdown-cli.lua` * `⟨TEXMF⟩/tex/generic/markdown/markdown.tex` +* `⟨TEXMF⟩/tex/generic/markdown/markdownthemewitiko_tilde.tex` +* `⟨TEXMF⟩/tex/generic/markdown/markdownthemewitiko_markdown_defaults.tex` * `⟨TEXMF⟩/tex/latex/markdown/markdown.sty` * `⟨TEXMF⟩/tex/latex/markdown/markdownthemewitiko_dot.sty` * `⟨TEXMF⟩/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty` -* `⟨TEXMF⟩/tex/latex/markdown/markdownthemewitiko_tilde.sty` +* `⟨TEXMF⟩/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty` * `⟨TEXMF⟩/tex/context/third/markdown/t-markdown.tex` +* `⟨TEXMF⟩/tex/context/third/markdown/t-markdownthemewitiko_markdown_defaults.tex` where `⟨TEXMF⟩` corresponds to a root of your \TeX{} distribution, such as `/usr/share/texmf` and `~/texmf` on UN\*X systems or @@ -1031,10 +1010,20 @@ Alternatively, you can also store the above files in the same folder as your \TeX{} document and distribute them together. This way your document can be portably typeset on legacy \TeX{} distributions. -Since Markdown version 2.10.0, the file `markdown.tex` must be placed in -a directory named `markdown` due to [issue #74][issue-74]. - - [issue-74]: https://github.com/witiko/markdown/issues/74 (Does not compile if user names own document markdown.tex) +This is where the individual files should be placed: + +* `./markdown.lua` +* `./markdown-tinyyaml.lua` +* `./markdown-cli.lua` +* `./markdown/markdown.tex` +* `./markdown.sty` +* `./t-markdown.tex` +* `./markdownthemewitiko_dot.sty` +* `./markdownthemewitiko_graphicx_http.sty` +* `./markdownthemewitiko_tilde.tex` +* `./markdownthemewitiko_markdown_defaults.tex` +* `./markdownthemewitiko_markdown_defaults.sty` +* `./t-markdownthemewitiko_markdown_defaults.tex` %</manual> %<*lua> @@ -1077,23 +1066,7 @@ local lpeg = require("lpeg") % % \end{markdown} % \begin{macrocode} -local unicode -(function() - local ran_ok - ran_ok, unicode = pcall(require, "unicode") -% \end{macrocode} -% \begin{markdown} -% -% If the Selene Unicode library is unavailable (could be because we are using -% LuaMeta\TeX) and we are using Lua${}\geq{}$5.3, we will use the built-in -% support for Unicode. -% -% \end{markdown} -% \begin{macrocode} - if not ran_ok then - unicode = {utf8 = {char=utf8.char}} - end -end)() +local unicode = require("unicode") % \end{macrocode} % \par % \begin{markdown} @@ -1133,22 +1106,10 @@ local md5 = require("md5"); % \begin{macrocode} local should_initialize = package.loaded.kpse == nil or tex.initialize ~= nil - local ran_ok - ran_ok, kpse = pcall(require, "kpse") - if ran_ok and should_initialize then + kpse = require("kpse") + if should_initialize then kpse.set_program_name("luatex") end -% \end{macrocode} -% \begin{markdown} -% -% If the \pkg{Kpathsea} library is unavailable, we will look up files only -% in the current working directory. -% -% \end{markdown} -% \begin{macrocode} - if not ran_ok then - kpse = {lookup = function(f, _) return f end} - end end)() % \end{macrocode} % \par @@ -1164,35 +1125,7 @@ end)() % % \end{markdown} % \begin{macrocode} -local uni_case -(function() - local ran_ok - ran_ok, uni_case = pcall(require, "lua-uni-case") -% \end{macrocode} -% \begin{markdown} -% -% If the lua-uni-algos library is unavailable but the Selene Unicode library -% is available, we will use its Unicode lower-casing support instead of -% the more proper case-folding. -% -% \end{markdown} -% \begin{macrocode} - if not ran_ok then - if unicode.utf8.lower then - uni_case = {casefold = unicode.utf8.lower} - else -% \end{macrocode} -% \begin{markdown} -% -% If the Selene Unicode library is also unavailable, we will defer to using -% ASCII lower-casing. -% -% \end{markdown} -% \begin{macrocode} - uni_case = {casefold = string.lower} - end - end -end)() +local uni_algos = require("lua-uni-algos") % \end{macrocode} % \par % \begin{markdown} @@ -1229,10 +1162,16 @@ end)() % % \end{markdown} % \begin{macrocode} -%<@@=markdown> +%</tex> +%<*context> +\unprotect +%</context> +%<*context,tex> \ifx\ExplSyntaxOn\undefined - \input expl3-generic\relax + \input expl3-generic \fi +%</context,tex> +%<*tex> % \end{macrocode} % \begin{markdown} % @@ -1264,11 +1203,10 @@ end)() % \TeX{} part of the package will require that either the Lua\TeX{} % `\directlua` primitive or the shell access file stream 18 is available in % your \TeX{} engine. If only the shell access file stream is available in your -% \TeX{} engine (as is the case with \hologo{pdfTeX} and \Hologo{XeTeX}) or if -% you enforce the use of shell using the \mref{markdownMode} macro, then unless -% your \TeX{} engine is globally configured to enable shell access, you will -% need to provide the `-shell-escape` parameter to your engine when typesetting -% a document. +% \TeX{} engine (as is the case with \hologo{pdfTeX} and \Hologo{XeTeX}), then +% unless your \TeX{} engine is globally configured to enable shell access, you +% will need to provide the `-shell-escape` parameter to your engine when +% typesetting a document. % % \end{markdown} % \iffalse @@ -1284,13 +1222,13 @@ end)() % loaded, % \end{markdown} % \iffalse -%<*latex-themes-witiko-dot,latex-themes-witiko-graphicx-http,latex-themes-witiko-tilde> +%<*themes-witiko-dot,latex-themes-witiko-graphicx-http> % \fi % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}% % \end{macrocode} % \iffalse -%</latex-themes-witiko-dot,latex-themes-witiko-graphicx-http,latex-themes-witiko-tilde> +%</themes-witiko-dot,latex-themes-witiko-graphicx-http> % \fi % \begin{markdown} % a \TeX{} engine that extends \Hologo{eTeX}, and all the plain \TeX{} @@ -1299,9 +1237,9 @@ end)() % The following packages are soft prerequisites. They are only used to provide % default token renderer prototypes (see sections % <#sec:texrendererprototypes> and -% <#sec:latex-default-renderer-prototypes>) or \LaTeX{} themes (see Section -% <#sec:latexthemes>) and will not be loaded if the `plain` package option -% has been enabled (see Section <#sec:latexplain>): +% <#sec:latex-token-renderer-prototypes>) or \LaTeX{} themes (see Section +% <#sec:latexthemes>) and will not be loaded if the option `plain` has been +% enabled (see Section <#sec:plain>): % % \pkg{url} % @@ -1333,7 +1271,7 @@ end)() % \pkg{csvsimple} % %: A package that provides the `\csvautotabular` macro for typesetting -% \acro{csv} files in the default renderer prototypes for iA\,Writer +% \acro{csv} files in the default renderer prototypes for iA\\,Writer % content blocks. % % \pkg{gobble} @@ -1378,7 +1316,7 @@ end)() % \pkg{soulutf8} % %: A package that is used in the default renderer prototype for -% strike-throughs. +% strike-throughs and marked text. % % \pkg{ltxcmds} % @@ -1411,7 +1349,7 @@ end)() % \pkg{m-database} % %: A module that provides the default token renderer prototype for -% iA\,Writer content blocks with the \acro{csv} filename extension (see +% iA\\,Writer content blocks with the \acro{csv} filename extension (see % Section <#sec:texrendererprototypes>). % % Feedback @@ -1498,7 +1436,11 @@ Using a text editor, create a text document named `document.tex` with the following content: ``` tex \input markdown +\begingroup +\catcode`\%=12 +\catcode`\#=12 \input hello +\endgroup \bye ``````` @@ -1508,8 +1450,8 @@ Using a text editor, create a text document named `hello.lua` with the following content: ``` lua #!/usr/bin/env texlua -local ran_ok, kpse = pcall(require, "kpse") -if ran_ok then kpse.set_program_name("luatex") end +local kpse = require("kpse") +kpse.set_program_name("luatex") local markdown = require("markdown") local convert = markdown.new() print(convert("Hello *world*!")) @@ -1569,10 +1511,35 @@ Next, invoke LuaTeX from the terminal: luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the text -“Hello *world*!” Invoking pdfTeX should have the same effect: +“Hello *world*!” + +Instead of LuaTeX, you may also use pdfTeX: ``` sh pdftex --shell-escape document.tex ``````` +This should also produce a PDF document named `document.pdf` with the same content. + +*** + +Instead of writing your markdown document between `\markdownBegin` and +`\markdownEnd`, you can also include markdown documents using the +`\markdownInput` macro, similarly to how you might use the `\input` TeX +primitive to include \TeX{} documents. + +Using a text editor, create a text document named `hello.md` with the +following content: +``` md +Hello *world*! +`````` +Create also a text document named `document.tex` with the following content: +``` tex +\input markdown +\markdownInput{hello.md} +\bye +``````` +Next, invoke LuaTeX or pdfTeX from the terminal like in the previous example. +A PDF document named `document.pdf` should be produced and contain the text +“Hello *world*!” ### Using \LaTeX{} @@ -1592,10 +1559,39 @@ Next, invoke LuaTeX from the terminal: lualatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the text “Hello -*world*!” Invoking pdfTeX should have the same effect: +*world*!” + +Instead of LuaTeX, you may also use pdfTeX: ``` sh pdflatex --shell-escape document.tex `````` +This should also produce a PDF document named `document.pdf` with the same content. + +*** + +Instead of writing your markdown document between `\begin{markdown}` and +`\end{markdown}`, you can also include markdown documents using the +`\markdownInput` macro, similarly to how you might use the `\input` TeX +primitive to include \LaTeX{} documents. + +Using a text editor, create a text document named `hello.md` with the +following content: +``` md +Hello *world*! +`````` +Create also a text document named `document.tex` with the following content: +``` tex +\documentclass{article} +\usepackage{markdown} +\begin{document} +\begin{markdown} +\markdownInput{hello.md} +\end{markdown} +\end{document} +``````` +Next, invoke LuaTeX or pdfTeX from the terminal like in the previous example. +A PDF document named `document.pdf` should be produced and contain the text +“Hello *world*!” *** @@ -1629,25 +1625,48 @@ Hello *world*! ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the text “Hello *world*!” *** +Instead of writing your markdown document between `\startmarkdown` and +`\stopmarkdown`, you can also include markdown documents using the +`\inputmarkdown` macro, similarly to how you might use the `\input` TeX +primitive to include \Hologo{ConTeXt} documents. + +Using a text editor, create a text document named `hello.md` with the +following content: +``` md +Hello *world*! +`````` +Create also a text document named `document.tex` with the following content: +``` tex +\usemodule[t][markdown] +\starttext +\inputmarkdown{hello.md} +\stoptext +``````` +Next, invoke LuaTeX from the terminal like in the previous example. +A PDF document named `document.pdf` should be produced and contain the text +“Hello *world*!” + +*** + As the next step, try typesetting the example documents distributed along with the Markdown package: ``` sh git clone https://github.com/witiko/markdown cd markdown/examples -context context.tex +context --luatex context.tex `````` A PDF document named `context.pdf` should be produced. Open the text documents `context.tex` and `example.md` in a text editor to see how the example documents are structured. Try changing the documents and typesetting them as follows: ``` sh -context context.tex +context --luatex context.tex `````` to see the effect of your changes. @@ -1674,6 +1693,7 @@ Each part will be shown by example, leaving the implementation details to the % Lua Interface {#luainterface} %--------------- % +% \end{markdown} % \iffalse %</lua> %<*manual-interfaces> @@ -1700,6 +1720,7 @@ module and a command-line interface (CLI). %</manual-interfaces> %<*lua> % \fi +% \begin{markdown} % % The Lua interface provides the conversion from \acro{utf}-\oldstylenums8 % encoded markdown to plain \TeX{}. This interface is used by the plain \TeX{} @@ -1755,8 +1776,11 @@ local walkable_syntax = { "ThematicBreak", "BulletList", "OrderedList", - "Heading", "DisplayHtml", + "Heading", + }, + BlockOrParagraph = { + "Block", "Paragraph", "Plain", }, @@ -1764,11 +1788,8 @@ local walkable_syntax = { "Str", "Space", "Endline", - "UlOrStarLine", - "Strong", - "Emph", - "Link", - "Image", + "EndlineBreak", + "LinkAndEmph", "Code", "AutoLinkUrl", "AutoLinkEmail", @@ -1794,9 +1815,9 @@ local walkable_syntax = { % not be interpreted by the Markdown package; you can treat it as a comment. % % For example. if we'd like to insert `pattern` into the grammar between the -% `Inline -> Emph` and `Inline -> Link` rules, we would call -% \luamref{reader->insert_pattern} with `"Inline after Emph"` (or `"Inline -% before Link"`) and `pattern` as the arguments. +% `Inline -> LinkAndEmph` and `Inline -> Code` rules, we would call +% \luamref{reader->insert_pattern} with `"Inline after LinkAndEmph"` (or `"Inline +% before Code"`) and `pattern` as the arguments. % % The \luamref{reader->add_special_character} method adds a new character with % special meaning to the grammar of markdown. The method receives the character @@ -1824,26 +1845,30 @@ following content: ``` tex \input markdown \input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 \input example +\endgroup \bye ``````` Using a text editor, create a text document named `example.lua` with the following content: ``` lua #!/usr/bin/env texlua -local ran_ok, kpse = pcall(require, "kpse") -if ran_ok then kpse.set_program_name("luatex") end +local kpse = require("kpse") +kpse.set_program_name("luatex") local markdown = require("markdown") -local input, convert_safe, convert_unsafe, paragraph +local input, convert_nomath, convert_math, paragraph input = [[$\sqrt{-1}$ *equals* $i$.]] -convert_safe = markdown.new() -convert_unsafe = markdown.new({hybrid = true}) +convert_nomath = markdown.new() +convert_math = markdown.new({texMathDollars = true}) paragraph = [[\par]] print( - convert_safe(input) .. paragraph .. - convert_unsafe(input) + convert_nomath(input) .. paragraph .. + convert_math(input) ) ``````` Next, invoke LuaTeX from the terminal: @@ -1876,16 +1901,16 @@ named `document.tex` with the following content: \input lmfonts \directlua{ local markdown = require("markdown") - local input, convert_safe, convert_unsafe, paragraph + local input, convert_nomath, convert_math, paragraph input = [[$\string\sqrt{-1}$ *equals* $i$.]] - convert_safe = markdown.new() - convert_unsafe = markdown.new({hybrid = true}) + convert_nomath = markdown.new() + convert_math = markdown.new({texMathDollars = true}) paragraph = [[\par]] tex.sprint( - convert_safe(input) .. paragraph .. - convert_unsafe(input) + convert_nomath(input) .. paragraph .. + convert_math(input) ) } \bye @@ -1921,11 +1946,12 @@ following content: ``` tex \input markdown \input lmfonts -\input safe - \begingroup \catcode`\%=12 -\input unsafe +\catcode`\#=12 +\input nomath +\par +\input math \endgroup \bye ``````` @@ -1936,8 +1962,8 @@ $\sqrt{-1}$ *equals* $i$. `````` Next, invoke LuaTeX from the terminal: ``` sh -texlua ⟨CLI pathname⟩ -- example.md safe.tex -texlua ⟨CLI pathname⟩ hybrid=true -- example.md unsafe.tex +texlua ⟨CLI pathname⟩ -- example.md nomath.tex +texlua ⟨CLI pathname⟩ tex_math_dollars=true -- example.md math.tex luatex document.tex `````` where \meta{CLI pathname} corresponds to the location of the Lua CLI script file, @@ -1957,8 +1983,8 @@ following text: Invoking pdfTeX should have the same effect: ``` sh -texlua ⟨CLI pathname⟩ -- example.md safe.tex -texlua ⟨CLI pathname⟩ hybrid=true -- example.md unsafe.tex +texlua ⟨CLI pathname⟩ -- example.md nomath.tex +texlua ⟨CLI pathname⟩ tex_math_dollars=true -- example.md math.tex pdftex document.tex `````` @@ -2331,6 +2357,212 @@ interfaces and all the way up to the \LaTeX{} and \Hologo{ConTeXt} interfaces. % \fi % \begin{markdown} % +%### General Behavior +% +% \end{markdown} +% \par +% \iffalse + +#### Option `eagerCache` + +`eagerCache` (default value: `false`) + +% \fi +% \begin{markdown} +% +% \Optitem[false]{eagerCache}{\opt{true}, \opt{false}} +% +: true + + : Converted markdown documents will be cached in \Opt{cacheDir}. This can be + useful for post-processing the converted documents and for recovering + historical versions of the documents from the cache. However, it also + produces a large number of auxiliary files on the disk and obscures the + output of the Lua command-line interface when it is used for plumbing. + + This behavior will always be used if the \Opt{finalizeCache} option is + enabled. + +: false + + : Converted markdown documents will not be cached. This decreases the number + of auxiliary files that we produce and makes it easier to use the Lua + command-line interface for plumbing. + + This behavior will only be used when the \Opt{finalizeCache} option is + disabled. + +% \end{markdown} +% \iffalse + +##### Lua CLI Example {.unnumbered} + +Using a text editor, create a text document named `hello.md` with the +following content: +``` md +Hello *world*! +`````` +Next, invoke LuaTeX from the terminal with the \Opt{eagerCache} option +disabled: +``` sh +texlua ⟨CLI pathname⟩ eagerCache=false -- hello.md hello.tex +``````` +where \meta{CLI pathname} corresponds to the location of the Lua CLI script file, +such as `~/texmf/scripts/markdown/markdown-cli.lua` on UN\*X systems or +`C:\Users\`\meta{Your username}`\texmf\scripts\markdown\markdown-cli.lua` on Windows +systems. Use the command `kpsewhich -a markdown-cli.lua` to locate the Lua CLI +script file using [Kpathsea][]. + +A \TeX{} document named `hello.tex` should be produced and contain the +following code: +``` tex +Hello \markdownRendererEmphasis{world}!\relax +``` + +*** + +Invoke LuaTeX from the terminal again, this time with the \Opt{eagerCache} +option enabled: + +``` tex +texlua ⟨CLI pathname⟩ eagerCache=true -- hello.md hello.tex +``` + +A \TeX{} document named `hello.tex` should be produced and contain the +following code: + +``` tex +\input ./⟨hash⟩.md.tex\relax +``` + +Additionally, a \TeX{} document named `⟨hash⟩.md.tex` should be produced and +contain the following code: + +``` tex +Hello \markdownRendererEmphasis{world}!\relax +``` + +%</manual-options> +%<*tex> +% \fi +% \begin{macrocode} +\@@_add_lua_option:nnn + { eagerCache } + { boolean } + { false } +% \end{macrocode} +% \iffalse +%</tex> +%<*lua,lua-cli> +% \fi +% \begin{macrocode} +defaultOptions.eagerCache = false +% \end{macrocode} +% \par +% \iffalse +%</lua,lua-cli> +%<*manual-options> + +#### Option `singletonCache` + +`singletonCache` (default value: `true`) + +% \fi +% \begin{markdown} +% +% \Optitem[true]{singletonCache}{\opt{true}, \opt{false}} +% +: true + + : Conversion functions produced by the function \luamref{new}`(options)` + will be cached in an LRU cache of size 1 keyed by `options`. This is + more time- and space-efficient than always producing a new conversion + function but may expose bugs related to the idempotence of conversion + functions. + + This has been the default behavior since version 3.0.0 of the Markdown + package. + +: false + + : Every call to the function \luamref{new}`(options)` will produce a new + conversion function that will not be cached. This is slower than + caching conversion functions and may expose bugs related to memory + leaks in the creation of conversion functions, see also issue [#226][1]. + + This was the default behavior until version 3.0.0 of the Markdown package. + + [1]: https://github.com/witiko/markdown/pull/226#issuecomment-1599641634 + +% \end{markdown} +% \iffalse + +##### Lua Module Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: +``` tex +\input markdown +\begingroup +\catcode`\%=12 +\catcode`\#=12 +\directlua{ + local markdown = require("markdown") + local convert1 = markdown.new({}) + local convert2 = markdown.new({singletonCache=false}) + local convert3 = markdown.new({singletonCache=true}) + local newline = [[^^J^^J]] + tex.print(tostring(convert1) .. ", ") + tex.print(tostring(convert2) .. ", ") + tex.print(tostring(convert3)) +} +\endgroup +\bye +``````` +Then, invoke LuaTeX from the terminal: +``` sh +luatex document.tex +``````` +A PDF document named `document.pdf` should be produced and contain the following text: + +> function: 0x1a4a038, function: 0x1a52b18, function: 0x1a4a038 + +As you can see, the caching causes `convert1` and `convert3` to be the same +conversion function. + +%</manual-options> +%<*tex> +% \fi +% \begin{macrocode} +\@@_add_lua_option:nnn + { singletonCache } + { boolean } + { true } +% \end{macrocode} +% \iffalse +%</tex> +%<*lua,lua-cli> +% \fi +% \begin{macrocode} +defaultOptions.singletonCache = true +% \end{macrocode} +% \iffalse +%</lua,lua-cli> +%<*lua> +% \fi +% \begin{macrocode} +local singletonCache = { + convert = nil, + options = nil, +} +% \end{macrocode} +% \par +% \iffalse +%</lua> +%<*manual-options> +% \fi +% \begin{markdown} +% %### File and Directory Names % % \end{markdown} @@ -2365,11 +2597,15 @@ Using a text editor, create a text document named `document.tex` with the following content: ``` tex \input markdown +\begingroup +\catcode`\%=12 +\catcode`\#=12 \directlua{ local markdown = require("markdown") local convert = markdown.new({cacheDir = "cache"}) local input = "Hello *world*!" tex.sprint(convert(input)) } +\endgroup \bye ``````` Create an empty directory named `cache` next to our text document. Then, invoke @@ -2387,7 +2623,11 @@ Using a text editor, create a text document named `document.tex` with the following content: ``` tex \input markdown +\begingroup +\catcode`\%=12 +\catcode`\#=12 \input hello +\endgroup \bye ``````` Using a text editor, create a text document named `hello.md` with the @@ -2469,7 +2709,7 @@ Hello *world*! ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the text “Hello *world*!” A directory named `cache` containing several cache files of the @@ -2507,7 +2747,7 @@ defaultOptions.cacheDir = "." % \Valitem[markdown-languages.json]{contentBlocksLanguageMap}{filename} % : The filename of the \acro{JSON} file that maps filename extensions to - programming language names in the iA\,Writer content blocks when the + programming language names in the iA\\,Writer content blocks when the \Opt{contentBlocks} option is enabled. % See Section <#sec:texcontentblockrenderers> for more information. @@ -2621,7 +2861,7 @@ Create also a text document named `document.tex` with the following content: ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -2739,11 +2979,15 @@ Using a text editor, create a text document named `document.tex` with the following content: ``` tex \input markdown +\begingroup +\catcode`\%=12 +\catcode`\#=12 \directlua{ local markdown = require("markdown") local convert = markdown.new({finalizeCache = true, frozenCacheFileName = "cache.tex"}) local input = "Hello *world*!" tex.sprint(convert(input)) } +\endgroup \bye ``````` Then, invoke LuaTeX from the terminal: @@ -2761,7 +3005,11 @@ Using a text editor, create a text document named `document.tex` with the following content: ``` tex \input markdown +\begingroup +\catcode`\%=12 +\catcode`\#=12 \input hello +\endgroup \bye ``````` Using a text editor, create a text document named `hello.md` with the @@ -2891,7 +3139,7 @@ Hello *world*! ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the text “Hello *world*!” A frozen cache will also be produced in the `cache.tex` @@ -2913,9 +3161,9 @@ Hi *world*! \stopmarkdown \stoptext ``````` -Last, invoke pdfTeX without shell access from the terminal: +Last, invoke LuaTeX from the terminal: ``` sh -context frozen-document.tex +context --luatex frozen-document.tex `````` A PDF document named `frozen-document.pdf` should be produced and contain the text “Hello *world*!” Since we used the contents of the frozen cache using @@ -2952,6 +3200,55 @@ defaultOptions.frozenCacheFileName = "frozenCache.tex" % \par % \iffalse +#### Option `autoIdentifiers` + +`autoIdentifiers` (default value: `false`) + +% \fi +% \begin{markdown} +% \Optitem[false]{autoIdentifiers}{\opt{true}, \opt{false}} +% +: true + + : Enable the Pandoc [auto identifiers syntax extension][pandoc-auto-identifiers]: + + ``` md + The following heading received the identifier `sesame-street`: + + # 123 Sesame Street + `````` + + false + + : Disable the Pandoc auto identifiers syntax extension. + +See also the option \Opt{gfmAutoIdentifiers}. + + [pandoc-auto-identifiers]: https://pandoc.org/MANUAL.html#extension-auto_identifiers + +% \end{markdown} +% \iffalse +%</manual-options> +%<*tex> +% \fi +% \begin{macrocode} +\@@_add_lua_option:nnn + { autoIdentifiers } + { boolean } + { false } +% \end{macrocode} +% \iffalse +%</tex> +%<*lua,lua-cli> +% \fi +% \begin{macrocode} +defaultOptions.autoIdentifiers = false +% \end{macrocode} +% \par +% \iffalse +%</lua,lua-cli> +%<*manual-options> + #### Option `blankBeforeBlockquote` `blankBeforeBlockquote` (default value: `false`) @@ -2979,6 +3276,9 @@ following content: ``` tex \input markdown \input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 \directlua{ local markdown = require("markdown") local newline = [[^^J^^J]] @@ -2993,6 +3293,7 @@ following content: input = "A paragraph." .. newline .. "> Not a quote." .. newline tex.sprint(convert(input)) } +\endgroup \bye ``````` Then, invoke LuaTeX from the terminal: @@ -3015,8 +3316,12 @@ following content: ``` tex \input markdown \input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 \input optionfalse \input optiontrue +\endgroup \bye ``````` Using a text editor, create a text document named `content.md` with the @@ -3093,10 +3398,10 @@ A paragraph. > A quote. \end{markdown} -\begin{markdown*}{blankBeforeBlockquote} +\begin{markdown}[blankBeforeBlockquote] A paragraph. > Not a quote. -\end{markdown*} +\end{markdown} \end{document} ``````` @@ -3136,7 +3441,7 @@ A paragraph. ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -3197,6 +3502,9 @@ following content: ``` tex \input markdown \input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 \directlua{ local markdown = require("markdown") local newline = [[^^J^^J]] @@ -3216,6 +3524,7 @@ following content: "Not a fenced code." .. newline .. "```" .. newline tex.sprint(convert(input)) } +\endgroup \bye ``````` Then, invoke LuaTeX from the terminal: @@ -3240,8 +3549,12 @@ following content: ``` tex \input markdown \input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 \input optionfalse \input optiontrue +\endgroup \bye ``````` Using a text editor, create a text document named `content.md` with the @@ -3331,12 +3644,12 @@ A fenced code. ``` \end{markdown} -\begin{markdown*}{blankBeforeCodeFence} +\begin{markdown}[blankBeforeCodeFence] A paragraph. ``` Not a fenced code. ``` -\end{markdown*} +\end{markdown} \end{document} ```````` @@ -3383,7 +3696,7 @@ Not a fenced code. ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -3454,13 +3767,13 @@ A fenced div. ::: \end{markdown} -\begin{markdown*}{blankBeforeDivFence} +\begin{markdown}[blankBeforeDivFence] A paragraph. ::: {.identifier} Not a fenced div. ::: -\end{markdown*} +\end{markdown} \end{document} ```````` @@ -3529,6 +3842,9 @@ following content: \input markdown \input lmfonts \def\markdownRendererHeadingOne#1{{\bf #1}\par} +\begingroup +\catcode`\%=12 +\catcode`\#=12 \directlua{ local markdown = require("markdown") local newline = [[^^J^^J]] @@ -3545,6 +3861,7 @@ following content: "Not a heading." .. newline .. "==============" .. newline tex.sprint(convert(input)) } +\endgroup \bye ``````` Then, invoke LuaTeX from the terminal: @@ -3568,8 +3885,12 @@ following content: ``` tex \input markdown \input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 \input optionfalse \input optiontrue +\endgroup \bye ``````` Using a text editor, create a text document named `content.md` with the @@ -3652,11 +3973,11 @@ A heading. ========== \end{markdown} -\begin{markdown*}{blankBeforeHeading} +\begin{markdown}[blankBeforeHeading] A paragraph. Not a heading. ============== -\end{markdown*} +\end{markdown} \end{document} ``````` @@ -3699,7 +4020,7 @@ Not a heading. ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -3732,6 +4053,232 @@ defaultOptions.blankBeforeHeading = false %</lua,lua-cli> %<*manual-options> +#### Option `blankBeforeList` + +`blankBeforeList` (default value: `false`) + +% \fi +% \begin{markdown} +% +% \Optitem[false]{blankBeforeList}{\opt{true}, \opt{false}} +% +: true + + : Require a blank line between a paragraph and the following list. + + false + + : Do not require a blank line between a paragraph and the following + list. + +% \end{markdown} +% \iffalse + +##### Lua Module Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: +``` tex +\input markdown +\input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 +\directlua{ + local markdown = require("markdown") + local newline = [[^^J^^J]] + local convert, input + + convert = markdown.new() + input = "A paragraph." .. newline .. + "- a list" .. newline + tex.sprint(convert(input)) + + convert = markdown.new({ + blankBeforeList = true}) + input = "A paragraph." .. newline .. + "- not a list" .. newline + tex.sprint(convert(input)) } +\endgroup +\bye +``````` +Then, invoke LuaTeX from the terminal: +``` sh +luatex document.tex +``````` +A PDF document named `document.pdf` should be produced and contain the +following text: + +> A paragraph. +> +> - a list +> +> A paragraph. - not a list + +##### Lua CLI Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: +``` tex +\input markdown +\input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 +\input optionfalse +\input optiontrue +\endgroup +\bye +``````` +Using a text editor, create a text document named `content.md` with the +following content: +```` md +A paragraph. +- a list? +``````` +Next, invoke LuaTeX from the terminal: +``` sh +texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex +texlua ⟨CLI pathname⟩ blankBeforeList=true -- content.md optiontrue.tex +luatex document.tex +``````` +where \meta{CLI pathname} corresponds to the location of the Lua CLI script file, +such as `~/texmf/scripts/markdown/markdown-cli.lua` on UN\*X systems or +`C:\Users\`\meta{Your username}`\texmf\scripts\markdown\markdown-cli.lua` on Windows +systems. Use the command `kpsewhich -a markdown-cli.lua` to locate the Lua CLI +script file using [Kpathsea][]. + +A PDF document named `document.pdf` should be produced and contain the +following text: + +> A paragraph. +> +> - a list? +> +> A paragraph. - a list? + +##### Plain \TeX{} Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: +```` tex +\input markdown + +\markdownBegin +A paragraph. +- a list +\markdownEnd + +\def\markdownOptionBlankBeforeList{true} +\markdownBegin +A paragraph. +- not a list +\markdownEnd + +\bye +```````` +Next, invoke LuaTeX from the terminal: +``` sh +luatex document.tex +`````` +A PDF document named `document.pdf` should be produced and contain the +following text: + +> A paragraph. +> +> - a list +> +> A paragraph. - not a list + +##### \LaTeX{} Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: +```` tex +\documentclass{article} +\usepackage{markdown} +\begin{document} + +\begin{markdown} +A paragraph. +- a list +\end{markdown} + +\begin{markdown}[blankBeforeList] +A paragraph. +- not a list +\end{markdown} + +\end{document} +```````` +Next, invoke LuaTeX from the terminal: +``` sh +lualatex document.tex +`````` +A PDF document named `document.pdf` should be produced and contain the +following text: + +> A paragraph. +> +> - a list +> +> A paragraph. - not a list + +##### \Hologo{ConTeXt} Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: +```` tex +\usemodule[t][markdown] +\starttext + +\startmarkdown +A paragraph. +- a list +\stopmarkdown + +\setupmarkdown[blankBeforeList = yes] +\startmarkdown +A paragraph. +- not a list +\stopmarkdown + +\stoptext +```````` +Next, invoke LuaTeX from the terminal: +``` sh +context document.tex +`````` +A PDF document named `document.pdf` should be produced and contain the +following text: + +> A paragraph. +> +> - a list +> +> A paragraph. - not a list + +%</manual-options> +%<*tex> +% \fi +% \begin{macrocode} +\@@_add_lua_option:nnn + { blankBeforeList } + { boolean } + { false } +% \end{macrocode} +% \iffalse +%</tex> +%<*lua,lua-cli> +% \fi +% \begin{macrocode} +defaultOptions.blankBeforeList = false +% \end{macrocode} +% \par +% \iffalse +%</lua,lua-cli> +%<*manual-options> + #### Option `bracketedSpans` `bracketedSpans` (default value: `false`) @@ -3830,12 +4377,12 @@ defaultOptions.bracketedSpans = false #### Option `breakableBlockquotes` -`breakableBlockquotes` (default value: `false`) +`breakableBlockquotes` (default value: `true`) % \fi % \begin{markdown} % -% \Optitem[false]{breakableBlockquotes}{\opt{true}, \opt{false}} +% \Optitem[true]{breakableBlockquotes}{\opt{true}, \opt{false}} % : true @@ -3856,20 +4403,24 @@ following content: \input markdown \input lmfonts \def\markdownRendererHeadingOne#1{{\bf #1}\par} +\begingroup +\catcode`\%=12 +\catcode`\#=12 \directlua{ local markdown = require("markdown") local newline = [[^^J^^J]] local convert, input - convert = markdown.new() + convert = markdown.new({breakableBlockquotes = false}) input = "> A single" .. newline .. newline .. "> block quote." .. newline tex.sprint(convert(input)) - convert = markdown.new({breakableBlockquotes = true}) + convert = markdown.new() input = "> A block quote." .. newline .. newline .. "> Another block quote." .. newline tex.sprint(convert(input)) } +\endgroup \bye ``````` Then, invoke LuaTeX from the terminal: @@ -3892,8 +4443,12 @@ following content: ``` tex \input markdown \input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 \input optionfalse \input optiontrue +\endgroup \bye ``````` Using a text editor, create a text document named `content.md` with the @@ -3905,8 +4460,8 @@ following content: `````` Next, invoke LuaTeX from the terminal: ``` sh -texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex -texlua ⟨CLI pathname⟩ breakableBlockquotes=true -- content.md optiontrue.tex +texlua ⟨CLI pathname⟩ breakableBlockquotes=false -- content.md optionfalse.tex +texlua ⟨CLI pathname⟩ -- content.md optiontrue.tex luatex document.tex ``````` where \meta{CLI pathname} corresponds to the location of the Lua CLI script file, @@ -3931,6 +4486,7 @@ following content: ``` tex \input markdown +\def\markdownOptionBreakableBlockquotes{false} \markdownBegin > A single @@ -3968,17 +4524,17 @@ following content: \usepackage{markdown} \begin{document} -\begin{markdown} +\begin{markdown}[breakableBlockquotes = false] > A single > block quote. \end{markdown} -\begin{markdown*}{breakableBlockquotes} +\begin{markdown} > A block quote. > Another block quote. -\end{markdown*} +\end{markdown} \end{document} ``````` @@ -4003,6 +4559,7 @@ following content: \usemodule[t][markdown] \starttext +\setupmarkdown[breakableBlockquotes = no] \startmarkdown > A single @@ -4020,7 +4577,7 @@ following content: ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -4038,14 +4595,14 @@ following text: \@@_add_lua_option:nnn { breakableBlockquotes } { boolean } - { false } + { true } % \end{macrocode} % \iffalse %</tex> %<*lua,lua-cli> % \fi % \begin{macrocode} -defaultOptions.breakableBlockquotes = false +defaultOptions.breakableBlockquotes = true % \end{macrocode} % \par % \iffalse @@ -4099,9 +4656,9 @@ following content: The TeXbook [@knuth:tex, p. 123 and 130] is good. \end{markdown} -\begin{markdown*}{citationNbsps = false} +\begin{markdown}[citationNbsps = false] The TeXbook [@knuth:tex, p. 123 and 130] is good. -\end{markdown*} +\end{markdown} \bibliographystyle{plain} \bibliography{document.bib} @@ -4287,6 +4844,9 @@ following content: ``` tex \input markdown \input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 \directlua{ local markdown = require("markdown") local convert = markdown.new() @@ -4302,6 +4862,7 @@ following content: "``This is a quote.'' " .. "``This is another quote.''" tex.sprint(convert(input)) } +\endgroup \bye ``````` Then, invoke LuaTeX from the terminal: @@ -4322,9 +4883,13 @@ following content: ``` tex \input markdown \input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 \input optionfalse \par \input optiontrue +\endgroup \bye ``````` Using a text editor, create a text document named `content.md` with the @@ -4396,10 +4961,10 @@ following content: ``This is no longer a code span.'' \end{markdown} -\begin{markdown*}{codeSpans=false} +\begin{markdown}[codeSpans=false] ``This is a quote.'' ``This is another quote.'' -\end{markdown*} +\end{markdown} \end{document} ``````` @@ -4437,7 +5002,7 @@ following content: ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -4479,9 +5044,9 @@ defaultOptions.codeSpans = true : true : Enable the -% iA\,Writer content blocks syntax extension~[@sotkov17]: +% iA\\,Writer content blocks syntax extension~[@sotkov17]: % \iffalse - iA\,Writer content blocks syntax extension: + iA\\,Writer content blocks syntax extension: % \fi ``` md @@ -4496,7 +5061,7 @@ defaultOptions.codeSpans = true : false : Disable the - iA\,Writer content blocks syntax extension. + iA\\,Writer content blocks syntax extension. % \end{markdown} % \iffalse @@ -4601,7 +5166,7 @@ Create also a text document named `document.tex` with the following content: ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -4641,6 +5206,143 @@ defaultOptions.contentBlocks = false %</lua,lua-cli> %<*manual-options> +#### Option `contentLevel` + +`contentLevel` (default value: `block`) + +% \fi +% \begin{markdown} +% +% \Optitem[block]{contentLevel}{\opt{block}, \opt{inline}} +% +: block + + : Treat content as a sequence of blocks. + ``` md + - this is a list + - it contains two items + `````` + +: inline + + : Treat all content as inline content. + ``` md + - this is a text + - not a list + `````` + +% \end{markdown} +% \iffalse + +##### Plain \TeX{} Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: +``` tex +\input markdown +\def\markdownOptionContentLevel{inline} +\markdownBegin +- this is +- a text +\markdownEnd +\bye +``````` +Next, invoke LuaTeX from the terminal: +``` sh +luatex document.tex +`````` +A PDF document named `document.pdf` should be produced and contain the +following text: + +> \- this is - a text + +##### \LaTeX{} Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: +``` tex +\documentclass{article} +\usepackage{markdown} +\begin{document} + +\begin{markdown} +- this is +- a list +\end{markdown} + +\begin{markdown}[contentLevel=inline] +- this is +- a text +\end{markdown} + +\end{document} +``````` +Next, invoke LuaTeX from the terminal: +``` sh +lualatex document.tex +`````` +A PDF document named `document.pdf` should be produced and contain the +following text: + +> - this is +> - a list +> +> \- this is - a text + +##### \Hologo{ConTeXt} Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: +``` tex +\usemodule[t][markdown] +\starttext + +\startmarkdown +- this is +- a list +\stopmarkdown + +\setupmarkdown[contentLevel = inline] +\startmarkdown +- this is +- a text +\stopmarkdown + +\stoptext +```````` +Next, invoke LuaTeX from the terminal: +``` sh +context --luatex document.tex +````` +A PDF document named `document.pdf` should be produced and contain the +following text: + +> - this is +> - a list +> +> \- this is - a text + +%</manual-options> +%<*tex> +% \fi +% \begin{macrocode} +\@@_add_lua_option:nnn + { contentLevel } + { string } + { block } +% \end{macrocode} +% \iffalse +%</tex> +%<*lua,lua-cli> +% \fi +% \begin{macrocode} +defaultOptions.contentLevel = "block" +% \end{macrocode} +% \par +% \iffalse +%</lua,lua-cli> +%<*manual-options> + #### Option `debugExtensions` `debugExtensions` (default value: `false`) @@ -4685,7 +5387,7 @@ following content: ``` lua local strike_through = { api_version = 2, - grammar_version = 2, + grammar_version = 4, finalize_grammar = function(reader) local nonspacechar = lpeg.P(1) - lpeg.S("\t ") local doubleslashes = lpeg.P("//") @@ -4699,7 +5401,7 @@ local strike_through = { lpeg.V("Inline"), doubleslashes, doubleslashes ) / function(s) return {"\\st{", s, "}"} end - reader.insert_pattern("Inline after Emph", read_strike_through, + reader.insert_pattern("Inline after LinkAndEmph", read_strike_through, "StrikeThrough") reader.add_special_character("/") end @@ -4737,24 +5439,28 @@ be produced and contain the following text: "Block": [ "Blockquote", "Verbatim", + "FencedCode (built-in fenced_code syntax extension)", "ThematicBreak", "BulletList", "OrderedList", - "Heading", "DisplayHtml", + "Heading" + ], + "BlockOrParagraph": [ + "Block", "Paragraph", "Plain" ], + "EndlineExceptions": [ + "EndlineExceptions (built-in fenced_code syntax extension)" + ], "Inline": [ "Str", "Space", "Endline", - "UlOrStarLine", - "Strong", - "Emph", + "EndlineBreak", + "LinkAndEmph", "StrikeThrough (user-defined \"./strike-through.lua\" syntax extension)", - "Link", - "Image", "Code", "AutoLinkUrl", "AutoLinkEmail", @@ -4893,7 +5599,7 @@ Term 2 with *inline markup* ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -4931,107 +5637,6 @@ defaultOptions.definitionLists = false %</lua,lua-cli> %<*manual-options> -#### Option `eagerCache` - -`eagerCache` (default value: `true`) - -% \fi -% \begin{markdown} -% -% \Optitem[true]{eagerCache}{\opt{true}, \opt{false}} -% -: true - - : Converted markdown documents will be cached in \Opt{cacheDir}. This can be - useful for post-processing the converted documents and for recovering - historical versions of the documents from the cache. However, it also - produces a large number of auxiliary files on the disk and obscures the - output of the Lua command-line interface when it is used for plumbing. - - This behavior will always be used if the \Opt{finalizeCache} option is - enabled. - -: false - - : Converted markdown documents will not be cached. This decreases the number - of auxiliary files that we produce and makes it easier to use the Lua - command-line interface for plumbing. - - This behavior will only be used when the \Opt{finalizeCache} option is - disabled. Recursive nesting of markdown document fragments is undefined - behavior when \Opt{eagerCache} is disabled. - -% \end{markdown} -% \iffalse - -##### Lua Module Example {.unnumbered} - -Using a text editor, create a text document named `hello.md` with the -following content: -``` md -Hello *world*! -`````` -Next, invoke LuaTeX from the terminal with the \Opt{eagerCache} option -disabled: -``` sh -texlua ⟨CLI pathname⟩ eagerCache=false -- hello.md hello.tex -``````` -where \meta{CLI pathname} corresponds to the location of the Lua CLI script file, -such as `~/texmf/scripts/markdown/markdown-cli.lua` on UN\*X systems or -`C:\Users\`\meta{Your username}`\texmf\scripts\markdown\markdown-cli.lua` on Windows -systems. Use the command `kpsewhich -a markdown-cli.lua` to locate the Lua CLI -script file using [Kpathsea][]. - -A \TeX{} document named `hello.tex` should be produced and contain the -following code: -``` tex -Hello \markdownRendererEmphasis{world}!\relax -``` - -*** - -Invoke LuaTeX from the terminal again, this time with the \Opt{eagerCache} -option enabled: - -``` tex -texlua ⟨CLI pathname⟩ eagerCache=true -- hello.md hello.tex -``` - -A \TeX{} document named `hello.tex` should be produced and contain the -following code: - -``` tex -\input ./⟨hash⟩.md.tex\relax -``` - -Additionally, a \TeX{} document named `⟨hash⟩.md.tex` should be produced and -contain the following code: - -``` tex -Hello \markdownRendererEmphasis{world}!\relax -``` - -%</manual-options> -%<*tex> -% \fi -% \begin{macrocode} -\@@_add_lua_option:nnn - { eagerCache } - { boolean } - { true } -% \end{macrocode} -% \iffalse -%</tex> -%<*lua,lua-cli> -% \fi -% \begin{macrocode} -defaultOptions.eagerCache = true -% \end{macrocode} -% \par -% \iffalse -%</lua,lua-cli> -%<*manual-options> - #### Option `expectJekyllData` `expectJekyllData` (default value: `false`) @@ -5175,7 +5780,7 @@ defaultOptions.expectJekyllData = false % ``` lua % local strike_through = { % api_version = 2, -% grammar_version = 2, +% grammar_version = 4, % finalize_grammar = function(reader) % local nonspacechar = lpeg.P(1) - lpeg.S("\t ") % local doubleslashes = lpeg.P("//") @@ -5189,7 +5794,7 @@ defaultOptions.expectJekyllData = false % lpeg.V("Inline"), doubleslashes, doubleslashes % ) / function(s) return {"\\st{", s, "}"} end % -% reader.insert_pattern("Inline after Emph", read_strike_through, +% reader.insert_pattern("Inline after LinkAndEmph", read_strike_through, % "StrikeThrough") % reader.add_special_character("/") % end @@ -5210,7 +5815,7 @@ defaultOptions.expectJekyllData = false % \fi % \begin{macrocode} metadata.user_extension_api_version = 2 -metadata.grammar_version = 2 +metadata.grammar_version = 4 % \end{macrocode} % \iffalse %</lua> @@ -5218,17 +5823,17 @@ metadata.grammar_version = 2 % \fi % \begin{markdown} % -% Any changes to the syntax extension API or grammar will cause the -% corresponding current version to be incremented. After Markdown 3.0.0, -% any changes to the API and the grammar will be either backwards-compatible -% or constitute a breaking change that will cause the major version of the -% Markdown package to increment (to 4.0.0). +% Any changes to the syntax extension API or grammar will cause the +% corresponding current version to be incremented. After Markdown 3.0.0, +% any changes to the API and the grammar will be either backwards-compatible +% or constitute a breaking change that will cause the major version of the +% Markdown package to increment (to 4.0.0). % -% The `finalize_grammar` field is a function that finalizes the grammar of -% markdown using the interface of a Lua \luamref{reader} object, such as -% the \luamref{reader->insert_pattern} and -% \luamref{reader->add_special_character} methods, -% see Section <#lua-user-extensions>. +% The `finalize_grammar` field is a function that finalizes the grammar of +% markdown using the interface of a Lua \luamref{reader} object, such as +% the \luamref{reader->insert_pattern} and +% \luamref{reader->add_special_character} methods, +% see Section <#sec:lua-user-extensions>. % % \end{markdown} % \iffalse @@ -5240,7 +5845,7 @@ following content: ``` lua local strike_through = { api_version = 2, - grammar_version = 2, + grammar_version = 4, finalize_grammar = function(reader) local nonspacechar = lpeg.P(1) - lpeg.S("\t ") local doubleslashes = lpeg.P("//") @@ -5254,7 +5859,7 @@ local strike_through = { lpeg.V("Inline"), doubleslashes, doubleslashes ) / function(s) return {"\\st{", s, "}"} end - reader.insert_pattern("Inline after Emph", read_strike_through, + reader.insert_pattern("Inline after LinkAndEmph", read_strike_through, "StrikeThrough") reader.add_special_character("/") end @@ -5379,7 +5984,7 @@ c) third item ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -5411,12 +6016,12 @@ defaultOptions.fancyLists = false #### Option `fencedCode` -`fencedCode` (default value: `false`) +`fencedCode` (default value: `true`) % \fi % \begin{markdown} % -% \Optitem[false]{fencedCode}{\opt{true}, \opt{false}} +% \Optitem[true]{fencedCode}{\opt{true}, \opt{false}} % : true @@ -5455,7 +6060,7 @@ following content: ```` tex \documentclass{article} \usepackage{minted} -\usepackage[fencedCode]{markdown} +\usepackage{markdown} \begin{document} \begin{markdown} ~~~ js @@ -5489,7 +6094,7 @@ following text: > moveShip(5 * gravity, DOWN); > } > ``` -> +> > ``` html > <pre> > <code> @@ -5507,7 +6112,6 @@ Using a text editor, create a text document named `document.tex` with the following content: ```` tex \usemodule[t][markdown] -\setupmarkdown[fencedCode = yes] \definetyping [js] \definetyping [html] \setuptyping [html] [option=XML] @@ -5534,7 +6138,7 @@ if (a > 3) { ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -5544,7 +6148,7 @@ following text: > moveShip(5 * gravity, DOWN); > } > ``` -> +> > ``` html > <pre> > <code> @@ -5563,14 +6167,14 @@ following text: \@@_add_lua_option:nnn { fencedCode } { boolean } - { false } + { true } % \end{macrocode} % \iffalse %</tex> %<*lua,lua-cli> % \fi % \begin{macrocode} -defaultOptions.fencedCode = false +defaultOptions.fencedCode = true % \end{macrocode} % \par % \iffalse @@ -5873,7 +6477,7 @@ Hello *world*! ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the text “Hello *world*!” A frozen cache will also be produced in the `cache.tex` @@ -5889,9 +6493,9 @@ Hi *world*! \stopmarkdown \stoptext ``````` -Last, invoke pdfTeX without shell access from the terminal: +Last, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A new PDF document named `document.pdf` should be produced and contain the same text “Hello *world*!” Since we used the contents of the frozen cache using @@ -5947,6 +6551,9 @@ Using a text editor, create a text document named `document.tex` with the following content: ``` tex \input markdown +\begingroup +\catcode`\%=12 +\catcode`\#=12 \directlua{ local markdown = require("markdown") local firstConvert = markdown.new({finalizeCache = true, frozenCacheCounter = 0}) @@ -5954,6 +6561,7 @@ following content: local secondConvert = markdown.new({finalizeCache = true, frozenCacheCounter = 1}) local secondInput = "*world*!" tex.sprint(firstConvert(firstInput) .. [[ ]] .. secondConvert(secondInput)) } +\endgroup \bye ``````` Then, invoke LuaTeX from the terminal: @@ -5985,91 +6593,49 @@ defaultOptions.frozenCacheCounter = 0 %</lua,lua-cli> %<*manual-options> -#### Option `hardLineBreaks` +#### Option `gfmAutoIdentifiers` -`hardLineBreaks` (default value: `false`) +`gfmAutoIdentifiers` (default value: `false`) % \fi % \begin{markdown} -% -% \Optitem[false]{hardLineBreaks}{\opt{true}, \opt{false}} +% \Optitem[false]{gfmAutoIdentifiers}{\opt{true}, \opt{false}} % : true - : Interpret all newlines within a paragraph as hard line breaks instead - of spaces. + : Enable the Pandoc [GitHub-flavored auto identifiers syntax extension][pandoc-gfm-auto-identifiers]: -: false - - : Interpret all newlines within a paragraph as spaces. - -% \end{markdown} -% \iffalse - -##### \LaTeX{} Example {.unnumbered} + ``` md + The following heading received the identifier `123-sesame-street`: -Using a text editor, create a text document named `document.tex` with the -following content: -``` tex -\documentclass{article} -\usepackage{markdown} -\begin{document} + # 123 Sesame Street + `````` -\begin{markdown} -'Twas brillig, and the slithy toves -Did gyre and gimble in the wabe; -All mimsy were the borogoves, -And the mome raths outgrabe. -\end{markdown} + false -\begin{markdown*}{hardLineBreaks} -'Twas brillig, and the slithy toves -Did gyre and gimble in the wabe; -All mimsy were the borogoves, -And the mome raths outgrabe. -\end{markdown*} + : Disable the Pandoc GitHub-flavored auto identifiers syntax extension. -\end{document} -``````` -Next, invoke LuaTeX from the terminal: -``` sh -lualatex document.tex -`````` -A PDF document named `document.pdf` should be produced and contain the -following text: +See also the option \Opt{autoIdentifiers}. -> 'Twas brillig, and the slithy toves -> Did gyre and gimble in the wabe; -> All mimsy were the borogoves, -> And the mome raths outgrabe. -> -> 'Twas brillig, and the slithy toves -> Did gyre and gimble in the wabe; -> All mimsy were the borogoves, -> And the mome raths outgrabe. + [pandoc-gfm-auto-identifiers]: https://pandoc.org/MANUAL.html#extension-gfm_auto_identifiers +% \end{markdown} +% \iffalse %</manual-options> %<*tex> % \fi % \begin{macrocode} \@@_add_lua_option:nnn - { hardLineBreaks } + { gfmAutoIdentifiers } { boolean } { false } % \end{macrocode} -% \begin{markdown} -% -% The hardLineBreaks option has been deprecated and will be removed in -% Markdown 3.0.0. From then on, all line breaks within a paragraph will -% be interpreted as soft line breaks. -% -% \end{markdown} % \iffalse %</tex> %<*lua,lua-cli> % \fi % \begin{macrocode} -defaultOptions.hardLineBreaks = false +defaultOptions.gfmAutoIdentifiers = false % \end{macrocode} % \par % \iffalse @@ -6119,11 +6685,11 @@ following content: #. Parish \end{markdown} -\begin{markdown*}{hashEnumerators} +\begin{markdown}[hashEnumerators] #. Bird #. McHale #. Parish -\end{markdown*} +\end{markdown} \end{document} ``````` @@ -6170,7 +6736,7 @@ following content: ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -6258,12 +6824,12 @@ defaultOptions.headerAttributes = false #### Option `html` -`html` (default value: `false`) +`html` (default value: `true`) % \fi % \begin{markdown} % -% \Optitem[false]{html}{\opt{true}, \opt{false}} +% \Optitem[true]{html}{\opt{true}, \opt{false}} % : true @@ -6288,9 +6854,12 @@ following content: ``` tex \input markdown \input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 \directlua{ local markdown = require("markdown") - local convert = markdown.new() + local convert = markdown.new({html = false}) local newline = [[^^J^^J]] local input = "<div>*There is no block tag support.*</div>" .. newline .. @@ -6301,13 +6870,14 @@ following content: \par \directlua{ local markdown = require("markdown") - local convert = markdown.new({html = true}) + local convert = markdown.new() local input = "<div>*There is block tag support.*</div>" .. newline .. "*There is <inline tag="tag"></inline> support.*" .. newline .. "_There is <!-- comment --> support._" .. newline .. "_There is <? HTML instruction ?> support._" tex.sprint(convert(input)) } +\endgroup \bye ``````` Then, invoke LuaTeX from the terminal: @@ -6331,9 +6901,13 @@ following content: ``` tex \input markdown \input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 \input optionfalse \par \input optiontrue +\endgroup \bye ``````` Using a text editor, create a text document named `content.md` with the @@ -6348,8 +6922,8 @@ _Is there <? HTML instruction ?> support?_ ```````` Next, invoke LuaTeX from the terminal: ``` sh -texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex -texlua ⟨CLI pathname⟩ html=true -- content.md optiontrue.tex +texlua ⟨CLI pathname⟩ html=false -- content.md optionfalse.tex +texlua ⟨CLI pathname⟩ -- content.md optiontrue.tex luatex document.tex ``````` where \meta{CLI pathname} corresponds to the location of the Lua CLI script file, @@ -6376,6 +6950,7 @@ following content: \input markdown \input lmfonts +\def\markdownOptionHtml{false} \markdownBegin <div> *There is no block tag support.* @@ -6420,7 +6995,7 @@ following content: \usepackage{markdown} \begin{document} -\begin{markdown} +\begin{markdown}[html = false] <div> *There is no block tag support.* </div> @@ -6429,14 +7004,14 @@ _There is no <!-- comment --> support._ _There is no <? HTML instruction ?> support._ \end{markdown} -\begin{markdown*}{html} +\begin{markdown} <div> *There is block tag support.* </div> *There is <inline tag="tag"></inline> support.* _There is <!-- comment --> support._ _There is <? HTML instruction ?> support._ -\end{markdown*} +\end{markdown} \end{document} ``````` @@ -6462,6 +7037,7 @@ following content: \usemodule[t][markdown] \starttext +\setupmarkdown[html = no] \startmarkdown <div> *There is no block tag support.* @@ -6485,7 +7061,7 @@ _There is <? HTML instruction ?> support._ ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -6504,14 +7080,14 @@ following text: \@@_add_lua_option:nnn { html } { boolean } - { false } + { true } % \end{macrocode} % \iffalse %</tex> %<*lua,lua-cli> % \fi % \begin{macrocode} -defaultOptions.html = false +defaultOptions.html = true % \end{macrocode} % \par % \iffalse @@ -6552,6 +7128,9 @@ following content: ``` tex \input markdown \input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 \directlua{ local markdown = require("markdown") local input, convert_safe, convert_unsafe, paragraph @@ -6566,6 +7145,7 @@ following content: convert_unsafe(input) ) } +\endgroup \bye ``````` Then, invoke LuaTeX from the terminal: @@ -6588,10 +7168,11 @@ following content: ``` tex \input markdown \input lmfonts -\input optionfalse - \begingroup \catcode`\%=12 +\catcode`\#=12 +\input optionfalse +\par \input optiontrue \endgroup \bye @@ -6667,9 +7248,9 @@ following content: $\sqrt{-1}$ *equals* $i$. \end{markdown} -\begin{markdown*}{hybrid} +\begin{markdown}[hybrid] $\sqrt{-1}$ *equals* $i$. -\end{markdown*} +\end{markdown} \end{document} ``````` @@ -6707,7 +7288,7 @@ $\sqrt{-1}$ *equals* $i$. ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -6906,7 +7487,7 @@ move down to type the note.] ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -6918,18 +7499,8 @@ following text: %</manual-options> %<*tex> % \fi -% \begin{markdown} -% -% The inlineFootnotes option has been deprecated and will be removed in -% Markdown 3.0.0. -% -% \end{markdown} % \begin{macrocode} \@@_add_lua_option:nnn - { inlineFootnotes } - { boolean } - { false } -\@@_add_lua_option:nnn { inlineNotes } { boolean } { false } @@ -6939,7 +7510,6 @@ following text: %<*lua,lua-cli> % \fi % \begin{macrocode} -defaultOptions.inlineFootnotes = false defaultOptions.inlineNotes = false % \end{macrocode} % \par @@ -7086,7 +7656,7 @@ age: 99 ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -7315,7 +7885,7 @@ following content: ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -7346,6 +7916,77 @@ defaultOptions.lineBlocks = false %</lua,lua-cli> %<*manual-options> +#### Option `mark` + +`mark` (default value: `false`) + +% \fi +% \begin{markdown} +% +% \Optitem[false]{mark}{\opt{true}, \opt{false}} +% +: true + + : Enable the Pandoc [mark syntax extension][pandoc-mark]: + + ``` md + This ==is highlighted text.== + `````` + +: false + + : Disable the Pandoc mark syntax extension. + + [pandoc-mark]: https://pandoc.org/MANUAL.html#extension-mark + +% \end{markdown} +% \iffalse + +##### \LaTeX{} Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: +``` tex +\documentclass{article} +\usepackage[mark]{markdown} +\begin{document} +\begin{markdown} + +This ==is highlighted text.== + +\end{markdown} +\end{document} +``````` +Next, invoke LuaTeX from the terminal: +``` sh +lualatex document.tex +`````` +A PDF document named `document.pdf` should be produced and contain the +following text: + +> This <mark>is highlighted text.</mark> + +%</manual-options> +%<*tex> +% \fi +% \begin{macrocode} +\@@_add_lua_option:nnn + { mark } + { boolean } + { false } +% \end{macrocode} +% \iffalse +%</tex> +%<*lua,lua-cli> +% \fi +% \begin{macrocode} +defaultOptions.mark = false +% \end{macrocode} +% \par +% \iffalse +%</lua,lua-cli> +%<*manual-options> + #### Option `notes` `notes` (default value: `false`) @@ -7473,7 +8114,7 @@ isn't indented. ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -7499,18 +8140,8 @@ following text: %</manual-options> %<*tex> % \fi -% \begin{markdown} -% -% The footnotes option has been deprecated and will be removed in -% Markdown 3.0.0. -% -% \end{markdown} % \begin{macrocode} \@@_add_lua_option:nnn - { footnotes } - { boolean } - { false } -\@@_add_lua_option:nnn { notes } { boolean } { false } @@ -7520,7 +8151,6 @@ following text: %<*lua,lua-cli> % \fi % \begin{macrocode} -defaultOptions.footnotes = false defaultOptions.notes = false % \end{macrocode} % \par @@ -7605,7 +8235,7 @@ following content: ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -7639,12 +8269,12 @@ defaultOptions.pipeTables = false #### Option `preserveTabs` -`preserveTabs` (default value: `false`) +`preserveTabs` (default value: `true`) % \fi % \begin{markdown} % -% \Optitem[false]{preserveTabs}{\opt{true}, \opt{false}} +% \Optitem[true]{preserveTabs}{\opt{true}, \opt{false}} % : true @@ -7663,14 +8293,14 @@ defaultOptions.pipeTables = false \@@_add_lua_option:nnn { preserveTabs } { boolean } - { false } + { true } % \end{macrocode} % \iffalse %</tex> %<*lua,lua-cli> % \fi % \begin{macrocode} -defaultOptions.preserveTabs = false +defaultOptions.preserveTabs = true % \end{macrocode} % \par % \iffalse @@ -7765,7 +8395,7 @@ following text: %<*lua,lua-cli> % \fi % \begin{macrocode} -defaultOptions.rawAttribute = true +defaultOptions.rawAttribute = false % \end{macrocode} % \par % \iffalse @@ -7971,7 +8601,7 @@ following content: ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -8181,7 +8811,7 @@ following content: ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -8246,8 +8876,11 @@ Using a text editor, create a text document named `document.tex` with the following content: ``` tex \input markdown -\def\markdownRendererEllipsis{. . .} \input lmfonts +\def\markdownRendererEllipsis{. . .} +\begingroup +\catcode`\%=12 +\catcode`\#=12 \directlua{ local markdown = require("markdown") local convert = markdown.new() @@ -8259,6 +8892,7 @@ following content: local convert = markdown.new({smartEllipses = true}) local input = "... and this is a victorian ellipsis." tex.sprint(convert(input)) } +\endgroup \bye ``````` Then, invoke LuaTeX from the terminal: @@ -8278,11 +8912,15 @@ Using a text editor, create a text document named `document.tex` with the following content: ``` tex \input markdown -\def\markdownRendererEllipsis{. . .} \input lmfonts +\def\markdownRendererEllipsis{. . .} +\begingroup +\catcode`\%=12 +\catcode`\#=12 \input optionfalse \par \input optiontrue +\endgroup \bye ``````` Using a text editor, create a text document named `content.md` with the @@ -8357,9 +8995,9 @@ following content: These are just three regular dots ... \end{markdown} -\begin{markdown*}{smartEllipses} +\begin{markdown}[smartEllipses] ... and this is a victorian ellipsis. -\end{markdown*} +\end{markdown} \end{document} ``````` @@ -8396,7 +9034,7 @@ These are just three regular dots ... ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -8466,14 +9104,14 @@ The following list respects the numbers specified in the markup: 5. fifth item \end{markdown} -\begin{markdown*}{startNumber=false} +\begin{markdown}[startNumber=false] The following list does not respect the numbers specified in the markup: 3. third item 4. fourth item 5. fifth item -\end{markdown*} +\end{markdown} \end{document} ``````` @@ -8524,7 +9162,7 @@ The following list respects the numbers specified in the markup: ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -8656,7 +9294,7 @@ This is ~~a lunar roving vehicle~~ strike-through text. ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -8771,7 +9409,7 @@ following content: ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the text “Hello *world*!” @@ -8861,7 +9499,7 @@ H~2~O is a liquid. ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -8953,7 +9591,7 @@ following content: ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -8981,7 +9619,132 @@ defaultOptions.superscripts = false %</lua,lua-cli> %<*manual-options> -#### Option `tableCaptions` +#### Option `tableAttributes` + +`tableAttributes` (default value: `false`) + +% \fi +% \begin{markdown} +% +% \Optitem[false]{tableAttributes}{\opt{true}, \opt{false}} +% +: true + + : Enable the assignment of HTML attributes to +% table captions (see the \Opt{tableCaptions} option). +% \iffalse + [table captions](#table-captions). +% \fi + + ``` md + | Right | Left | Default | Center | + |------:|:-----|---------|:------:| + | 12 | 12 | 12 | 12 | + | 123 | 123 | 123 | 123 | + | 1 | 1 | 1 | 1 | + + : Demonstration of pipe table syntax. {#example-table} + ``` + +: false + + : Disable the assignment of HTML attributes to table captions. + +% \end{markdown} +% \iffalse + +##### \LaTeX{} Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: +``` tex +\documentclass{article} +\usepackage[ + pipeTables, + tableCaptions, + tableAttributes, + relativeReferences, +]{markdown} +\usepackage{expl3} +\ExplSyntaxOn +\markdownSetup{ + renderers = { + tableAttributeContextBegin = { + \group_begin: + \markdownSetup{ + renderers = { + attributeIdentifier = { + \markdownSetup{ + renderers = { + tableAttributeContextEnd = { + \label{##1} + \group_end: + }, + }, + } + }, + }, + } + }, + tableAttributeContextEnd = { + \group_end: + }, + }, +} +\ExplSyntaxOff +\begin{document} +\begin{markdown} +See Table <#example-table>. + +| Right | Left | Default | Center | +|------:|:-----|---------|:------:| +| 12 | 12 | 12 | 12 | +| 123 | 123 | 123 | 123 | +| 1 | 1 | 1 | 1 | + + : Demonstration of pipe table syntax. {#example-table} +\end{markdown} +\end{document} +``````` +Next, invoke LuaTeX from the terminal: +``` sh +lualatex document.tex +`````` +A PDF document named `document.pdf` should be produced and contain the +following text: + +> See Table 1. +> +> | Right | Left | Default | Center | +> |------:|:-----|---------|:------:| +> | 12 | 12 | 12 | 12 | +> | 123 | 123 | 123 | 123 | +> | 1 | 1 | 1 | 1 | +> +> : Table 1. Demonstration of pipe table syntax. + +%</manual-options> +%<*tex> +% \fi +% \begin{macrocode} +\@@_add_lua_option:nnn + { tableAttributes } + { boolean } + { false } +% \end{macrocode} +% \iffalse +%</tex> +%<*lua,lua-cli> +% \fi +% \begin{macrocode} +defaultOptions.tableAttributes = false +% \end{macrocode} +% \par +% \iffalse +%</lua,lua-cli> +%<*manual-options> + +#### Option `tableCaptions` {#table-captions} `tableCaptions` (default value: `false`) @@ -9077,7 +9840,7 @@ following content: ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -9194,7 +9957,7 @@ following content: ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -9314,7 +10077,7 @@ Hel% this is a comment ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the text “Hello *world*!” @@ -9376,6 +10139,9 @@ following content: ``` tex \input markdown \input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 \directlua{ local markdown = require("markdown") local newline = [[^^J^^J]] @@ -9384,6 +10150,7 @@ following content: [[$E=mc^2$]] .. newline .. newline .. [[$$\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx$$]] tex.sprint(convert(input)) } +\endgroup \bye ``````` Then, invoke LuaTeX from the terminal: @@ -9404,9 +10171,13 @@ following content: ``` tex \input markdown \input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 \input optionfalse \par \input optiontrue +\endgroup \bye ``````` Using a text editor, create a text document named `content.md` with the @@ -9432,11 +10203,11 @@ A PDF document named `document.pdf` should be produced and contain the following text: > \$E=mc^2\$ -> +> > \$\$\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx\$\$ > > $E=mc^2$ -> +> > $$\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx$$ ##### Plain \TeX{} Example {.unnumbered} @@ -9513,7 +10284,7 @@ $$\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^ ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -9579,6 +10350,9 @@ following content: ``` tex \input markdown \input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 \directlua{ local markdown = require("markdown") local newline = [[^^J^^J]] @@ -9587,6 +10361,7 @@ following content: [[\\(E=mc^2\\)]] .. newline .. newline .. [[\\[\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx\\]]] tex.sprint(convert(input)) } +\endgroup \bye ``````` Then, invoke LuaTeX from the terminal: @@ -9607,9 +10382,13 @@ following content: ``` tex \input markdown \input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 \input optionfalse \par \input optiontrue +\endgroup \bye ``````` Using a text editor, create a text document named `content.md` with the @@ -9635,11 +10414,11 @@ A PDF document named `document.pdf` should be produced and contain the following text: > \\\(E=mc^2\\) -> +> > \\\[\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx\\] > > \\(E=mc^2\\) -> +> > \\[\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx\\] ##### Plain \TeX{} Example {.unnumbered} @@ -9716,7 +10495,7 @@ following content: ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -9782,6 +10561,9 @@ following content: ``` tex \input markdown \input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 \directlua{ local markdown = require("markdown") local newline = [[^^J^^J]] @@ -9790,6 +10572,7 @@ following content: [[\(E=mc^2\)]] .. newline .. newline .. [[\[\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx\]]] tex.sprint(convert(input)) } +\endgroup \bye ``````` Then, invoke LuaTeX from the terminal: @@ -9810,9 +10593,13 @@ following content: ``` tex \input markdown \input lmfonts +\begingroup +\catcode`\%=12 +\catcode`\#=12 \input optionfalse \par \input optiontrue +\endgroup \bye ``````` Using a text editor, create a text document named `content.md` with the @@ -9838,11 +10625,11 @@ A PDF document named `document.pdf` should be produced and contain the following text: > (E=mc^2) -> +> > [\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx] > > \(E=mc^2\) -> +> > \[\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx\] ##### Plain \TeX{} Example {.unnumbered} @@ -9919,7 +10706,7 @@ following content: ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -10010,13 +10797,13 @@ The following list is loose: - third item \end{markdown} -\begin{markdown*}{tightLists=false} +\begin{markdown}[tightLists=false] The following list is now also loose: - first item - second item - third item -\end{markdown*} +\end{markdown} \end{document} ``````` @@ -10143,9 +10930,9 @@ following content: This is _emphasized text_ and this is a math subscript: $m\_n$. \end{markdown} -\begin{markdown*}{underscores=false} +\begin{markdown}[underscores=false] This is *emphasized text* and this is a math subscript: $m_n$. -\end{markdown*} +\end{markdown} \end{document} ``````` @@ -10182,7 +10969,7 @@ This is *emphasized text* and this is a math subscript: $m_n$. ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -10468,6 +11255,7 @@ end % Plain \TeX{} Interface {#texinterface} %------------------------ % +% \end{markdown} % \iffalse %</tex> %<*manual-interfaces> @@ -10494,7 +11282,7 @@ following content: $\sqrt{-1}$ *equals* $i$. \markdownEnd -\def\markdownOptionHybrid{true} +\def\markdownOptionTexMathDollars{true} \markdownBegin $\sqrt{-1}$ *equals* $i$. \markdownEnd @@ -10522,6 +11310,7 @@ pdftex --shell-escape document.tex %</manual-interfaces> %<*tex> % \fi +% \begin{markdown} % % The plain \TeX{} interface provides macros for the typesetting of markdown % input from within plain \TeX{}, for setting the Lua interface options (see @@ -10605,9 +11394,11 @@ pdftex --shell-escape document.tex % \bye % ``````` % -% The \mref{markdownInput} macro accepts a single parameter with the filename -% of a markdown document and expands to the result of the conversion of the -% input markdown document to plain \TeX{}. +% You can use the \mref{markdownInput} macro to include markdown documents, +% similarly to how you might use the \mref{input} \TeX{} primitive to include +% \TeX{} documents. The \mref{markdownInput} macro accepts a single parameter +% with the filename of a markdown document and expands to the result of the +% conversion of the input markdown document to plain \TeX{}. % % \end{markdown} % \begin{macrocode} @@ -10648,12 +11439,33 @@ pdftex --shell-escape document.tex % Section <#sec:lua-options>), while some of them are specific to the plain % \TeX{} interface. % +% To determine whether plain \TeX{} is the top layer or if there are other +% layers above plain \TeX{}, we take a look on whether the +% \mdef{c_@@_top_layer_tl} token list has already been defined. If not, +% we will assume that plain \TeX{} is the top layer. +% +% \end{markdown} +% \begin{macrocode} +\ExplSyntaxOn +\tl_const:Nn \c_@@_option_layer_plain_tex_tl { plain_tex } +\cs_generate_variant:Nn + \tl_const:Nn + { NV } +\tl_if_exist:NF + \c_@@_top_layer_tl + { + \tl_const:NV + \c_@@_top_layer_tl + \c_@@_option_layer_plain_tex_tl + } +% \end{macrocode} +% \begin{markdown} +% % To enable the enumeration of plain \TeX{} options, we will maintain the % \mdef{g_\@\@_plain_tex_options_seq} sequence. % % \end{markdown} % \begin{macrocode} -\ExplSyntaxOn \seq_new:N \g_@@_plain_tex_options_seq % \end{macrocode} % \begin{markdown} @@ -10666,7 +11478,6 @@ pdftex --shell-escape document.tex % \begin{macrocode} \prop_new:N \g_@@_plain_tex_option_types_prop \prop_new:N \g_@@_default_plain_tex_options_prop -\tl_const:Nn \c_@@_option_layer_plain_tex_tl { plain_tex } \seq_gput_right:NV \g_@@_option_layers_seq \c_@@_option_layer_plain_tex_tl \cs_new:Nn \@@_add_plain_tex_option:nnn @@ -10705,6 +11516,90 @@ following code in your plain \TeX{} document: % \par % \begin{markdown} % +% The plain \TeX{} options may be also be specified via the \mdef{markdownSetup} +% macro. Here, the plain \TeX{} options are represented by a comma-delimited +% list of \meta{key}`=`\meta{value} pairs. For boolean options, the +% `=`\meta{value} part is optional, and \meta{key} will be interpreted as +% \meta{key}`=true` if the `=`\meta{value} part has been omitted. +% The \mref{markdownSetup} macro receives the options to set up as its only +% argument. +% +% \end{markdown} +% \begin{macrocode} +\cs_new:Nn + \@@_setup:n + { + \keys_set:nn + { markdown/options } + { #1 } + } +\cs_gset_eq:NN + \markdownSetup + \@@_setup:n +% \end{macrocode} +% \iffalse +%</tex> +%<*manual-options> + +Alternatively, you can also set plain \TeX{} options using the `\markdownSetup` +\TeX{} macro. For example, to set the \Opt{taskLists} Lua option to `true`, +you would include the following code in your plain \TeX{} document: + +``` tex +\markdownSetup{taskLists = true} +``` + +%</manual-options> +%<*tex> +% \fi +% \par +% \begin{markdown} +% +% The +% \mdef{markdownIfOption}`{`\meta{name}`}{`\meta{iftrue}`}{`\meta{iffalse}`}` +% macro is provided for testing, whether the value of +% `\markdownOption`\meta{name} is `true`. If the value is `true`, then +% \meta{iftrue} is expanded, otherwise \meta{iffalse} is expanded. +% +% \end{markdown} +% \begin{macrocode} +\prg_new_conditional:Nnn + \@@_if_option:n + { TF, T, F } + { + \@@_get_option_type:nN + { #1 } + \l_tmpa_tl + \str_if_eq:NNF + \l_tmpa_tl + \c_@@_option_type_boolean_tl + { + \msg_error:nnxx + { markdown } + { expected-boolean-option } + { #1 } + { \l_tmpa_tl } + } + \@@_get_option_value:nN + { #1 } + \l_tmpa_tl + \str_if_eq:NNTF + \l_tmpa_tl + \c_@@_option_value_true_tl + { \prg_return_true: } + { \prg_return_false: } + } +\msg_new:nnn + { markdown } + { expected-boolean-option } + { + Option~#1~has~type~#2,~ + but~a~boolean~was~expected. + } +\let\markdownIfOption=\@@_if_option:nTF +% \end{macrocode} +% \begin{markdown} +% %#### Finalizing and Freezing the Cache % The \mdef{markdownOptionFinalizeCache} option corresponds to the Lua % interface \Opt{finalizeCache} option, which creates an output file @@ -10777,11 +11672,9 @@ For more information, see the examples for the \Opt{finalizeCache} option. % \fi % \begin{markdown} % -% The \mdef{markdownOptionHelperScriptFileName} macro sets the filename of the -% helper Lua script file that is created during the conversion from markdown to -% plain \TeX{} in \TeX{} engines without the `\directlua` primitive. It -% defaults to `\jobname.markdown.lua`, where `\jobname` is the base name -% of the document being typeset. +% The \mdef{markdownOptionInputTempFileName} macro sets the filename of the +% temporary input file that is created during the buffering of markdown text +% from a \TeX{} source. It defaults to `\jobname.markdown.in`. % % The expansion of this macro must not contain quotation marks (`"`) or % backslash symbols (`\`). Mind that \TeX{} engines tend to @@ -10790,140 +11683,311 @@ For more information, see the examples for the \Opt{finalizeCache} option. % \end{markdown} % \begin{macrocode} \@@_add_plain_tex_option:nnn - { helperScriptFileName } + { inputTempFileName } { path } - { \jobname.markdown.lua } + { \jobname.markdown.in } % \end{macrocode} % \par % \begin{markdown} % -% The \Opt{helperScriptFileName} macro has been deprecated and -% will be removed in Markdown 3.0.0. To control the filename of the helper Lua -% script file, use the `\g_luabridge_helper_script_filename_str` macro from the -% \pkg{lt3luabridge} package. +% The \mdef{markdownOptionOutputDir} macro sets the path to the directory that +% will contain the auxiliary cache files produced by the Lua implementation and +% also the auxiliary files produced by the plain \TeX{} implementation. The +% option defaults to `.` or, since \TeX{} Live 2024, to the value of the +% `-output-directory` option of your \TeX{} engine. % -% \end{markdown} -% \begin{macrocode} -\str_new:N - \g_luabridge_helper_script_filename_str -\tl_gset:Nn - \g_luabridge_helper_script_filename_str - { \markdownOptionHelperScriptFileName } -% \end{macrocode} -% \begin{markdown} +% The path must be set to the same value as the `-output-directory` option of +% your \TeX{} engine for the package to function correctly. We need this macro +% to make the Lua implementation aware where it should store the helper files. +% The same limitations apply here as in the case of the +% \Opt{inputTempFileName} macro. % -% The \mdef{markdownOptionInputTempFileName} macro sets the filename of the -% temporary input file that is created during the buffering of markdown text -% from a \TeX{} source. It defaults to `\jobname.markdown.in`. The same -% limitations as in the case of the \Opt{helperScriptFileName} -% macro apply here. +% The \mref{markdownOptionOutputDir} macro has been deprecated and will be +% removed in the next major version of the Markdown package. <!-- After the +% macro has been removed, we should remove support for TeX Live 2023 and +% earlier, where the automatic detection does not work. --> % % \end{markdown} % \begin{macrocode} -\@@_add_plain_tex_option:nnn - { inputTempFileName } - { path } - { \jobname.markdown.in } +\cs_generate_variant:Nn + \@@_add_plain_tex_option:nnn + { nnV } % \end{macrocode} -% \par % \begin{markdown} % -% The \mdef{markdownOptionOutputTempFileName} macro sets the filename of the -% temporary output file that is created during the conversion from markdown to -% plain \TeX{} in \mref{markdownMode} other than `2` It defaults to -% `\jobname.markdown.out`. The same limitations apply here as in the case -% of the \Opt{helperScriptFileName} macro. +% Use the \pkg{lt3luabridge} library to determine the default value of the +% \mref{markdownOptionOutputDir} macro by using the environmental variable +% `TEXMF_OUTPUT_DIRECTORY` that is available since TeX~Live 2024. % % \end{markdown} % \begin{macrocode} -\@@_add_plain_tex_option:nnn - { outputTempFileName } +\ExplSyntaxOff +\input lt3luabridge.tex +\ExplSyntaxOn +\bool_if:nTF + { + \cs_if_exist_p:N + \luabridge_tl_set:Nn && + ( + \int_compare_p:nNn + { \g_luabridge_method_int } + = + { \c_luabridge_method_directlua_int } || + \sys_if_shell_unrestricted_p: + ) + } + { + \luabridge_tl_set:Nn + \l_tmpa_tl + { print(os.getenv("TEXMF_OUTPUT_DIRECTORY") or ".") } + } + { + \tl_set:Nn + \l_tmpa_tl + { . } + } +\@@_add_plain_tex_option:nnV + { outputDir } { path } - { \jobname.markdown.out } + \l_tmpa_tl % \end{macrocode} -% \par +% \iffalse +%</tex> +%<*manual-options> + +The plain \TeX{} interface provides the following commands that you can use to +specify the location of temporary files produced during the conversion from +Markdown to \TeX{}: + +- `\markdownOptionInputTempFileName`, +- `\markdownOptionOutputDir`, +- `\markdownOptionCacheDir`, and +- `\markdownOptionFrozenCacheFileName`. + +The `\markdownOptionCacheDir` and `\markdownOptionFrozenCacheFileName` commands +correspond to the `cacheDir` and `frozenCacheFileName` Lua options. + +Using a text editor, create a folder named `output-directory` and a text +document named `document.tex` with the following content: +``` tex +\input lmfonts +\input markdown +\def\markdownOptionInputTempFileName{temporary-input.md} +\def\markdownOptionOutputDir{output-directory} +\def\markdownOptionCacheDir{output-directory/cache-directory} +\def\markdownOptionEagerCache{true} +\def\markdownOptionFinalizeCache{true} +\def\markdownOptionFrozenCacheFileName{output-directory/cache-directory/frozen-cache.tex} +\markdownBegin +Hello *world*! +\markdownEnd +\bye +``````` +Next, invoke LuaTeX from the terminal: +``` sh +luatex --output-directory output-directory document.tex +`````` +A text document named `temporary-input.md` should be produced in the folder +named `output-directory` and contain the following text: + +> Hello \*world\*! + +A folder named `output-directory/cache-directory` should also be produced and +contain fragments of the converted markdown document. LuaTeX does not need +other temporary files to perform the conversion from markdown to \TeX{}. To +produce the remaining temporary files, invoke pdfTeX from the terminal: +``` sh +pdftex --output-directory output-directory --shell-escape document.tex +`````` +Text document named `temporary-output.md` should be produced in the folder +named `output-directory`. The document will contain the input markdown +document converted to \TeX{}. + +% \fi % \begin{markdown} -% -% The \Opt{outputTempFileName} macro has been deprecated and -% will be removed in Markdown 3.0.0. -% + +#### No default token renderer prototypes {#plain} + +The Markdown package provides default definitions for token renderer prototypes +using the `witiko/markdown/defaults` +% theme (see Section~<sec:#themes>). +% \iffalse +theme. +% \fi +Although these default definitions provide a useful starting point for authors, +they use extra resources, especially with higher-level \TeX{} formats such as +\LaTeX{} and \Hologo{ConTeXt}. Furthermore, the default definitions may change +at any time, which may pose a problem for maintainers of Markdown themes and +templates who may require a stable output. + +The \mdef{markdownOptionPlain} macro specifies whether higher-level \TeX{} +formats should only use the plain \TeX{} default definitions or whether they +should also use the format-specific default definitions. Whereas plain \TeX{} +default definitions only provide definitions for simple elements such as +emphasis, strong emphasis, and paragraph separators, format-specific default +definitions add support for more complex elements such as lists, tables, and +citations. On the flip side, plain \TeX{} default definitions load no extra +resources and are rather stable, whereas format-specific default definitions +load extra resources and are subject to a more rapid change. + +Here is how you would enable the macro in a \LaTeX{} document: + +``` tex +\usepackage[plain]{markdown} +``````` + +Here is how you would enable the macro in a \Hologo{ConTeXt} document: + +``` tex +\def\markdownOptionPlain{true} +\usemodule[t][markdown] +``````` + +The macro must be set before or during the loading of the package. Setting the +macro after loading the package has no effect. + % \end{markdown} +% \iffalse +%</manual-options> +%<*tex> +% \fi % \begin{macrocode} -\str_new:N - \g_luabridge_standard_output_filename_str -\tl_gset:Nn - \g_luabridge_standard_output_filename_str - { \markdownOptionOutputTempFileName } +\@@_add_plain_tex_option:nnn + { plain } + { boolean } + { false } % \end{macrocode} +% \iffalse +%</tex> +%<*manual-options> +% \fi % \begin{markdown} -% -% The \mdef{markdownOptionErrorTempFileName} macro sets the filename of the -% temporary output file that is created when a Lua error is encountered during -% the conversion from markdown to plain \TeX{} in \mref{markdownMode} other than -% `2`. It defaults to `\jobname.markdown.err`. The same limitations -% apply here as in the case of the \Opt{helperScriptFileName} -% macro. -% + +The \mdef{markdownOptionNoDefaults} macro specifies whether we should prevent +the loading of default definitions or not. This is useful in contexts, where +we want to have total control over how all elements are rendered. + +Here is how you would enable the macro in a \LaTeX{} document: + +``` tex +\usepackage[noDefaults]{markdown} +``````` + +Here is how you would enable the macro in a \Hologo{ConTeXt} document: + +``` tex +\def\markdownOptionNoDefaults{true} +\usemodule[t][markdown] +``````` + +The macro must be set before or during the loading of the package. Setting the +macro after loading the package has no effect. + % \end{markdown} +% \iffalse +%</manual-options> +%<*tex> +% \fi % \begin{macrocode} \@@_add_plain_tex_option:nnn - { errorTempFileName } - { path } - { \jobname.markdown.err } + { noDefaults } + { boolean } + { false } % \end{macrocode} -% \par % \begin{markdown} % -% The \Opt{errorTempFileName} macro has been deprecated and -% will be removed in Markdown 3.0.0. To control the filename of the temporary -% file for Lua errors, use the `\g_luabridge_error_output_filename_str` macro -% from the \pkg{lt3luabridge} package. +%#### Miscellaneous Options +% +% The \mdef{markdownOptionStripPercentSigns} macro controls whether a percent +% sign (`\%`) at the beginning of a line will be discarded when buffering +% Markdown input (see Section <#sec:buffering>) or not. Notably, this +% enables the use of markdown when writing \TeX{} package documentation using +% the \pkg{Doc} \LaTeX{}~package~[@mittelbach17] or similar. The recognized +% values of the macro are `true` (discard) and `false` (retain). It defaults +% to `false`. % % \end{markdown} % \begin{macrocode} -\str_new:N - \g_luabridge_error_output_filename_str -\tl_gset:Nn - \g_luabridge_error_output_filename_str - { \markdownOptionErrorTempFileName } +\seq_gput_right:Nn + \g_@@_plain_tex_options_seq + { stripPercentSigns } +\prop_gput:Nnn + \g_@@_plain_tex_option_types_prop + { stripPercentSigns } + { boolean } +\prop_gput:Nnx + \g_@@_default_plain_tex_options_prop + { stripPercentSigns } + { false } % \end{macrocode} +% \iffalse +%</tex> +%<*manual-options> + +#### Package Documentation + +The \mdef{markdownOptionStripPercentSigns} macro controls whether a percent +sign (`\%`) at the beginning of a line will be discarded when reading Markdown +input from a \TeX{} document. This enables the use of markdown when writing +\TeX{} package documentation using the [Doc \LaTeX{} package][doc] by Frank +Mittelbach. The recognized values of the macro are `true` (discard) and `false` +(retain). It defaults to `false`. + + [doc]: https://ctan.org/pkg/doc (doc – Format LaTeX documentation) + +Using a text editor, create a text document named `document.dtx` with the +following content: + + ``` tex + % \iffalse + \documentclass{ltxdoc} + \usepackage[stripPercentSigns]{markdown} + \begin{document} + \DocInput{document.dtx} + \end{document} + % \fi + % + % \begin{markdown} + % Hello *world*! + % \end{markdown} + ``````` + +Next, invoke LuaTeX from the terminal: +``` sh +lualatex document.dtx +`````` +A PDF document named `document.pdf` should be produced and contain the text +“Hello *world*!” + +%</manual-options> +%<*tex> +% \fi % \begin{markdown} % -% The \mdef{markdownOptionOutputDir} macro sets the path to the directory that -% will contain the auxiliary cache files produced by the Lua implementation and -% also the auxiliary files produced by the plain \TeX{} implementation. The -% option defaults to `.`. -% -% The path must be set to the same value as the `-output-directory` option of -% your \TeX{} engine for the package to function correctly. We need this macro -% to make the Lua implementation aware where it should store the helper files. -% The same limitations apply here as in the case of the -% \Opt{helperScriptFileName} macro. +%#### Generating Plain \TeX{} Option Macros and Key-Values % -% \end{markdown} -% \begin{macrocode} -\@@_add_plain_tex_option:nnn - { outputDir } - { path } - { . } -% \end{macrocode} -% \begin{markdown} +% We define the command \mdef{@@_define_option_commands_and_keyvals:} that +% defines plain \TeX{} macros and the key-value interface +% of the \mref{markdownSetup} macro for the above plain \TeX{} options. % -% Here, we automatically define plain \TeX{} macros for the above plain \TeX{} -% options. +% The command also defines macros and key-values that map +% directly to the options recognized by the Lua interface, such as +% \mdef{markdownOptionHybrid} for the \Opt{hybrid} Lua option (see Section +% <#sec:lua-options>), which are not processed by the plain \TeX{} +% implementation, only passed along to Lua. % -% Furthemore, we also define macros that map directly to the options recognized -% by the Lua interface, such as \mdef{markdownOptionHybrid} for the -% \Opt{hybrid} Lua option (see Section <#sec:lua-options>), which are not -% processed by the plain \TeX{} implementation, only passed along to Lua. +% Furthermore, the command also defines options and key-values +% for subsequently loaded layers that correspond to higher-level \TeX{} formats +% such as \LaTeX{} and \Hologo{ConTeXt}. % % For the macros that correspond to the non-boolean options recognized by the % Lua interface, the same limitations apply here in the case of the -% \Opt{helperScriptFileName} macro. +% \Opt{inputTempFileName} macro. % % \end{markdown} % \begin{macrocode} -\cs_new:Nn \@@_plain_tex_define_option_commands: +\cs_new:Nn + \@@_define_option_commands_and_keyvals: { \seq_map_inline:Nn \g_@@_option_layers_seq @@ -10931,19 +11995,53 @@ For more information, see the examples for the \Opt{finalizeCache} option. \seq_map_inline:cn { g_@@_ ##1 _options_seq } { - \@@_plain_tex_define_option_command:n + \@@_define_option_command:n { ####1 } +% \end{macrocode} +% \begin{markdown} +% +% To make it easier to copy-and-paste options from Pandoc [@macfarlane22] such +% as `fancy_lists`, `header_attributes`, and `pipe_tables`, we accept +% snake\\\_case in addition to camelCase variants of options. As a bonus, +% studies [@sharif10] also show that snake\\\_case is faster to read than +% camelCase. +% +% \end{markdown} +% \begin{macrocode} + \@@_with_various_cases:nn + { ####1 } + { + \@@_define_option_keyval:nnn + { ##1 } + { ####1 } + { ########1 } + } } } } -\cs_new:Nn \@@_plain_tex_define_option_command:n +\cs_new:Nn + \@@_define_option_command:n { - \@@_get_default_option_value:nN - { #1 } - \l_tmpa_tl - \@@_set_option_value:nV +% \end{macrocode} +% \begin{markdown} +% +% Do not override options defined before loading the package. +% +% \end{markdown} +% \begin{macrocode} + \@@_option_tl_to_csname:nN { #1 } \l_tmpa_tl + \cs_if_exist:cF + { \l_tmpa_tl } + { + \@@_get_default_option_value:nN + { #1 } + \l_tmpa_tl + \@@_set_option_value:nV + { #1 } + \l_tmpa_tl + } } \cs_new:Nn \@@_set_option_value:nn @@ -11000,140 +12098,750 @@ For more information, see the examples for the \Opt{finalizeCache} option. } } } -\@@_plain_tex_define_option_commands: +\cs_new:Nn + \@@_define_option_keyval:nnn + { + \prop_get:cnN + { g_@@_ #1 _option_types_prop } + { #2 } + \l_tmpa_tl + \str_if_eq:VVTF + \l_tmpa_tl + \c_@@_option_type_boolean_tl + { + \keys_define:nn + { markdown/options } + { +% \end{macrocode} +% \begin{markdown} +% +% For boolean options, we also accept `yes` as an alias for +% `true` and `no` as an alias for `false`. +% +% \end{markdown} +% \begin{macrocode} + #3 .code:n = { + \tl_set:Nx + \l_tmpa_tl + { + \str_case:nnF + { ##1 } + { + { yes } { true } + { no } { false } + } + { ##1 } + } + \@@_set_option_value:nV + { #2 } + \l_tmpa_tl + }, + #3 .default:n = { true }, + } + } + { + \keys_define:nn + { markdown/options } + { + #3 .code:n = { + \@@_set_option_value:nn + { #2 } + { ##1 } + }, + } + } +% \end{macrocode} +% \begin{markdown} +% +% For options of type `clist`, we assume that \meta{key} is a regular English +% noun in plural (such as `extensions`) and we also define the +% \meta{singular key}`=`\meta{value} interface, where \meta{singular key} is +% \meta{key} after stripping the trailing -s (such as `extension`). Rather +% than setting the option to \meta{value}, this interface appends \meta{value} +% to the current value as the rightmost item in the list. +% +% \end{markdown} +% \begin{macrocode} + \str_if_eq:VVT + \l_tmpa_tl + \c_@@_option_type_clist_tl + { + \tl_set:Nn + \l_tmpa_tl + { #3 } + \tl_reverse:N + \l_tmpa_tl + \str_if_eq:enF + { + \tl_head:V + \l_tmpa_tl + } + { s } + { + \msg_error:nnn + { markdown } + { malformed-name-for-clist-option } + { #3 } + } + \tl_set:Nx + \l_tmpa_tl + { + \tl_tail:V + \l_tmpa_tl + } + \tl_reverse:N + \l_tmpa_tl + \tl_put_right:Nn + \l_tmpa_tl + { + .code:n = { + \@@_get_option_value:nN + { #2 } + \l_tmpa_tl + \clist_set:NV + \l_tmpa_clist + { \l_tmpa_tl, { ##1 } } + \@@_set_option_value:nV + { #2 } + \l_tmpa_clist + } + } + \keys_define:nV + { markdown/options } + \l_tmpa_tl + } + } +\cs_generate_variant:Nn + \clist_set:Nn + { NV } +\cs_generate_variant:Nn + \keys_define:nn + { nV } +\cs_generate_variant:Nn + \@@_set_option_value:nn + { nV } +\prg_generate_conditional_variant:Nnn + \str_if_eq:nn + { en } + { F } +\msg_new:nnn + { markdown } + { malformed-name-for-clist-option } + { + Clist~option~name~#1~does~not~end~with~-s. + } % \end{macrocode} +% \begin{markdown} +% +% If plain \TeX{} is the top layer, we use the +% \mref{@@_define_option_commands_and_keyvals:} macro to define plain \TeX{} +% option macros and key-values immediately. Otherwise, we +% postpone the definition until the upper layers have been loaded. % +% \end{markdown} +% \begin{macrocode} +\str_if_eq:VVT + \c_@@_top_layer_tl + \c_@@_option_layer_plain_tex_tl + { + \@@_define_option_commands_and_keyvals: + } +\ExplSyntaxOff +% \end{macrocode} % \iffalse %</tex> %<*manual-options> +% \fi +% \begin{markdown} -The plain \TeX{} interface provides the following commands that you can use to -specify the location of temporary files produced during the conversion from -Markdown to \TeX{}: +### Themes {#themes} -- `\markdownOptionHelperScriptFileName`, -- `\markdownOptionInputTempFileName`, -- `\markdownOptionOutputTempFileName`, -- `\markdownOptionErrorTempFileName`, -- `\markdownOptionOutputDir`, -- `\markdownOptionCacheDir`, and -- `\markdownOptionFrozenCacheFileName`. +User-defined themes for the Markdown package provide a domain-specific +interpretation of Markdown tokens. Themes allow the authors to achieve +a specific look and other high-level goals without low-level programming. -The `\markdownOptionCacheDir` and `\markdownOptionFrozenCacheFileName` commands -correspond to the `cacheDir` and `frozenCacheFileName` Lua options. +% The key-values `theme`=\meta{theme name} and `import`=\meta{theme name} load +% a \TeX{} document (further referred to as *a theme*) named +% `markdowntheme`\meta{munged theme name}`.tex`, where the *munged theme name* +% is the *theme name* after the substitution of all forward slashes (`/`) for +% an underscore (`_`). The theme name is *qualified* and contains no +% underscores. A theme name is qualified if and only if it contains at least +% one forward slash. Themes are inspired by the Beamer \LaTeX{} package, which +% provides similar functionality with its `\usetheme` macro [@tantau21, Section +% 15.1]. +% +% Theme names must be qualified to minimize naming conflicts between different +% themes with a similar purpose. The preferred format of a theme name is +% \meta{theme author}`/`\meta{theme purpose}`/`\meta{private naming +% scheme}, where the *private naming scheme* may contain additional forward +% slashes. For example, a theme by a user `witiko` for the MU theme of the +% Beamer document class may have the name `witiko/beamer/MU`. +% +% Theme names are munged to allow structure inside theme names without +% dictating where the themes should be located inside the \TeX{} directory +% structure. For example, loading a theme named `witiko/beamer/MU` would +% load a \TeX{} document package named `markdownthemewitiko_beamer_MU.tex`. +% +% \end{markdown} +% \iffalse +%</manual-options> +%<*tex> +% \fi +% \begin{macrocode} +\ExplSyntaxOn +\keys_define:nn + { markdown/options } + { + theme .code:n = { + \@@_set_theme:n + { #1 } + }, + import .code:n = { + \tl_set:Nn + \l_tmpa_tl + { #1 } +% \end{macrocode} +% \begin{markdown} +% +% To ensure that keys containing forward slashes get passed correctly, we +% replace all forward slashes in the input with backslash tokens with category +% code letter and then undo the replacement. This means that if any unbraced +% backslash tokens with category code letter exist in the input, they will be +% replaced with forward slashes. However, this should be extremely rare. +% +% \end{markdown} +% \begin{macrocode} + \tl_replace_all:NnV + \l_tmpa_tl + { / } + \c_backslash_str + \keys_set:nV + { markdown/options/import } + \l_tmpa_tl + }, + } +% \end{macrocode} +% \begin{markdown} +% +% To keep track of the current theme when themes are nested, we will +% maintain the \mdef{g_\@\@_themes_seq} stack of theme names. +% For convenience, the name of the current theme is also available in the +% \mdef{g_@@_current_theme_tl} macro. +% +% \end{markdown} +% \begin{macrocode} +\seq_new:N + \g_@@_themes_seq +\tl_new:N + \g_@@_current_theme_tl +\tl_gset:Nn + \g_@@_current_theme_tl + { } +\seq_gput_right:NV + \g_@@_themes_seq + \g_@@_current_theme_tl +\cs_new:Nn + \@@_set_theme:n + { +% \end{macrocode} +% \begin{markdown} +% +% First, we validate the theme name. +% +% \end{markdown} +% \begin{macrocode} + \str_if_in:nnF + { #1 } + { / } + { + \msg_error:nnn + { markdown } + { unqualified-theme-name } + { #1 } + } + \str_if_in:nnT + { #1 } + { _ } + { + \msg_error:nnn + { markdown } + { underscores-in-theme-name } + { #1 } + } +% \end{macrocode} +% \begin{markdown} +% +% Next, we munge the theme name. +% +% \end{markdown} +% \begin{macrocode} + \str_set:Nn + \l_tmpa_str + { #1 } + \str_replace_all:Nnn + \l_tmpa_str + { / } + { _ } +% \end{macrocode} +% \begin{markdown} +% +% Finally, we load the theme. +% +% \end{markdown} +% \begin{macrocode} + \tl_gset:Nn + \g_@@_current_theme_tl + { #1 / } + \seq_gput_right:NV + \g_@@_themes_seq + \g_@@_current_theme_tl + \@@_load_theme:nV + { #1 } + \l_tmpa_str + \seq_gpop_right:NN + \g_@@_themes_seq + \l_tmpa_tl + \seq_get_right:NN + \g_@@_themes_seq + \l_tmpa_tl + \tl_gset:NV + \g_@@_current_theme_tl + \l_tmpa_tl + } +\msg_new:nnnn + { markdown } + { unqualified-theme-name } + { Won't~load~theme~with~unqualified~name~#1 } + { Theme~names~must~contain~at~least~one~forward~slash } +\msg_new:nnnn + { markdown } + { underscores-in-theme-name } + { Won't~load~theme~with~an~underscore~in~its~name~#1 } + { Theme~names~must~not~contain~underscores~in~their~names } +\cs_generate_variant:Nn + \tl_replace_all:Nnn + { NnV } +\ExplSyntaxOff +% \end{macrocode} +% \iffalse +%</tex> +%<*manual-options> +% \fi +% \par +% \begin{markdown} -Using a text editor, create a folder named `output-directory` and a text -document named `document.tex` with the following content: +Built-in plain \TeX{} themes provided with the Markdown package include: + +\pkg{witiko/tilde} + +: A theme that makes tilde (`~`) always typeset the non-breaking space even + when the \Opt{hybrid} Lua option is disabled. +% ``` tex +% \input markdown +% \markdownSetup{import=witiko/tilde} +% \markdownBegin +% Bartel~Leendert van~der~Waerden +% \markdownEnd +% \bye +% ``````` +% Typesetting the above document produces the following text: +% “Bartel~Leendert van~der~Waerden”. +% +% \end{markdown} +% \iffalse + +##### Plain \TeX{} Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: ``` tex -\input lmfonts \input markdown -\def\markdownOptionHelperScriptFileName{helper-script.lua} -\def\markdownOptionInputTempFileName{temporary-input.md} -\def\markdownOptionOutputTempFileName{temporary-output.tex} -\def\markdownOptionErrorTempFileName{error-output.txt} -\def\markdownOptionOutputDir{output-directory} -\def\markdownOptionCacheDir{output-directory/cache-directory} -\markdownOptionFinalizeCachetrue -\def\markdownOptionFrozenCacheFileName{output-directory/cache-directory/frozen-cache.tex} +\markdownSetup{import=witiko/tilde} \markdownBegin -Hello *world*! +Bartel~Leendert van~der~Waerden \markdownEnd \bye ``````` Next, invoke LuaTeX from the terminal: ``` sh -luatex --output-directory output-directory document.tex +luatex document.tex `````` -A text document named `temporary-input.md` should be produced in the folder -named `output-directory` and contain the following text: - -> Hello \*world\*! +A PDF document named `document.pdf` should be produced and contain the +following text, where the middot (`·`) denotes a non-breaking space: -A folder named `output-directory/cache-directory` should also be produced and -contain fragments of the converted markdown document. LuaTeX does not need -other temporary files to perform the conversion from markdown to \TeX{}. To -produce the remaining temporary files, invoke pdfTeX from the terminal: -``` sh -pdftex --output-directory output-directory --shell-escape document.tex -`````` -Text documents named `helper-script.lua`, and `temporary-output.md` should be -produced in the folder named `output-directory`. The document named -`helper-script.lua` will contain Lua code that was executed to convert markdown -to plain \TeX{}. The document named `temporary-output.tex` will contain the -input markdown document converted to \TeX{}. +> Bartel·Leendert van·der·Waerden -No document named `error-output.txt` should be produced in the folder named -`output-directory`. This document would only be produced if an error had occured -while executing the Lua code. If this happens, please [file a -bug](https://github.com/witiko/markdown/issues). +% \fi +% \par +% \begin{markdown} -#### Package Documentation +\pkg{witiko/markdown/defaults} -The \mdef{markdownOptionStripPercentSigns} macro controls whether a percent -sign (`\%`) at the beginning of a line will be discarded when reading Markdown -input from a \TeX{} document. This enables the use of markdown when writing -\TeX{} package documentation using the [Doc \LaTeX{} package][doc] by Frank -Mittelbach. The recognized values of the macro are `true` (discard) and `false` -(retain). It defaults to `false`. +: A plain \TeX{} theme with the default definitions of token renderer + prototypes for plain \TeX{}. This theme is loaded automatically together + with the package and explicitly loading it has no effect. - [doc]: https://ctan.org/pkg/doc (doc – Format LaTeX documentation) +% Please, see Section <#sec:themes-implementation> for implementation +% details of the built-in plain \TeX{} themes. -Using a text editor, create a text document named `document.dtx` with the -following content: +### Snippets {#snippets} - ``` tex - % \iffalse - \documentclass{ltxdoc} - \usepackage[stripPercentSigns]{markdown} - \begin{document} - \DocInput{document.dtx} - \end{document} - % \fi - % - % \begin{markdown} - % Hello *world*! - % \end{markdown} - ``````` +% \end{markdown} +% \iffalse -Next, invoke LuaTeX from the terminal: -``` sh -lualatex document.dtx -`````` -A PDF document named `document.pdf` should be produced and contain the text -“Hello *world*!” +User-defined themes provide global control over high-level goals. +However, it is often desirable to change only some local aspects of a document. +Snippets provide syntactic sugar for defining and invoking various +options locally. %</manual-options> %<*tex> % \fi +% \par % \begin{markdown} % -%#### Miscellaneous Options +% We may set up options as *snippets* using the +% \mdef{markdownSetupSnippet} macro and invoke them later. The +% \mref{markdownSetupSnippet} macro receives two arguments: the name +% of the snippet and the options to store. % -% The \mdef{markdownOptionStripPercentSigns} macro controls whether a percent -% sign (`\%`) at the beginning of a line will be discarded when buffering -% Markdown input (see Section <#sec:buffering>) or not. Notably, this -% enables the use of markdown when writing \TeX{} package documentation using -% the \pkg{Doc} \LaTeX{}~package~[@mittelbach17] or similar. The recognized -% values of the macro are `true` (discard) and `false` (retain). It defaults -% to `false`. +% \end{markdown} +% \begin{macrocode} +\ExplSyntaxOn +\prop_new:N + \g_@@_snippets_prop +\cs_new:Nn + \@@_setup_snippet:nn + { + \tl_if_empty:nT + { #1 } + { + \msg_error:nnn + { markdown } + { empty-snippet-name } + { #1 } + } + \tl_set:NV + \l_tmpa_tl + \g_@@_current_theme_tl + \tl_put_right:Nn + \l_tmpa_tl + { #1 } + \@@_if_snippet_exists:nT + { #1 } + { + \msg_warning:nnV + { markdown } + { redefined-snippet } + \l_tmpa_tl + } + \prop_gput:NVn + \g_@@_snippets_prop + \l_tmpa_tl + { #2 } + } +\cs_gset_eq:NN + \markdownSetupSnippet + \@@_setup_snippet:nn +\msg_new:nnnn + { markdown } + { empty-snippet-name } + { Empty~snippet~name~#1 } + { Pick~a~non-empty~name~for~your~snippet } +\msg_new:nnn + { markdown } + { redefined-snippet } + { Redefined~snippet~#1 } +% \end{macrocode} +% \begin{markdown} +% +% To decide whether a snippet exists, we can use the +% \mdef{markdownIfSnippetExists} macro. % % \end{markdown} % \begin{macrocode} -\seq_gput_right:Nn - \g_@@_plain_tex_options_seq - { stripPercentSigns } -\prop_gput:Nnn - \g_@@_plain_tex_option_types_prop - { stripPercentSigns } - { boolean } -\prop_gput:Nnx - \g_@@_default_plain_tex_options_prop - { stripPercentSigns } - { false } +\prg_new_conditional:Nnn + \@@_if_snippet_exists:n + { TF, T, F } + { + \tl_set:NV + \l_tmpa_tl + \g_@@_current_theme_tl + \tl_put_right:Nn + \l_tmpa_tl + { #1 } + \prop_get:NVNTF + \g_@@_snippets_prop + \l_tmpa_tl + \l_tmpb_tl + { \prg_return_true: } + { \prg_return_false: } + } +\cs_gset_eq:NN + \markdownIfSnippetExists + \@@_if_snippet_exists:nTF +% \end{macrocode} +% \begin{markdown} +% +% The option with key `snippet` invokes a snippet named \meta{value}. +% +% \end{markdown} +% \begin{macrocode} +\keys_define:nn + { markdown/options } + { + snippet .code:n = { + \tl_set:NV + \l_tmpa_tl + \g_@@_current_theme_tl + \tl_put_right:Nn + \l_tmpa_tl + { #1 } + \@@_if_snippet_exists:nTF + { #1 } + { + \prop_get:NVN + \g_@@_snippets_prop + \l_tmpa_tl + \l_tmpb_tl + \@@_setup:V + \l_tmpb_tl + } + { + \msg_error:nnV + { markdown } + { undefined-snippet } + \l_tmpa_tl + } + } + } +\msg_new:nnn + { markdown } + { undefined-snippet } + { Can't~invoke~undefined~snippet~#1 } +\cs_generate_variant:Nn + \@@_setup:n + { V } \ExplSyntaxOff % \end{macrocode} % \iffalse %</tex> +%<*manual-options> +% \fi +% \par +% \markdownBegin + +Here is how we can use snippets to store options and invoke them later +in \LaTeX{}: + +``` tex +\markdownSetupSnippet{romanNumerals}{ + renderers = { + olItemWithNumber = {% + \item[\romannumeral#1\relax.]% + }, + }, +} +\begin{markdown} + +The following ordered list will be preceded by arabic numerals: + +1. wahid +2. aithnayn + +\end{markdown} +\begin{markdown}[snippet=romanNumerals] + +The following ordered list will be preceded by roman numerals: + +3. tres +4. quattuor + +\end{markdown} +``````` + +If the `romanNumerals` snippet were defined in the `jdoe/lists` theme, +we could import the `jdoe/lists` theme and use the qualified name +`jdoe/lists/romanNumerals` to invoke the snippet: + +``` tex +\markdownSetup{import=jdoe/lists} +\begin{markdown}[snippet=jdoe/lists/romanNumerals] + +The following ordered list will be preceded by roman numerals: + +3. tres +4. quattuor + +\end{markdown} +``````` + +Alternatively, we can use the extended variant of the `import` \LaTeX{} +option that allows us to import the `romanNumerals` snippet to the +current namespace for easier access: + +``` tex +\markdownSetup{ + import = { + jdoe/lists = romanNumerals, + }, +} +\begin{markdown}[snippet=romanNumerals] + +The following ordered list will be preceded by roman numerals: + +3. tres +4. quattuor + +\end{markdown} +``````` + +Furthermore, we can also specify the name of the snippet in the current +namespace, which can be different from the name of the snippet in the +`jdoe/lists` theme. For example, we can make the snippet +`jdoe/lists/romanNumerals` available under the name `roman`. + +``` tex +\markdownSetup{ + import = { + jdoe/lists = romanNumerals as roman, + }, +} +\begin{markdown}[snippet=roman] + +The following ordered list will be preceded by roman numerals: + +3. tres +4. quattuor + +\end{markdown} +``````` + +Several themes and/or snippets can be loaded at once using the extended +variant of the `import` \LaTeX{} option: + +``` tex +\markdownSetup{ + import = { + jdoe/longpackagename/lists = { + arabic as arabic1, + roman, + alphabetic, + }, + jdoe/anotherlongpackagename/lists = { + arabic as arabic2, + }, + jdoe/yetanotherlongpackagename, + }, +} +``````` + +% \markdownEnd +% \iffalse +%</manual-options> +%<*tex> +% \fi +% \begin{macrocode} +\ExplSyntaxOn +\tl_new:N + \l_@@_import_current_theme_tl +\keys_define:nn + { markdown/options/import } + { +% \end{macrocode} +% \begin{markdown} +% +% If a theme name is given without a list of snippets to import, +% we assume that an empty list was given. +% +% \end{markdown} +% \begin{macrocode} + unknown .default:n = {}, + unknown .code:n = { +% \end{macrocode} +% \begin{markdown} +% +% To ensure that keys containing forward slashes get passed correctly, we +% replace all forward slashes in the input with backslash tokens with category +% code letter and then undo the replacement. This means that if any unbraced +% backslash tokens with category code letter exist in the input, they will be +% replaced with forward slashes. However, this should be extremely rare. +% +% \end{markdown} +% \begin{macrocode} + \tl_set_eq:NN + \l_@@_import_current_theme_tl + \l_keys_key_str + \tl_replace_all:NVn + \l_@@_import_current_theme_tl + \c_backslash_str + { / } +% \end{macrocode} +% \begin{markdown} +% +% Here, we import the snippets. +% +% \end{markdown} +% \begin{macrocode} + \clist_map_inline:nn + { #1 } + { + \regex_extract_once:nnNTF + { ^(.*?)\s+as\s+(.*?)$ } + { ##1 } + \l_tmpa_seq + { + \seq_pop:NN + \l_tmpa_seq + \l_tmpa_tl + \seq_pop:NN + \l_tmpa_seq + \l_tmpa_tl + \seq_pop:NN + \l_tmpa_seq + \l_tmpb_tl + } + { + \tl_set:Nn + \l_tmpa_tl + { ##1 } + \tl_set:Nn + \l_tmpb_tl + { ##1 } + } + \tl_put_left:Nn + \l_tmpa_tl + { / } + \tl_put_left:NV + \l_tmpa_tl + \l_@@_import_current_theme_tl + \@@_setup_snippet:Vx + \l_tmpb_tl + { snippet = { \l_tmpa_tl } } + } +% \end{macrocode} +% \begin{markdown} +% +% Here, we load the theme. +% +% \end{markdown} +% \begin{macrocode} + \@@_set_theme:V + \l_@@_import_current_theme_tl + }, + } +\cs_generate_variant:Nn + \tl_replace_all:Nnn + { NVn } +\cs_generate_variant:Nn + \@@_set_theme:n + { V } +\cs_generate_variant:Nn + \@@_setup_snippet:nn + { Vx } +% \end{macrocode} +% \iffalse +%</tex> %<*manual-tokens> ## Markdown Tokens @@ -11200,19 +12908,25 @@ In this section, I will describe the individual token renderers. % \begin{markdown} #### Attribute Renderers -The following macros are only produced, when the \Opt{headerAttributes} option -is enabled. +The following macros are only produced, when at least one of the following +options for markdown attributes on different elements is enabled: + +- \Opt{autoIdentifiers} +- \Opt{fencedCodeAttributes} +- \Opt{gfmAutoIdentifiers} +- \Opt{headerAttributes} +- \Opt{inlineCodeAttributes} +- \Opt{linkAttributes} \mdef{markdownRendererAttributeIdentifier} represents the \meta{identifier} of a markdown element (`id="`\meta{identifier}`"` in HTML and `#`\meta{identifier} -in Markdown's \Opt{headerAttributes} syntax extension). The macro receives a -single attribute that corresponds to the \meta{identifier}. +in markdown attributes). The macro receives a single attribute that corresponds +to the \meta{identifier}. \mdef{markdownRendererAttributeClassName} represents the \meta{class name} of a markdown element (`class="`\meta{class name} ...`"` in HTML and -`.`\meta{class name} in Markdown's \Opt{headerAttributes} syntax extension). -The macro receives a single attribute that corresponds to the \meta{class -name}. +`.`\meta{class name} in markdown attributes). The macro receives a single +attribute that corresponds to the \meta{class name}. \mdef{markdownRendererAttributeKeyValue} represents a HTML attribute in the form \meta{key}`=`\meta{value} that is neither an identifier nor a class name. @@ -11468,7 +13182,7 @@ A quote from William Shakespeare's King Lear: ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -11512,8 +13226,8 @@ enabled. The \mdef{markdownRendererBracketedSpanAttributeContextBegin} and \mdef{markdownRendererBracketedSpanAttributeContextEnd} macros represent the -beginning and the end of an inline bracketed span in which the attributes of -the span apply. The macros receive no arguments. +beginning and the end of a context in which the attributes of +an inline bracketed span apply. The macros receive no arguments. % \end{markdown} % @@ -11834,7 +13548,7 @@ following content: \usepackage[tightLists]{markdown} \begin{document} -\begin{markdown*}{ +\begin{markdown}[ renderers = { interblockSeparator = {}, ulBeginTight = { (}, @@ -11847,15 +13561,15 @@ following content: ulItemEnd = {}, ulEndTight = {).}, }, -} +] This is a tight list - the first item - the second item - the third item -\end{markdown*} +\end{markdown} -\begin{markdown*}{ +\begin{markdown}[ renderers = { interblockSeparator = {% :\par @@ -11866,7 +13580,7 @@ This is a tight list ulItemEnd = {.}, ulEnd = {\end{itemize}}, }, -} +] This is a loose list - This is the first item @@ -11874,7 +13588,7 @@ This is a loose list - This is the second item - This is the third item -\end{markdown*} +\end{markdown} \end{document} ``````` @@ -11946,7 +13660,7 @@ This is a loose list ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -11987,6 +13701,194 @@ following text: % % \begin{markdown} +#### Citation Renderers +The \mdef{markdownRendererCite} macro represents a string of one or more +parenthetical citations. This macro will only be produced, when the +\Opt{citations} option is enabled. The macro receives the parameter +`{`\meta{number of citations}`}` followed by \meta{suppress author} +`{`\meta{prenote}`}{`\meta{postnote}`}{`\meta{name}`}` repeated +\meta{number of citations} times. The \meta{suppress author} parameter is +either the token `-`, when the author's name is to be suppressed, or `+` +otherwise. + +% \end{markdown} +% +% \iffalse + +##### \LaTeX{} Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: +``` tex +\documentclass{article} +\usepackage[citations]{markdown} +\newcount\citationsCounter +\newcount\citationsTotal +\makeatletter +\def\citations#1#2#3#4{% + a parenthesized citation \emph{#4} + \advance\citationsCounter by 1\relax + \ifx\relax#2\relax + \ifx\relax#3\relax\else + with a postfix \emph{#3}% + \fi + \else + with a prefix \emph{#2}% + \ifx\relax#3\relax\else + \ and a postfix \emph{#3}% + \fi + \fi + \ifnum\citationsCounter>\citationsTotal\relax + .% + \expandafter\@gobble + \else + , and + \fi\citations} +\makeatother +\markdownSetup{ + renderers = { + cite = {% + \citationsCounter=1% + \citationsTotal=#1% + This is + \expandafter\citations + }, + }, +} +\begin{document} +\begin{markdown} +[see @abrahams90, pp. 12; @eijkhout91, pp. 34] +\end{markdown} +\end{document} +``````` +Next, invoke LuaTeX from the terminal: +``` sh +lualatex document.tex +`````` +A PDF document named `document.pdf` should be produced and contain the +following text: + +> This is a parenthesized citation *abrahams90* with a prefix see +> and a postfix *pp. 12*, and a citation *eijkhout91* with a +> postfix *pp. 34*. + +%</manual-tokens> +%<*tex> +% \fi +% +% \begin{macrocode} +\def\markdownRendererCite{% + \markdownRendererCitePrototype}% +\ExplSyntaxOn +\seq_gput_right:Nn + \g_@@_renderers_seq + { cite } +\prop_gput:Nnn + \g_@@_renderer_arities_prop + { cite } + { 1 } +\ExplSyntaxOff +% \end{macrocode} +% \par +% +% \iffalse +%</tex> +%<*manual-tokens> +% \fi +% +% \begin{markdown} + +The \mdef{markdownRendererTextCite} macro represents a string of one or more +text citations. This macro will only be produced, when the +\Opt{citations} option is enabled. The macro receives parameters in the same +format as the \mref{markdownRendererCite} macro. + +% \end{markdown} +% +% \iffalse + +##### \LaTeX{} Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: +``` tex +\documentclass{article} +\usepackage[citations]{markdown} +\newcount\citationsCounter +\newcount\citationsTotal +\makeatletter +\def\citations#1#2#3#4{% + a text citation \emph{#4} + \advance\citationsCounter by 1\relax + \ifx\relax#2\relax + \ifx\relax#3\relax\else + with a postfix \emph{#3}% + \fi + \else + with a prefix \emph{#2}% + \ifx\relax#3\relax\else + \ and a postfix \emph{#3}% + \fi + \fi + \ifnum\citationsCounter>\citationsTotal\relax + .% + \expandafter\@gobble + \else + , and + \fi\citations} +\makeatother +\markdownSetup{ + renderers = { + textCite = {% + \citationsCounter=1% + \citationsTotal=#1% + This is + \expandafter\citations + }, + }, +} +\begin{document} +\begin{markdown} +@abrahams90 [pp. 12; also @eijkhout91] +\end{markdown} +\end{document} +``````` +Next, invoke LuaTeX from the terminal: +``` sh +lualatex document.tex +`````` +A PDF document named `document.pdf` should be produced and contain the +following text: + +> This is a text citation *abrahams90* with a postfix *pp. 12*, +> and a citation *eijkhout91* with a prefix *also*. + +%</manual-tokens> +%<*tex> +% \fi +% +% \begin{macrocode} +\def\markdownRendererTextCite{% + \markdownRendererTextCitePrototype}% +\ExplSyntaxOn +\seq_gput_right:Nn + \g_@@_renderers_seq + { textCite } +\prop_gput:Nnn + \g_@@_renderer_arities_prop + { textCite } + { 1 } +\ExplSyntaxOff +% \end{macrocode} +% \par +% +% \iffalse +%</tex> +%<*manual-tokens> +% \fi +% +% \begin{markdown} + #### Code Block Renderers The \mdef{markdownRendererInputVerbatim} macro represents a code block. The macro receives a single argument that corresponds to the @@ -12023,8 +13925,10 @@ filename of a file contaning the code block contents. The \mdef{markdownRendererInputFencedCode} macro represents a fenced code block. This macro will only be produced, when the \Opt{fencedCode} option is -enabled. The macro receives two arguments that correspond to the filename of -a file contaning the code block contents and to the code fence infostring. +enabled. The macro receives three arguments that correspond to the filename of +a file contaning the code block contents, the fully escaped code fence infostring +that can be directly typeset, and the raw code fence infostring that can be used +outside typesetting. % \end{markdown} % @@ -12125,7 +14029,7 @@ following text except for the filename, which may differ: \prop_gput:Nnn \g_@@_renderer_arities_prop { inputFencedCode } - { 2 } + { 3 } \ExplSyntaxOff % \end{macrocode} % \par @@ -12203,9 +14107,9 @@ following content: $\sqrt{-1}$ *equals* $i$ \end{markdown} -\begin{markdown*}{hybrid} +\begin{markdown}[hybrid] $\sqrt{-1}$ *equals* $i$ -\end{markdown*} +\end{markdown} \end{document} ``````` @@ -12248,7 +14152,7 @@ $\sqrt{-1}$ *equals* $i$ ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -12293,8 +14197,8 @@ option is enabled. The \mdef{markdownRendererCodeSpanAttributeContextBegin} and \mdef{markdownRendererCodeSpanAttributeContextEnd} macros represent the beginning -and the end of an inline code span in which the attributes of the inline code -span apply. The macros receive no arguments. +and the end of a context in which the attributes of an inline code span apply. +The macros receive no arguments. % \end{markdown} % @@ -12370,7 +14274,7 @@ following text: #### Content Block Renderers {#texcontentblockrenderers} -The \mdef{markdownRendererContentBlock} macro represents an iA\,Writer content +The \mdef{markdownRendererContentBlock} macro represents an iA\\,Writer content block. It receives four arguments: the local file or online image filename extension cast to the lower case, the fully escaped \acro{uri} that can be directly typeset, the raw \acro{uri} that can be used outside typesetting, @@ -12406,7 +14310,7 @@ and the title of the content block. % \begin{markdown} The \mdef{markdownRendererContentBlockOnlineImage} macro represents an -iA\,Writer online image content block. The macro receives the same arguments +iA\\,Writer online image content block. The macro receives the same arguments as \mref{markdownRendererContentBlock}. % \end{markdown} @@ -12438,7 +14342,7 @@ as \mref{markdownRendererContentBlock}. % % \begin{markdown} -The \mdef{markdownRendererContentBlockCode} macro represents an iA\,Writer +The \mdef{markdownRendererContentBlockCode} macro represents an iA\\,Writer content block that was recognized as a file in a known programming language by its filename extension $s$. If any `markdown-languages.json` file found by \pkg{kpathsea}^[Filenames other than `markdown-languages.json` may @@ -12593,7 +14497,7 @@ content: `````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -12996,7 +14900,7 @@ following content: \usepackage[definitionLists, tightLists]{markdown} \begin{document} -\begin{markdown*}{ +\begin{markdown}[ renderers = { interblockSeparator = {% :% @@ -13018,7 +14922,7 @@ following content: dlDefinitionBegin = \item, dlEndTight = {\end{description}}, }, -} +] This is a tight definition list Coffee @@ -13030,9 +14934,9 @@ Milk : white cold drink : nutrient-rich : produced on an industrial scale -\end{markdown*} +\end{markdown} -\begin{markdown*}{ +\begin{markdown}[ renderers = { interblockSeparator = {% \def\markdownRendererInterblockSeparator{\par}% @@ -13051,7 +14955,7 @@ Milk dlDefinitionEnd = {}, dlEnd = {.}, }, -} +] This is a loose definition list Coffee @@ -13069,7 +14973,7 @@ Milk : nutrient-rich : produced on an industrial scale -\end{markdown*} +\end{markdown} \end{document} ``````` @@ -13187,7 +15091,7 @@ Milk ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -13311,7 +15215,7 @@ The secret word is ... ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -13356,6 +15260,39 @@ span of text. % \end{markdown} % % \iffalse +%</manual-tokens> +%<*tex> +% \fi +% +% \begin{macrocode} +\def\markdownRendererEmphasis{% + \markdownRendererEmphasisPrototype}% +\ExplSyntaxOn +\seq_gput_right:Nn + \g_@@_renderers_seq + { emphasis } +\prop_gput:Nnn + \g_@@_renderer_arities_prop + { emphasis } + { 1 } +\ExplSyntaxOff +% \end{macrocode} +% \par +% +% \iffalse +%</tex> +%<*manual-tokens> +% \fi +% +% \begin{markdown} + +The \mdef{markdownRendererStrongEmphasis} macro represents a strongly +emphasized span of text. The macro receives a single argument that +corresponds to the emphasized span of text. + +% \end{markdown} +% +% \iffalse ##### Plain \TeX{} Example {.unnumbered} @@ -13433,7 +15370,7 @@ This is **strong emphasis**. ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -13447,39 +15384,6 @@ following text: % \fi % % \begin{macrocode} -\def\markdownRendererEmphasis{% - \markdownRendererEmphasisPrototype}% -\ExplSyntaxOn -\seq_gput_right:Nn - \g_@@_renderers_seq - { emphasis } -\prop_gput:Nnn - \g_@@_renderer_arities_prop - { emphasis } - { 1 } -\ExplSyntaxOff -% \end{macrocode} -% \par -% -% \iffalse -%</tex> -%<*manual-tokens> -% \fi -% -% \begin{markdown} - -The \mdef{markdownRendererStrongEmphasis} macro represents a strongly -emphasized span of text. The macro receives a single argument that -corresponds to the emphasized span of text. - -% \end{markdown} -% -% \iffalse -%</manual-tokens> -%<*tex> -% \fi -% -% \begin{macrocode} \def\markdownRendererStrongEmphasis{% \markdownRendererStrongEmphasisPrototype}% \ExplSyntaxOn @@ -13606,7 +15510,7 @@ enabled. The \mdef{markdownRendererFencedDivAttributeContextBegin} and \mdef{markdownRendererFencedDivAttributeContextEnd} macros represent the beginning -and the end of a div in which the attributes of the div apply. The macros +and the end of a context in which the attributes of a div apply. The macros receive no arguments. % \end{markdown} @@ -13721,12 +15625,12 @@ following text: % \begin{markdown} #### Header Attribute Context Renderers -The following macros are only produced, when the \Opt{headerAttributes} option -is enabled. +The following macros are only produced, when the \Opt{autoIdentifiers}, +\Opt{gfmAutoIdentifiers}, or \Opt{headerAttributes} options are enabled. The \mdef{markdownRendererHeaderAttributeContextBegin} and \mdef{markdownRendererHeaderAttributeContextEnd} macros represent the beginning -and the end of a section in which the attributes of a heading apply. The macros +and the end of a context in which the attributes of a heading apply. The macros receive no arguments. % \end{markdown} @@ -13790,13 +15694,6 @@ following text: %</manual-tokens> %<*tex> % \fi -% \begin{markdown} -% -% These semantics have been deprecated and will be changed in Markdown 3.0.0. -% From then on, header attribute contexts will only span headings, not the -% surrounding sections. -% -% \end{markdown} % \begin{macrocode} \def\markdownRendererHeaderAttributeContextBegin{% \markdownRendererHeaderAttributeContextBeginPrototype}% @@ -14096,7 +15993,7 @@ following content: ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -14129,17 +16026,13 @@ following text: % % \begin{markdown} -#### HTML Comment Renderers +#### Inline HTML Comment Renderer The \mdef{markdownRendererInlineHtmlComment} macro represents the contents of an inline \acro{HTML} comment. This macro will only be produced, when the \Opt{html} option is enabled. The macro receives a single argument that corresponds to the contents of the \acro{HTML} comment. -The \mdef{markdownRendererBlockHtmlCommentBegin} and -\mdef{markdownRendererBlockHtmlCommentEnd} macros represent the beginning -and the end of a block \acro{HTML} comment. The macros receive no arguments. - % \end{markdown} % % \iffalse @@ -14155,8 +16048,6 @@ following content: \markdownSetup{ renderers = { inlineHtmlComment = {\marginnote{#1}}, - blockHtmlCommentBegin = {\begin{quote}}, - blockHtmlCommentEnd = {\end{quote}}, }, } \begin{document} @@ -14164,14 +16055,6 @@ following content: A useful use of inline HTML comments are side notes. <!-- Side notes are displayed in the horizontal margins next to the relevant passages, which makes them *easier for the reader to find* than notes. --> - -We can render block HTML comments as blockquotes: - -<!-- -Here is a block HTML comment with a code example that a programmer might understand: - - foo = bar + baz - 42 ---> \end{markdown} \end{document} ``````` @@ -14184,13 +16067,6 @@ A PDF document named `document.pdf` should be produced and contain the following body text: > A useful use of HTML comments are side notes. -> -> We can render block HTML comments as blockquotes: -> -> > Here is a block HTML comment with a code example that a programmer might -> > understand: -> > -> > foo = bar + baz - 42 The horizontal margins should contain the following text: @@ -14213,28 +16089,6 @@ The horizontal margins should contain the following text: { inlineHtmlComment } { 1 } \ExplSyntaxOff -\def\markdownRendererBlockHtmlCommentBegin{% - \markdownRendererBlockHtmlCommentBeginPrototype}% -\ExplSyntaxOn -\seq_gput_right:Nn - \g_@@_renderers_seq - { blockHtmlCommentBegin } -\prop_gput:Nnn - \g_@@_renderer_arities_prop - { blockHtmlCommentBegin } - { 0 } -\ExplSyntaxOff -\def\markdownRendererBlockHtmlCommentEnd{% - \markdownRendererBlockHtmlCommentEndPrototype}% -\ExplSyntaxOn -\seq_gput_right:Nn - \g_@@_renderers_seq - { blockHtmlCommentEnd } -\prop_gput:Nnn - \g_@@_renderer_arities_prop - { blockHtmlCommentEnd } - { 0 } -\ExplSyntaxOff % \end{macrocode} % \par % @@ -14374,7 +16228,7 @@ following content: }^^A {^^A \everyeof={\noexpand}^^A - \edef\filename{\@@input"\jobname.fetched" }^^A + \edef\filename{\@@@@input"\jobname.fetched" }^^A \includegraphics[width=\textwidth]{\filename}^^A }^^A } @@ -14429,7 +16283,7 @@ is enabled. The \mdef{markdownRendererImageAttributeContextBegin} and \mdef{markdownRendererImageAttributeContextEnd} macros represent the beginning -and the end of an image in which the attributes of the image apply. The macros +and the end of a context in which the attributes of an image apply. The macros receive no arguments. % \end{markdown} @@ -14504,9 +16358,10 @@ following text: % % \begin{markdown} -#### Interblock Separator Renderer -The \mdef{markdownRendererInterblockSeparator} macro represents a separator -between two markdown block elements. The macro receives no arguments. +#### Interblock Separator Renderers +The \mdef{markdownRendererInterblockSeparator} macro represents an interblock +separator between two markdown block elements. The macro receives no +arguments. % \end{markdown} % @@ -14524,7 +16379,7 @@ following content: \par } \markdownBegin -Hello *world*! +- Hello *world*! _Foo_ bar! \markdownEnd @@ -14537,7 +16392,7 @@ luatex document.tex A PDF document named `document.pdf` should be produced and contain the following text: -> Hello *world*! +> - Hello *world*! > > *(The end of a block)* > @@ -14561,7 +16416,7 @@ following content: } \begin{document} \begin{markdown} -Hello *world*! +- Hello *world*! _Foo_ bar! \end{markdown} @@ -14574,7 +16429,7 @@ lualatex document.tex A PDF document named `document.pdf` should be produced and contain the following text: -> Hello *world*! +> - Hello *world*! > > *(The end of a block)* > @@ -14593,7 +16448,7 @@ following content: } \starttext \startmarkdown -Hello *world*! +- Hello *world*! _Foo_ bar! \stopmarkdown @@ -14601,12 +16456,12 @@ _Foo_ bar! ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: -> Hello *world*! +> - Hello *world*! > > *(The end of a block)* > @@ -14638,7 +16493,82 @@ following text: % % \begin{markdown} -#### Line Block Renderer +Users can use more than one blank line to delimit two block to indicate the +end of a series of blocks that make up a logical paragraph. This produces a +paragraph separator instead of an interblock separator. Between some blocks, +such as markdown paragraphs, a paragraph separator is always produced. + +The \mdef{markdownRendererParagraphSeparator} macro represents a paragraph +separator. The macro receives no arguments. + +% \end{markdown} +% +% \iffalse + +##### \LaTeX{} Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: +``` tex +\documentclass{article} +\usepackage{markdown} +\markdownSetup{ + renderers = { + paragraphSeparator = {% + \par + \emph{(The end of a paragraph)}% + \par + }, + }, +} +\begin{document} +\begin{markdown} +Hello *world*! + +_Foo_ bar! +\end{markdown} +\end{document} +``````` +Next, invoke LuaTeX from the terminal: +``` sh +lualatex document.tex +`````` +A PDF document named `document.pdf` should be produced and contain the +following text: + +> Hello *world*! +> +> *(The end of a paragraph)* +> +> _Foo_ bar! + +%</manual-tokens> +%<*tex> +% \fi +% +% \begin{macrocode} +\def\markdownRendererParagraphSeparator{% + \markdownRendererParagraphSeparatorPrototype}% +\ExplSyntaxOn +\seq_gput_right:Nn + \g_@@_renderers_seq + { paragraphSeparator } +\prop_gput:Nnn + \g_@@_renderer_arities_prop + { paragraphSeparator } + { 0 } +\ExplSyntaxOff +% \end{macrocode} +% \par +% +% \iffalse +%</tex> +%<*manual-tokens> +% \fi +% +% \begin{markdown} + +#### Line Block Renderers The following macros are only produced, when the \Opt{lineBlocks} option is enabled. @@ -14722,7 +16652,7 @@ following content: ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -14769,7 +16699,114 @@ following text: % % \begin{markdown} -#### Line Break Renderer +#### Line Break Renderers + +The \mdef{markdownRendererSoftLineBreak} macro represents a soft line break. +The macro receives no arguments. + +% \end{markdown} +% +% \iffalse + +##### Plain \TeX{} Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: +``` tex +\input markdown +\def\markdownRendererSoftLineBreak{% + \par + {\it(A soft line break)}% + \par +} +\markdownInput{example.md} +\bye +``````` +Using a text editor, create a text document named `example.md` with the +following content: + +``` md +Hello world! +_Foo_ bar! +`````` +Next, invoke LuaTeX from the terminal: +``` sh +luatex document.tex +`````` +A PDF document named `document.pdf` should be produced and contain the +following text: + +> Hello *world*! +> +> *(A soft line break)* +> +> _Foo_ bar! + +##### \LaTeX{} Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: +``` tex +\documentclass{article} +\usepackage{markdown} +\markdownSetup{ + renderers = { + softLineBreak = {% + \par + \emph{(A soft line break)}% + \par + }, + }, +} +\begin{document} +\markdownInput{example.md} +\end{document} +``````` +Using a text editor, create a text document named `example.md` with the +following content: + +``` md +Hello world! +_Foo_ bar! +`````` +Next, invoke LuaTeX from the terminal: +``` sh +lualatex document.tex +`````` +A PDF document named `document.pdf` should be produced and contain the +following text: + +> Hello *world*! +> +> *(A soft line break)* +> +> _Foo_ bar! + +%</manual-tokens> +%<*tex> +% \fi +% \begin{macrocode} +\def\markdownRendererSoftLineBreak{% + \markdownRendererSoftLineBreakPrototype}% +\ExplSyntaxOn +\seq_gput_right:Nn + \g_@@_renderers_seq + { softLineBreak } +\prop_gput:Nnn + \g_@@_renderer_arities_prop + { softLineBreak } + { 0 } +\ExplSyntaxOff +% \end{macrocode} +% \par +% +% \iffalse +%</tex> +%<*manual-tokens> +% \fi +% +% \begin{markdown} + The \mdef{markdownRendererHardLineBreak} macro represents a hard line break. The macro receives no arguments. @@ -14856,51 +16893,10 @@ following text: %</manual-tokens> %<*tex> % \fi -% \begin{markdown} -% -% The \mdef{markdownRendererLineBreak} and -% \mdef{markdownRendererLineBreakPrototype} macros have been deprecated -% and will be removed in Markdown 3.0.0. -% -% \end{markdown} % \begin{macrocode} +\def\markdownRendererHardLineBreak{% + \markdownRendererHardLineBreakPrototype}% \ExplSyntaxOn -\cs_new:Npn - \markdownRendererHardLineBreak - { - \cs_if_exist:NTF - \markdownRendererLineBreak - { - \markdownWarning - { - Line~break~renderer~has~been~deprecated,~ - to~be~removed~in~Markdown~3.0.0 - } - \markdownRendererLineBreak - } - { - \cs_if_exist:NTF - \markdownRendererLineBreakPrototype - { - \markdownWarning - { - Line~break~renderer~prototype~has~been~deprecated,~ - to~be~removed~in~Markdown~3.0.0 - } - \markdownRendererLineBreakPrototype - } - { - \markdownRendererHardLineBreakPrototype - } - } - } -\seq_gput_right:Nn - \g_@@_renderers_seq - { lineBreak } -\prop_gput:Nnn - \g_@@_renderer_arities_prop - { lineBreak } - { 0 } \seq_gput_right:Nn \g_@@_renderers_seq { hardLineBreak } @@ -15009,7 +17005,7 @@ Please visit [the link][ctan]. ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -15049,7 +17045,7 @@ is enabled. The \mdef{markdownRendererLinkAttributeContextBegin} and \mdef{markdownRendererLinkAttributeContextEnd} macros represent the beginning -and the end of a hyperlink in which the attributes of the hyperlink apply. +and the end of a context in which the attributes of a hyperlink apply. The macros receive no arguments. % \end{markdown} @@ -15124,6 +17120,73 @@ following text: % % \begin{markdown} +#### Marked Text Renderer +The following macro is only produced, when the \Opt{mark} option is enabled. + +The \mdef{markdownRendererMark} macro represents a span of marked or +highlighted text. The macro receives a single argument that corresponds to +the marked text. + +% \end{markdown} +% +% \iffalse + +##### \LaTeX{} Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: +``` tex +\documentclass{article} +\usepackage[mark]{markdown} +\usepackage{soul} +\markdownSetup{ + renderers = { + mark = {\hl{#1}}, + }, +} +\begin{document} +\begin{markdown} + +This ==is highlighted text.== + +\end{markdown} +\end{document} +``````` +Next, invoke LuaTeX from the terminal: +``` sh +lualatex document.tex +`````` +A PDF document named `document.pdf` should be produced and contain the +following text: + +> This <mark>is highlighted text.</mark> + +%</manual-tokens> +%<*tex> +% \fi +% +% \begin{macrocode} +\def\markdownRendererMark{% + \markdownRendererMarkPrototype}% +\ExplSyntaxOn +\seq_gput_right:Nn + \g_@@_renderers_seq + { mark } +\prop_gput:Nnn + \g_@@_renderer_arities_prop + { mark } + { 1 } +\ExplSyntaxOff +% \end{macrocode} +% \par +% +% \iffalse +%</tex> +%<*manual-tokens> +% \fi +% +% \begin{markdown} + #### Markdown Document Renderers The \mdef{markdownRendererDocumentBegin} and \mdef{markdownRendererDocumentEnd} macros represent the beginning and the end of a *markdown* document. The macros @@ -15450,7 +17513,7 @@ This is some text[^1] and this is some other text[^2]. ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -15461,51 +17524,10 @@ following text: %</manual-tokens> %<*tex> % \fi -% \begin{markdown} -% -% The \mdef{markdownRendererFootnote} and -% \mdef{markdownRendererFootnotePrototype} macros have been deprecated -% and will be removed in Markdown 3.0.0. -% -% \end{markdown} % \begin{macrocode} +\def\markdownRendererNote{% + \markdownRendererNotePrototype}% \ExplSyntaxOn -\cs_new:Npn - \markdownRendererNote - { - \cs_if_exist:NTF - \markdownRendererFootnote - { - \markdownWarning - { - Footnote~renderer~has~been~deprecated,~ - to~be~removed~in~Markdown~3.0.0 - } - \markdownRendererFootnote - } - { - \cs_if_exist:NTF - \markdownRendererFootnotePrototype - { - \markdownWarning - { - Footnote~renderer~prototype~has~been~deprecated,~ - to~be~removed~in~Markdown~3.0.0 - } - \markdownRendererFootnotePrototype - } - { - \markdownRendererNotePrototype - } - } - } -\seq_gput_right:Nn - \g_@@_renderers_seq - { footnote } -\prop_gput:Nnn - \g_@@_renderer_arities_prop - { footnote } - { 1 } \seq_gput_right:Nn \g_@@_renderers_seq { note } @@ -16074,7 +18096,7 @@ following content: \usepackage[tightLists, startNumber]{markdown} \begin{document} -\begin{markdown*}{ +\begin{markdown}[ renderers = { interblockSeparator = {}, olBeginTight = { (}, @@ -16092,15 +18114,15 @@ following content: olItemEnd = {}, olEndTight = {).}, }, -} +] This is a tight list 1. item 2. item 3. item -\end{markdown*} +\end{markdown} -\begin{markdown*}{ +\begin{markdown}[ renderers = { interblockSeparator = {% :\par @@ -16122,7 +18144,7 @@ This is a tight list olItemEnd = {.}, olEnd = {\end{enumerate}}, }, -} +] This is a loose list 1. item @@ -16130,7 +18152,7 @@ This is a loose list 2. item 3. item -\end{markdown*} +\end{markdown} \end{document} ``````` @@ -16223,7 +18245,7 @@ This is a loose list ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -16264,103 +18286,6 @@ following text: % % \begin{markdown} -#### Parenthesized Citations Renderer -The \mdef{markdownRendererCite} macro represents a string of one or more -parenthetical citations. This macro will only be produced, when the -\Opt{citations} option is enabled. The macro receives the parameter -`{`\meta{number of citations}`}` followed by \meta{suppress author} -`{`\meta{prenote}`}{`\meta{postnote}`}{`\meta{name}`}` repeated -\meta{number of citations} times. The \meta{suppress author} parameter is -either the token `-`, when the author's name is to be suppressed, or `+` -otherwise. - -% \end{markdown} -% -% \iffalse - -##### \LaTeX{} Example {.unnumbered} - -Using a text editor, create a text document named `document.tex` with the -following content: -``` tex -\documentclass{article} -\usepackage[citations]{markdown} -\newcount\citationsCounter -\newcount\citationsTotal -\makeatletter -\def\citations#1#2#3#4{% - a parenthesized citation \emph{#4} - \advance\citationsCounter by 1\relax - \ifx\relax#2\relax - \ifx\relax#3\relax\else - with a postfix \emph{#3}% - \fi - \else - with a prefix \emph{#2}% - \ifx\relax#3\relax\else - \ and a postfix \emph{#3}% - \fi - \fi - \ifnum\citationsCounter>\citationsTotal\relax - .% - \expandafter\@gobble - \else - , and - \fi\citations} -\makeatother -\markdownSetup{ - renderers = { - cite = {% - \citationsCounter=1% - \citationsTotal=#1% - This is - \expandafter\citations - }, - }, -} -\begin{document} -\begin{markdown} -[see @abrahams90, pp. 12; @eijkhout91, pp. 34] -\end{markdown} -\end{document} -``````` -Next, invoke LuaTeX from the terminal: -``` sh -lualatex document.tex -`````` -A PDF document named `document.pdf` should be produced and contain the -following text: - -> This is a parenthesized citation *abrahams90* with a prefix see -> and a postfix *pp. 12*, and a citation *eijkhout91* with a -> postfix *pp. 34*. - -%</manual-tokens> -%<*tex> -% \fi -% -% \begin{macrocode} -\def\markdownRendererCite{% - \markdownRendererCitePrototype}% -\ExplSyntaxOn -\seq_gput_right:Nn - \g_@@_renderers_seq - { cite } -\prop_gput:Nnn - \g_@@_renderer_arities_prop - { cite } - { 1 } -\ExplSyntaxOff -% \end{macrocode} -% \par -% -% \iffalse -%</tex> -%<*manual-tokens> -% \fi -% -% \begin{markdown} - #### Raw Content Renderers The \mdef{markdownRendererInputRawInline} macro represents an inline raw span. The macro receives two arguments: the filename of a file contaning the inline @@ -16648,7 +18573,7 @@ Bartel~Leendert van~der~Waerden ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text, where the middot (`·`) denotes a non-breaking space: @@ -16868,7 +18793,7 @@ This is ~~a lunar roving vehicle~~ strike-through text. ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -16976,7 +18901,7 @@ H~2~O is a liquid. ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -17083,7 +19008,7 @@ following content: ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -17116,6 +19041,126 @@ following text: % % \begin{markdown} +#### Table Attribute Context Renderers +The following macros are only produced, when the \Opt{tableCaptions} and +\Opt{tableAttributes} options are enabled. + +The \mdef{markdownRendererTableAttributeContextBegin} and +\mdef{markdownRendererTableAttributeContextEnd} macros represent the +beginning and the end of a context in which the attributes of a table +apply. The macros receive no arguments. + +% \end{markdown} +% +% \iffalse + +##### \LaTeX{} Example {.unnumbered} + +Using a text editor, create a text document named `document.tex` with the +following content: +``` tex +\documentclass{article} +\usepackage[ + pipeTables, + tableCaptions, + tableAttributes, + relativeReferences, +]{markdown} +\usepackage{expl3} +\ExplSyntaxOn +\markdownSetup{ + renderers = { + tableAttributeContextBegin = { + \group_begin: + \markdownSetup{ + renderers = { + attributeIdentifier = { + \markdownSetup{ + renderers = { + tableAttributeContextEnd = { + \label{##1} + \group_end: + }, + }, + } + }, + }, + } + }, + tableAttributeContextEnd = { + \group_end: + }, + }, +} +\ExplSyntaxOff +\begin{document} +\begin{markdown} +See Table <#example-table>. + +| Right | Left | Default | Center | +|------:|:-----|---------|:------:| +| 12 | 12 | 12 | 12 | +| 123 | 123 | 123 | 123 | +| 1 | 1 | 1 | 1 | + + : Demonstration of pipe table syntax. {#example-table} +\end{markdown} +\end{document} +``````` +Next, invoke LuaTeX from the terminal: +``` sh +lualatex document.tex +`````` +A PDF document named `document.pdf` should be produced and contain the +following text: + +> See Table 1. +> +> | Right | Left | Default | Center | +> |------:|:-----|---------|:------:| +> | 12 | 12 | 12 | 12 | +> | 123 | 123 | 123 | 123 | +> | 1 | 1 | 1 | 1 | +> +> : Table 1. Demonstration of pipe table syntax. + +%</manual-tokens> +%<*tex> +% \fi +% +% \begin{macrocode} +\def\markdownRendererTableAttributeContextBegin{% + \markdownRendererTableAttributeContextBeginPrototype}% +\ExplSyntaxOn +\seq_gput_right:Nn + \g_@@_renderers_seq + { tableAttributeContextBegin } +\prop_gput:Nnn + \g_@@_renderer_arities_prop + { tableAttributeContextBegin } + { 0 } +\ExplSyntaxOff +\def\markdownRendererTableAttributeContextEnd{% + \markdownRendererTableAttributeContextEndPrototype}% +\ExplSyntaxOn +\seq_gput_right:Nn + \g_@@_renderers_seq + { tableAttributeContextEnd } +\prop_gput:Nnn + \g_@@_renderer_arities_prop + { tableAttributeContextEnd } + { 0 } +\ExplSyntaxOff +% \end{macrocode} +% \par +% +% \iffalse +%</tex> +%<*manual-tokens> +% \fi +% +% \begin{markdown} + #### Table Renderer The \mdef{markdownRendererTable} macro represents a table. This macro will only be produced, when the \Opt{pipeTables} option is enabled. The macro receives the @@ -17243,10 +19288,10 @@ following text: % % \begin{markdown} -#### Tex Math Renderers +#### \TeX{} Math Renderers The \mdef{markdownRendererInlineMath} and \mdef{markdownRendererDisplayMath} macros represent inline and display \TeX{} math. -Both macros receive a single argument that corresponds to the tex math content. +Both macros receive a single argument that corresponds to the \TeX{} math content. These macros will only be produced, when the \Opt{texMathDollars}, \Opt{texMathSingleBackslash}, or \Opt{texMathDoubleBackslash} option are enabled. @@ -17329,7 +19374,7 @@ $$\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^ ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -17375,98 +19420,6 @@ following text: % % \begin{markdown} -#### Text Citations Renderer -The \mdef{markdownRendererTextCite} macro represents a string of one or more -text citations. This macro will only be produced, when the -\Opt{citations} option is enabled. The macro receives parameters in the same -format as the \mref{markdownRendererCite} macro. - -% \end{markdown} -% -% \iffalse - -##### \LaTeX{} Example {.unnumbered} - -Using a text editor, create a text document named `document.tex` with the -following content: -``` tex -\documentclass{article} -\usepackage[citations]{markdown} -\newcount\citationsCounter -\newcount\citationsTotal -\makeatletter -\def\citations#1#2#3#4{% - a text citation \emph{#4} - \advance\citationsCounter by 1\relax - \ifx\relax#2\relax - \ifx\relax#3\relax\else - with a postfix \emph{#3}% - \fi - \else - with a prefix \emph{#2}% - \ifx\relax#3\relax\else - \ and a postfix \emph{#3}% - \fi - \fi - \ifnum\citationsCounter>\citationsTotal\relax - .% - \expandafter\@gobble - \else - , and - \fi\citations} -\makeatother -\markdownSetup{ - renderers = { - textCite = {% - \citationsCounter=1% - \citationsTotal=#1% - This is - \expandafter\citations - }, - }, -} -\begin{document} -\begin{markdown} -@abrahams90 [pp. 12; also @eijkhout91] -\end{markdown} -\end{document} -``````` -Next, invoke LuaTeX from the terminal: -``` sh -lualatex document.tex -`````` -A PDF document named `document.pdf` should be produced and contain the -following text: - -> This is a text citation *abrahams90* with a postfix *pp. 12*, -> and a citation *eijkhout91* with a prefix *also*. - -%</manual-tokens> -%<*tex> -% \fi -% -% \begin{macrocode} -\def\markdownRendererTextCite{% - \markdownRendererTextCitePrototype}% -\ExplSyntaxOn -\seq_gput_right:Nn - \g_@@_renderers_seq - { textCite } -\prop_gput:Nnn - \g_@@_renderer_arities_prop - { textCite } - { 1 } -\ExplSyntaxOff -% \end{macrocode} -% \par -% -% \iffalse -%</tex> -%<*manual-tokens> -% \fi -% -% \begin{markdown} - #### Thematic Break Renderer The \mdef{markdownRendererThematicBreak} macro represents a thematic break. The macro receives no arguments. @@ -17558,7 +19511,7 @@ This is the second page. ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -17572,51 +19525,10 @@ following text: %</manual-tokens> %<*tex> % \fi -% \begin{markdown} -% -% The \mdef{markdownRendererHorizontalRule} and -% \mdef{markdownRendererHorizontalRulePrototype} macros have been deprecated -% and will be removed in Markdown 3.0.0. -% -% \end{markdown} % \begin{macrocode} +\def\markdownRendererThematicBreak{% + \markdownRendererThematicBreakPrototype}% \ExplSyntaxOn -\cs_new:Npn - \markdownRendererThematicBreak - { - \cs_if_exist:NTF - \markdownRendererHorizontalRule - { - \markdownWarning - { - Horizontal~rule~renderer~has~been~deprecated,~ - to~be~removed~in~Markdown~3.0.0 - } - \markdownRendererHorizontalRule - } - { - \cs_if_exist:NTF - \markdownRendererHorizontalRulePrototype - { - \markdownWarning - { - Horizontal~rule~renderer~prototype~has~been~deprecated,~ - to~be~removed~in~Markdown~3.0.0 - } - \markdownRendererHorizontalRulePrototype - } - { - \markdownRendererThematicBreakPrototype - } - } - } -\seq_gput_right:Nn - \g_@@_renderers_seq - { horizontalRule } -\prop_gput:Nnn - \g_@@_renderer_arities_prop - { horizontalRule } - { 0 } \seq_gput_right:Nn \g_@@_renderers_seq { thematicBreak } @@ -17695,7 +19607,7 @@ following content: ```````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex ````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -18182,15 +20094,300 @@ age: 99 ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: > Jane Doe is 99 years old. +%</manual-tokens> +%<*tex> % \fi +% \begin{markdown} +% +%#### Generating Plain \TeX{} Token Renderer Macros and Key-Values {#plain-tex-renderers} +% +% We define the command \mdef{@@_define_renderers:} that defines plain \TeX{} +% macros for token renderers. Futhermore, the `\markdownSetup` macro also accepts +% the `renderers` key, whose value must be a list of key-values, where the keys +% correspond to the markdown token renderer macros and the values are new +% definitions of these token renderers. +% +% \end{markdown} +% \begin{macrocode} +\ExplSyntaxOn +\cs_new:Nn \@@_define_renderers: + { + \seq_map_function:NN + \g_@@_renderers_seq + \@@_define_renderer:n + } +\cs_new:Nn \@@_define_renderer:n + { + \@@_renderer_tl_to_csname:nN + { #1 } + \l_tmpa_tl + \prop_get:NnN + \g_@@_renderer_arities_prop + { #1 } + \l_tmpb_tl + \@@_define_renderer:ncV + { #1 } + { \l_tmpa_tl } + \l_tmpb_tl + } +\cs_new:Nn \@@_renderer_tl_to_csname:nN + { + \tl_set:Nn + \l_tmpa_tl + { \str_uppercase:n { #1 } } + \tl_set:Nx + #2 + { + markdownRenderer + \tl_head:f { \l_tmpa_tl } + \tl_tail:n { #1 } + } + } +\tl_new:N + \l_@@_renderer_definition_tl +\cs_new:Nn \@@_define_renderer:nNn + { + \keys_define:nn + { markdown/options/renderers } + { + #1 .code:n = { + \tl_set:Nn + \l_@@_renderer_definition_tl + { ##1 } + \regex_replace_all:nnN + { \cP\#0 } + { #1 } + \l_@@_renderer_definition_tl + \cs_generate_from_arg_count:NNnV + #2 + \cs_set:Npn + { #3 } + \l_@@_renderer_definition_tl + }, + } + } +\cs_generate_variant:Nn + \@@_define_renderer:nNn + { ncV } +\cs_generate_variant:Nn + \cs_generate_from_arg_count:NNnn + { NNnV } +\keys_define:nn + { markdown/options } + { + renderers .code:n = { + \keys_set:nn + { markdown/options/renderers } + { #1 } + }, + } +\ExplSyntaxOff +% \end{macrocode} +% \par +% \begin{markdown} +% +% The following example code showcases a possible configuration of the +% \mref{markdownRendererLink} and \mref{markdownRendererEmphasis} token +% renderer macros. +% ``` tex +% \markdownSetup{ +% renderers = { +% link = {#4}, \% Render links as the link title. +% emphasis = {{\it #1}}, \% Render emphasized text using italics. +% } +% } +% ``````` +% +% In addition to exact token renderer names, we also support wildcards +% and enumerations that match multiple token renderer names: +% ``` tex +% \markdownSetup{ +% renderers = { +% heading* = {{\bf #1}}, \% Render headings using the bold face. +% jekyllData(String|Number) = { \% Render YAML string and numbers +% {\it #2}\% \% using italics. +% }, +% } +% } +% ``````` +% +% Wildcards and enumerations can be combined: +% ``` tex +% \markdownSetup{ +% renderers = { +% *lItem(|End) = {"}, \% Quote ordered/bullet list items. +% } +% } +% ``````` +% +% To determine the current token renderer, you can use the parameter `#0`: +% ``` tex +% \markdownSetup{ +% renderers = { +% heading* = {#0: #1}, \% Render headings as the renderer name +% } \% followed by the heading text. +% } +% ``````` +% +% \end{markdown} +% \begin{macrocode} +\ExplSyntaxOn +\prop_new:N + \g_@@_glob_cache_prop +\tl_new:N + \l_@@_current_glob_tl +\cs_new:Nn + \@@_glob_seq:nnN + { + \tl_set:Nn + \l_@@_current_glob_tl + { ^ #1 $ } + \prop_get:NeNTF + \g_@@_glob_cache_prop + { #2 / \l_@@_current_glob_tl } + \l_tmpa_clist + { + \seq_set_from_clist:NN + #3 + \l_tmpa_clist + } + { + \seq_clear:N + #3 + \regex_replace_all:nnN + { \* } + { .* } + \l_@@_current_glob_tl + \regex_set:NV + \l_tmpa_regex + \l_@@_current_glob_tl + \seq_map_inline:cn + { #2 } + { + \regex_match:NnT + \l_tmpa_regex + { ##1 } + { + \seq_put_right:Nn + #3 + { ##1 } + } + } + \clist_set_from_seq:NN + \l_tmpa_clist + #3 + \prop_gput:NeV + \g_@@_glob_cache_prop + { #2 / \l_@@_current_glob_tl } + \l_tmpa_clist + } + } +% TODO: Remove in TeX Live 2023. +\prg_generate_conditional_variant:Nnn + \prop_get:NnN + { NeN } + { TF } +\cs_generate_variant:Nn + \regex_set:Nn + { NV } +\cs_generate_variant:Nn + \prop_gput:Nnn + { NeV } +\seq_new:N + \l_@@_renderer_glob_results_seq +\keys_define:nn + { markdown/options/renderers } + { + unknown .code:n = { + \@@_glob_seq:VnN + \l_keys_key_str + { g_@@_renderers_seq } + \l_@@_renderer_glob_results_seq + \seq_if_empty:NTF + \l_@@_renderer_glob_results_seq + { + \msg_error:nnV + { markdown } + { undefined-renderer } + \l_keys_key_str + } + { + \tl_set:Nn + \l_@@_renderer_definition_tl + { #1 } + \seq_map_inline:Nn + \l_@@_renderer_glob_results_seq + { + \@@_renderer_tl_to_csname:nN + { ##1 } + \l_tmpa_tl + \prop_get:NnN + \g_@@_renderer_arities_prop + { ##1 } + \l_tmpb_tl + \int_set:Nn + \l_tmpa_int + \l_tmpb_tl + \tl_set:NV + \l_tmpb_tl + \l_@@_renderer_definition_tl + \regex_replace_all:nnN + { \cP\#0 } + { ##1 } + \l_tmpb_tl + \cs_generate_from_arg_count:cNVV + { \l_tmpa_tl } + \cs_set:Npn + \l_tmpa_int + \l_tmpb_tl + } + } + }, + } +\msg_new:nnn + { markdown } + { undefined-renderer } + { + Renderer~#1~is~undefined. + } +\cs_generate_variant:Nn + \@@_glob_seq:nnN + { VnN } +\cs_generate_variant:Nn + \cs_generate_from_arg_count:NNnn + { cNVV } +\cs_generate_variant:Nn + \msg_error:nnn + { nnV } +% \end{macrocode} +% \begin{markdown} +% +% If plain \TeX{} is the top layer, we use the \mref{@@_define_renderers:} +% macro to define plain \TeX{} token renderer macros and key-values +% immediately. Otherwise, we postpone the definition until the upper layers +% have been loaded. % +% \end{markdown} +% \begin{macrocode} +\str_if_eq:VVT + \c_@@_top_layer_tl + \c_@@_option_layer_plain_tex_tl + { + \@@_define_renderers: + } +\ExplSyntaxOff +% \end{macrocode} +% \iffalse +%</tex> +%<*manual-tokens> +% \fi % \begin{markdown} ### Token Renderer Prototypes {#texrendererprototypes} @@ -18250,13 +20447,13 @@ following content: ~ \end{markdown} -\begin{markdown*}{ +\begin{markdown}[ renderers = { tilde = {User-defined token renderers take precedence.}, }, -} +] ~ -\end{markdown*} +\end{markdown} \end{document} ``````` Next, invoke LuaTeX from the terminal: @@ -18294,7 +20491,7 @@ following content: ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -18416,7 +20613,7 @@ age: 99 ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -18435,49 +20632,89 @@ following text: % \end{macrocode} % \begin{markdown} % -% The following \TeX{} macros provide definitions for the token renderers (see -% Section <#sec:texrenderersuser>) that have not been redefined by the -% user. These macros are intended to be redefined by macro package authors -% who wish to provide sensible default token renderers. They are also redefined -% by the \LaTeX{} and \Hologo{ConTeXt} implementations (see sections -% <#sec:lateximplementation> and <#sec:contextimplementation>). +% The `jekyllDataRenderers` key can be used as a syntactic sugar for setting +% the `markdown/jekyllData` key--values without using the expl3 language. % % \end{markdown} % \begin{macrocode} \ExplSyntaxOn -\cs_new:Nn \@@_plaintex_define_renderer_prototypes: +\@@_with_various_cases:nn + { jekyllDataRenderers } { - \seq_map_function:NN - \g_@@_renderers_seq - \@@_plaintex_define_renderer_prototype:n - \let\markdownRendererBlockHtmlCommentBeginPrototype=\iffalse - \let\markdownRendererBlockHtmlCommentBegin=\iffalse - \let\markdownRendererBlockHtmlCommentEndPrototype=\fi - \let\markdownRendererBlockHtmlCommentEnd=\fi + \keys_define:nn + { markdown/options } + { + #1 .code:n = { + \tl_set:Nn + \l_tmpa_tl + { ##1 } % \end{macrocode} % \begin{markdown} % -% The \mref{markdownRendererFootnote} and -% \mref{markdownRendererFootnotePrototype} macros have been deprecated -% and will be removed in Markdown 3.0.0. +% To ensure that keys containing forward slashes get passed correctly, we +% replace all forward slashes in the input with backslash tokens with category +% code letter and then undo the replacement. This means that if any unbraced +% backslash tokens with category code letter exist in the input, they will be +% replaced with forward slashes. However, this should be extremely rare. % % \end{markdown} % \begin{macrocode} - \cs_undefine:N \markdownRendererFootnote - \cs_undefine:N \markdownRendererFootnotePrototype + \tl_replace_all:NnV + \l_tmpa_tl + { / } + \c_backslash_str + \keys_set:nV + { markdown/options/jekyll-data-renderers } + \l_tmpa_tl + }, + } + } +\keys_define:nn + { markdown/options/jekyll-data-renderers } + { + unknown .code:n = { + \tl_set_eq:NN + \l_tmpa_tl + \l_keys_key_str + \tl_replace_all:NVn + \l_tmpa_tl + \c_backslash_str + { / } + \tl_put_right:Nn + \l_tmpa_tl + { + .code:n = { #1 } + } + \keys_define:nV + { markdown/jekyllData } + \l_tmpa_tl + } + } +\cs_generate_variant:Nn + \keys_define:nn + { nV } +\ExplSyntaxOff % \end{macrocode} % \begin{markdown} % -% The \mref{markdownRendererHorizontalRule} and -% \mref{markdownRendererHorizontalRulePrototype} macros have been deprecated -% and will be removed in Markdown 3.0.0. +%#### Generating Plain \TeX{} Token Renderer Prototype Macros and Key-Values {#plain-tex-renderer-prototypes} +% +% We define the command \mdef{@@_define_renderer_prototypes:} that defines plain \TeX{} +% macros for token renderer prototypes. Futhermore, the `\markdownSetup` macro also accepts +% the `rendererPrototype` key, whose value must be a list of key-values, where the keys +% correspond to the markdown token renderer prototype macros and the values are new +% definitions of these token renderer prototypes. % % \end{markdown} % \begin{macrocode} - \cs_undefine:N \markdownRendererHorizontalRule - \cs_undefine:N \markdownRendererHorizontalRulePrototype +\ExplSyntaxOn +\cs_new:Nn \@@_define_renderer_prototypes: + { + \seq_map_function:NN + \g_@@_renderers_seq + \@@_define_renderer_prototype:n } -\cs_new:Nn \@@_plaintex_define_renderer_prototype:n +\cs_new:Nn \@@_define_renderer_prototype:n { \@@_renderer_prototype_tl_to_csname:nN { #1 } @@ -18486,7 +20723,8 @@ following text: \g_@@_renderer_arities_prop { #1 } \l_tmpb_tl - \@@_plaintex_define_renderer_prototype:cV + \@@_define_renderer_prototype:ncV + { #1 } { \l_tmpa_tl } \l_tmpb_tl } @@ -18504,23 +20742,191 @@ following text: Prototype } } -\cs_new:Nn \@@_plaintex_define_renderer_prototype:Nn +\tl_new:N + \l_@@_renderer_prototype_definition_tl +\cs_new:Nn \@@_define_renderer_prototype:nNn { - \cs_generate_from_arg_count:NNnn - #1 - \cs_set:Npn - { #2 } - { } + \keys_define:nn + { markdown/options/renderer-prototypes } + { + #1 .code:n = { + \tl_set:Nn + \l_@@_renderer_prototype_definition_tl + { ##1 } + \regex_replace_all:nnN + { \cP\#0 } + { #1 } + \l_@@_renderer_prototype_definition_tl + \cs_generate_from_arg_count:NNnV + #2 + \cs_set:Npn + { #3 } + \l_@@_renderer_prototype_definition_tl + }, + } +% \end{macrocode} +% \begin{markdown} +% +% Unless the token renderer prototype macro has already been defined, +% we provide an empty definition. +% +% \end{markdown} +% \begin{macrocode} + \cs_if_free:NT + #2 + { + \cs_generate_from_arg_count:NNnn + #2 + \cs_set:Npn + { #3 } + { } + } } \cs_generate_variant:Nn - \@@_plaintex_define_renderer_prototype:Nn - { cV } -\@@_plaintex_define_renderer_prototypes: + \@@_define_renderer_prototype:nNn + { ncV } \ExplSyntaxOff % \end{macrocode} % \par % \begin{markdown} % +% The following example code showcases a possible configuration of the +% `\markdownRendererImagePrototype` and `\markdownRendererCodeSpanPrototype` +% token renderer prototype macros. +% ``` tex +% \markdownSetup{ +% rendererPrototypes = { +% image = {\pdfximage{#2}}, \% Embed PDF images in the document. +% codeSpan = {{\tt #1}}, \% Render inline code using monospace. +% } +% } +% ``````` +% +% In addition to exact token renderer names, we also support wildcards +% and enumerations that match multiple token renderer prototype names: +% ``` tex +% \markdownSetup{ +% rendererPrototypes = { +% heading* = {{\bf #1}}, \% Render headings using the bold face. +% jekyllData(String|Number) = { \% Render YAML string and numbers +% {\it #2}\% \% using italics. +% }, +% } +% } +% ``````` +% +% Wildcards and enumerations can be combined: +% ``` tex +% \markdownSetup{ +% rendererPrototypes = { +% *lItem(|End) = {"}, \% Quote ordered/bullet list items. +% } +% } +% ``````` +% +% To determine the current token renderer prototype, you can use the +% parameter `#0`: +% ``` tex +% \markdownSetup{ +% rendererPrototypes = { +% heading* = {#0: #1}, \% Render headings as the renderer prototype +% } \% name followed by the heading text. +% } +% ``````` +% +% \end{markdown} +% \begin{macrocode} +\ExplSyntaxOn +\seq_new:N + \l_@@_renderer_prototype_glob_results_seq +\keys_define:nn + { markdown/options/renderer-prototypes } + { + unknown .code:n = { + \@@_glob_seq:VnN + \l_keys_key_str + { g_@@_renderers_seq } + \l_@@_renderer_prototype_glob_results_seq + \seq_if_empty:NTF + \l_@@_renderer_prototype_glob_results_seq + { + \msg_error:nnV + { markdown } + { undefined-renderer-prototype } + \l_keys_key_str + } + { + \tl_set:Nn + \l_@@_renderer_prototype_definition_tl + { #1 } + \seq_map_inline:Nn + \l_@@_renderer_prototype_glob_results_seq + { + \@@_renderer_prototype_tl_to_csname:nN + { ##1 } + \l_tmpa_tl + \prop_get:NnN + \g_@@_renderer_arities_prop + { ##1 } + \l_tmpb_tl + \int_set:Nn + \l_tmpa_int + \l_tmpb_tl + \tl_set:NV + \l_tmpb_tl + \l_@@_renderer_prototype_definition_tl + \regex_replace_all:nnN + { \cP\#0 } + { ##1 } + \l_tmpb_tl + \cs_generate_from_arg_count:cNVV + { \l_tmpa_tl } + \cs_set:Npn + \l_tmpa_int + \l_tmpb_tl + } + } + }, + } +\msg_new:nnn + { markdown } + { undefined-renderer-prototype } + { + Renderer~prototype~#1~is~undefined. + } +\@@_with_various_cases:nn + { rendererPrototypes } + { + \keys_define:nn + { markdown/options } + { + #1 .code:n = { + \keys_set:nn + { markdown/options/renderer-prototypes } + { ##1 } + }, + } + } +% \end{macrocode} +% \begin{markdown} +% +% If plain \TeX{} is the top layer, we use the \mref{@@_define_renderer_prototypes:} +% macro to define plain \TeX{} token renderer prototype macros and key-values +% immediately. Otherwise, we postpone the definition until the upper layers +% have been loaded. +% +% \end{markdown} +% \begin{macrocode} +\str_if_eq:VVT + \c_@@_top_layer_tl + \c_@@_option_layer_plain_tex_tl + { + \@@_define_renderer_prototypes: + } +\ExplSyntaxOff +% \end{macrocode} +% \begin{markdown} +% %### Logging Facilities % The \mdef{markdownInfo}, \mdef{markdownWarning}, and \mdef{markdownError} % macros perform logging for the Markdown package. Their first argument @@ -18529,6 +20935,10 @@ following text: % text. You may redefine these macros to redirect and process the info, % warning, and error messages. % +% The \mref{markdownInfo}, \mref{markdownWarning}, and \mref{markdownError} +% macros have been deprecated and will be removed in the next major version of +% the Markdown package. +% %### Miscellanea % The \mdef{markdownMakeOther} macro is used by the package, when a \TeX{} % engine that does not support direct Lua access is starting to buffer a text. @@ -18572,72 +20982,26 @@ following text: |endgroup % \end{macrocode} % \begin{markdown} -% The macro is exposed in the interface, so that the user can create their own -% markdown environments. Due to the way the arguments are passed to Lua (see -% Section <#sec:direct-lua>), the first argument may not contain the -% string `]]` (regardless of the category code of the bracket symbol (`]`)). -% -% The \mdef{markdownMode} macro specifies how the plain \TeX{} implementation -% interfaces with the Lua interface. The valid values and their meaning are -% as follows: -% -% - `0` – Shell escape via the 18 output file stream -% - `1` – Shell escape via the Lua `os.execute` method -% - `2` – Direct Lua access -% - `3` – The \pkg{lt3luabridge} Lua package -% -% By defining the macro, the user can coerce the package to use a specific mode. -% If the user does not define the macro prior to loading the plain \TeX{} -% implementation, the correct value will be automatically detected. The outcome -% of changing the value of \mref{markdownMode} after the implementation has been -% loaded is undefined. -% -% The \mref{markdownMode} macro has been deprecated and will be removed in -% Markdown 3.0.0. The code that corresponds to \mref{markdownMode} value of `3` -% will be the only implementation. +% The macro is exposed in the interface, so that users can create their own +% markdown environments. Due to the way the arguments are passed to Lua, the +% first argument may not contain the string `]]` (regardless of the category +% code of the bracket symbol). % +% The `code` key, which can be used to immediately expand and execute code. % \end{markdown} % \begin{macrocode} \ExplSyntaxOn -\cs_if_exist:NF - \markdownMode +\keys_define:nn + { markdown/options } { - \file_if_exist:nTF - { lt3luabridge.tex } - { - \cs_new:Npn - \markdownMode - { 3 } - } - { - \cs_if_exist:NTF - \directlua - { - \cs_new:Npn - \markdownMode - { 2 } - } - { - \cs_new:Npn - \markdownMode - { 0 } - } - } + code .code:n = { #1 }, } \ExplSyntaxOff % \end{macrocode} -% \par % \begin{markdown} -% -% The \mdef{markdownLuaRegisterIBCallback} and -% \mdef{markdownLuaUnregisterIBCallback} macros have been deprecated and will -% be removed in Markdown 3.0.0: +% This can be especially useful in snippets. % % \end{markdown} -% \begin{macrocode} -\def\markdownLuaRegisterIBCallback#1{\relax}% -\def\markdownLuaUnregisterIBCallback#1{\relax}% -% \end{macrocode} % \iffalse %</tex> % \fi @@ -18674,9 +21038,9 @@ following content: $\sqrt{-1}$ *equals* $i$ \end{markdown} -\begin{markdown*}{hybrid} +\begin{markdown}[texMathDollars] $\sqrt{-1}$ *equals* $i$ -\end{markdown*} +\end{markdown} \end{document} ``````` @@ -18710,15 +21074,26 @@ pdflatex --shell-escape document.tex % rest of the interface is inherited from the plain \TeX{} interface (see % Section <#sec:texinterface>). % -% The \LaTeX{} implementation redefines the plain \TeX{} logging macros (see -% Section <#sec:tex-interface-logging>) to use the \LaTeX{} `\PackageInfo`, -% `\PackageWarning`, and `\PackageError` macros. +% To determine whether \LaTeX{} is the top layer or if there are other +% layers above \LaTeX{}, we take a look on whether the +% \mref{c_@@_top_layer_tl} token list has already been defined. If not, +% we will assume that \LaTeX{} is the top layer. % % \end{markdown} % \begin{macrocode} -\newcommand\markdownInfo[1]{\PackageInfo{markdown}{#1}}% -\newcommand\markdownWarning[1]{\PackageWarning{markdown}{#1}}% -\newcommand\markdownError[2]{\PackageError{markdown}{#1}{#2.}}% +\ExplSyntaxOn +\tl_const:Nn \c_@@_option_layer_latex_tl { latex } +\cs_generate_variant:Nn + \tl_const:Nn + { NV } +\tl_if_exist:NF + \c_@@_top_layer_tl + { + \tl_const:NV + \c_@@_top_layer_tl + \c_@@_option_layer_latex_tl + } +\ExplSyntaxOff \input markdown/markdown % \end{macrocode} % \begin{markdown} @@ -18733,12 +21108,12 @@ pdflatex --shell-escape document.tex % where \meta{options} are the \LaTeX{} interface options (see Section % <#sec:latex-options>). Note that \meta{options} inside the `\usepackage` % macro may not set the `markdownRenderers` (see Section -% <#sec:latex-renderers>) and `markdownRendererPrototypes` (see Section -% <#sec:latex-renderer-prototypes>) keys. Furthermore, although the +% <#sec:plain-tex-renderers>) and `markdownRendererPrototypes` (see Section +% <#sec:plain-tex-renderer-prototypes>) keys. Furthermore, although the % base variant of the `import` key that loads a single \LaTeX{} theme % (see Section <#sec:latexthemes>) can be used, the extended variant % that can load multiple themes and import snippets from them (see -% Section <#sec:latexsnippets>). This limitation is due to the way +% Section <#sec:snippets>) cannot. This limitation is due to the way % \Hologo{LaTeX2e} parses package options. % % \end{markdown} @@ -18749,11 +21124,14 @@ pdflatex --shell-escape document.tex % The interface exposes the \envmdef{markdown} and \envmdef{markdown*} % \LaTeX{} environments, and redefines the \mref{markdownInput} command. % -% The \envmref{markdown} and \envmref{markdown*} \LaTeX{} environments are used to -% typeset markdown document fragments. The starred version of the -% \envmref{markdown} environment accepts \LaTeX{} interface options (see -% Section <#sec:latex-options>) as its only argument. These options will -% only influence this markdown document fragment. +% The \envmref{markdown} and \envmref{markdown*} \LaTeX{} environments are used +% to typeset markdown document fragments. Both \LaTeX{} environments accept +% \LaTeX{} interface options (see ection <#sec:latex-options>) as the only +% argument. This argument is optional for the \envmref{markdown} environment +% and mandatory for the \envmref{markdown*} environment. +% +% The \envmref{markdown*} environment has been deprecated and will be removed +% in the next major version of the Markdown package. % % \end{markdown} % \begin{macrocode} @@ -18763,7 +21141,7 @@ pdflatex --shell-escape document.tex % \markdownBegin % % You may prepend your own code to the \mdef{markdown} macro and append your own -% code to the \mdef{endmarkdown} macro to produce special effects before and after +% code to the \mref{markdownEnd} macro to produce special effects before and after % the \envmref{markdown} \LaTeX{} environment (and likewise for the starred % version). % @@ -18778,7 +21156,7 @@ pdflatex --shell-escape document.tex % \usepackage{markdown} \usepackage{markdown} % \begin{document} \begin{document} % \% ... \% ... -% \begin{markdown} \begin{markdown*}{smartEllipses} +% \begin{markdown}[smartEllipses] \begin{markdown*}{smartEllipses} % _Hello_ **world** ... _Hello_ **world** ... % \end{markdown} \end{markdown*} % \% ... \% ... @@ -18812,9 +21190,6 @@ pdflatex --shell-escape document.tex % part is optional, and \meta{key} will be interpreted as \meta{key}`=true` % if the `=`\meta{value} part has been omitted. % -% Except for the `plain` option described in Section <#sec:latexplain>, and -% the \LaTeX{} themes described in Section <#sec:latexthemes>, and the -% \LaTeX{} snippets described in Section <#sec:latex-setup-snippets>, % \LaTeX{} options map directly to the options recognized by the plain % \TeX{} interface (see Section <#sec:tex-options>) and to the markdown token % renderers and their prototypes recognized by the plain \TeX{} interface (see @@ -18822,75 +21197,36 @@ pdflatex --shell-escape document.tex % % The \LaTeX{} options may be specified when loading the \LaTeX{} package, when % using the \envmref{markdown*} \LaTeX{} environment or the \mref{markdownInput} -% macro (see Section <#sec:latexinterface>), or via the \mdef{markdownSetup} -% macro. The \mref{markdownSetup} macro receives the options to set up as its only -% argument: -% -% \markdownEnd -% \begin{macrocode} -\ExplSyntaxOn -\cs_new:Nn - \@@_setup:n - { - \keys_set:nn - { markdown/latex-options } - { #1 } - } -\let\markdownSetup=\@@_setup:n -\ExplSyntaxOff -% \end{macrocode} -% \begin{markdown} +% macro (see Section <#sec:latexinterface>), or via the \mref{markdownSetup} +% macro. % -%#### \LaTeX{} snippets {#latex-setup-snippets} +%#### Finalizing and Freezing the Cache % -% We may also set up \LaTeX{} options as *snippets* using the -% \mdef{markdownSetupSnippet} macro and invoke them later. The -% \mref{markdownSetupSnippet} macro receives two arguments: the name -% of the snippet and the options to store: +% To ensure compatibility with the `minted` package [@poore17, Section +% 5.1], which supports the `finalizecache` and `frozencache` package options +% with similar semantics to the \Opt{finalizeCache} and \Opt{frozenCache} plain +% \TeX{} options, the Markdown package also recognizes these as aliases +% and accepts them as document class options. By passing `finalizecache` and +% `frozencache` as document class options, you may conveniently control the +% behavior of both packages at once: % -% \end{markdown} -% \begin{macrocode} -\ExplSyntaxOn -\cs_new:Nn - \@@_latex_setup_snippet:nn - { - \markdownIfSnippetExists - { #1 } - { - \markdownWarning - {Redefined~snippet~\markdownLaTeXThemeName#1} - \csname markdownLaTeXSetupSnippet% - \markdownLaTeXThemeName#1\endcsname={#2} - } - { - \newtoks\next - \next={#2} - \expandafter\let\csname markdownLaTeXSetupSnippet% - \markdownLaTeXThemeName#1\endcsname=\next - } - } -\let\markdownSetupSnippet=\@@_latex_setup_snippet:nn -\ExplSyntaxOff -% \end{macrocode} -% \begin{markdown} +% ``` tex +% \documentclass[frozencache]{article} +% \usepackage{markdown,minted} +% \begin{document} +% % ... +% \end{document} +% ``````` % -% To decide whether a snippet exists, we can use the -% \mdef{markdownIfSnippetExists} macro: +% We hope that other packages will support the `finalizecache` and +% `frozencache` package options in the future, so that they can become a +% standard interface for preparing \LaTeX{} document sources for distribution. % -% \end{markdown} +% \markdownEnd % \begin{macrocode} -\newcommand\markdownIfSnippetExists[3]{% - \@ifundefined - {markdownLaTeXSetupSnippet\markdownLaTeXThemeName#1}% - {#3}{#2}}% +\DeclareOption{finalizecache}{\markdownSetup{finalizeCache}} +\DeclareOption{frozencache}{\markdownSetup{frozenCache}} % \end{macrocode} -% \begin{markdown} -% -% See Section <#sec:latexthemes> for information on interactions between -% snippets and \LaTeX{} themes. See Section <#sec:latexsnippets> -% for information about invoking the set-up snippets. -% -% \end{markdown} % \iffalse %</latex> %<*manual-options> @@ -18914,133 +21250,95 @@ following code in our \LaTeX{} document: ``` We can also set all plain \TeX{} options directly from \LaTeX{}. For example, -to set the `\markdownOptionHelperScriptFileName` plain \TeX{} option to +to set the `\markdownOptionInputTempFileName` plain \TeX{} option to `helper-script.lua`, we would inclde the following code in our \LaTeX{} document: ``` tex \markdownSetup{ - helperScriptFileName = helper-script.lua, + inputTempFileName = temporary-input.md, } ``` %</manual-options> %<*latex> % \fi -% \par % \begin{markdown} % -% To enable the enumeration of \LaTeX{} options, we will maintain the -% \mdef{g_\@\@_latex_options_seq} sequence. +%#### Generating Plain \TeX{} Option, Token Renderer, and Token Renderer Prototype Macros and Key-Values +% +% If \LaTeX{} is the top layer, we use the +% \mref{@@_define_option_commands_and_keyvals:}, \mref{@@_define_renderers:}, +% and \mref{@@_define_renderer_prototypes:} macro to define plain \TeX{} +% option, token renderer, and token renderer prototype macros and key-values +% immediately. Otherwise, we postpone the definition until the upper layers +% have been loaded. % % \end{markdown} % \begin{macrocode} \ExplSyntaxOn -\seq_new:N \g_@@_latex_options_seq +\str_if_eq:VVT + \c_@@_top_layer_tl + \c_@@_option_layer_latex_tl + { + \@@_define_option_commands_and_keyvals: + \@@_define_renderers: + \@@_define_renderer_prototypes: + } +\ExplSyntaxOff % \end{macrocode} +% \par % \begin{markdown} % -% To enable the reflection of default \LaTeX{} options and their types, we -% will maintain the \mdef{g_\@\@_default_latex_options_prop} and -% \mdef{g_\@\@_latex_option_types_prop} property lists, respectively. +% The following example \LaTeX{} code showcases a possible configuration of +% plain \TeX{} interface options \Opt{hybrid}, \Opt{smartEllipses}, and +% \Opt{cacheDir}. +% ``` tex +% \markdownSetup{ +% hybrid, +% smartEllipses, +% cacheDir = /tmp, +% } +% ``````` % % \end{markdown} -% \begin{macrocode} -\prop_new:N \g_@@_latex_option_types_prop -\prop_new:N \g_@@_default_latex_options_prop -\tl_const:Nn \c_@@_option_layer_latex_tl { latex } -\seq_gput_right:NV \g_@@_option_layers_seq \c_@@_option_layer_latex_tl -\cs_new:Nn - \@@_add_latex_option:nnn - { - \@@_add_option:Vnnn - \c_@@_option_layer_latex_tl - { #1 } - { #2 } - { #3 } - } -% \end{macrocode} % \iffalse %</latex> %<*manual-options> % \fi % \begin{markdown} -#### No default token renderer prototypes {#latexplain} - -Default token renderer prototypes require \LaTeX{} packages that may clash with -other packages used in a document. Additionally, if we redefine token -renderers and renderer prototypes ourselves, the default definitions will bring -no benefit to us. Using the `plain` package option, we can keep the default -definitions from the plain \TeX{} implementation -% (see Section <#sec:tex-token-renderer-prototypes>) -and prevent the soft \LaTeX{} prerequisites -% in Section <#sec:latex-prerequisites> -from being loaded: The plain option must be set before or when loading the -package. Setting the option after loading the package will have no effect. - -``` tex -\usepackage[plain]{markdown} -``````` +### Themes {#latexthemes} -% \end{markdown} -% \iffalse -%</manual-options> -%<*latex> +% In Section~\ref{sec:themes}, we described the concept of themes. +In \LaTeX{}, we expand on the concept of +% themes\iffalse +[themes](#themes) % \fi -% \begin{macrocode} -\@@_add_latex_option:nnn - { plain } - { boolean } - { false } -\ExplSyntaxOff -% \end{macrocode} -% \iffalse -%</latex> -%<*manual-options> -% \fi -% \begin{markdown} +by allowing a theme to be a full-blown \LaTeX{} package. Specifically, the +key-values `theme`=\meta{theme name} and `import`=\meta{theme name} load a +\LaTeX{} package named `markdowntheme`\meta{munged theme name}`.sty` if it +exists and a \TeX{} document named `markdowntheme`\meta{munged theme +name}`.tex` otherwise. -#### \LaTeX{} themes {#latexthemes} +Having the Markdown package automatically load either the generic `.tex` +*theme file* or the \LaTeX{}-specific `.sty` theme file allows developers +to have a single *theme file*, when the theme is small or the difference +between \TeX{} formats is unimportant, and scale up to separate theme files +native to different \TeX{} formats for large multi-format themes, where +different code is needed for different \TeX{} formats. To enable code reuse, +developers can load the `.tex` theme file from the `.sty` theme file using the +\mdef{markdownLoadPlainTeXTheme} macro. -User-defined \LaTeX{} themes for the Markdown package provide a domain-specific -interpretation of Markdown tokens. Similarly to \LaTeX{} packages, themes -allow the authors to achieve a specific look and other high-level goals -without low-level programming. - -% The \LaTeX{} option `import`=\meta{theme name} loads a \LaTeX{} package -% (further referred to as *a theme*) named `markdowntheme`\meta{munged theme -% name}`.sty`, where the *munged theme name* is the *theme name* after the -% substitution of all forward slashes (`/`) for an underscore (`_`), the theme -% *name* is *qualified* and contains no underscores, and a value is qualified -% if and only if it contains at least one forward slash. Themes are inspired -% by the Beamer \LaTeX{} package, which provides similar functionality with -% its `\usetheme` macro [@tantau21, Section 15.1]. -% -% Theme names must be qualified to minimize naming conflicts between different -% themes intended for a single \LaTeX{} document class or for a single \LaTeX{} -% package. The preferred format of a theme name is \meta{theme author}`/`<!-- -% -->\meta{target \LaTeX{} document class or package}`/`\meta{private naming -% scheme}, where the *private naming scheme* may contain additional forward -% slashes. For example, a theme by a user `witiko` for the MU theme of the -% Beamer document class may have the name `witiko/beamer/MU`. -% -% Theme names are munged, because \LaTeX{} packages are identified only by -% their filenames, not by their pathnames. [@novotny21] Therefore, we can't -% store the qualified theme names directly using directories, but we must -% encode the individual segments of the qualified theme in the filename. For -% example, loading a theme named `witiko/beamer/MU` would load a \LaTeX{} -% package named `markdownthemewitiko_beamer_MU.sty`. -% -% If the \LaTeX{} option with key `theme` is (repeatedly) specified in the -% `\usepackage` macro, the loading of the theme(s) will be postponed in -% first-in-first-out order until after the Markdown \LaTeX{} package has been -% loaded. Otherwise, the theme(s) will be loaded immediately. For example, -% there is a theme named `witiko/dot`, which typesets fenced code blocks with -% the `dot` infostring as images of directed graphs rendered by the Graphviz -% tools. The following code would first load the Markdown package, then the -% `markdownthemewitiko_beamer_MU.sty` \LaTeX{} package, and finally the -% `markdownthemewitiko_dot.sty` \LaTeX{} package: +% If the \LaTeX{} option with keys `theme` or `import` is (repeatedly) +% specified in the `\usepackage` macro, the loading of the theme(s) will be +% postponed in first-in-first-out order until after the Markdown \LaTeX{} +% package has been loaded. Otherwise, the theme(s) will be loaded immediately. +% For example, there is a theme named `witiko/dot`, which typesets fenced code +% blocks with the `dot` infostring as images of directed graphs rendered by the +% Graphviz tools. The following code would first load the Markdown package, +% then the `markdownthemewitiko_beamer_MU.sty` \LaTeX{} package, and finally +% the `markdownthemewitiko_dot.sty` \LaTeX{} package: % \end{markdown} % \iffalse @@ -19066,121 +21364,22 @@ would use the following code in the preamble of your document: % \begin{macrocode} \newif\ifmarkdownLaTeXLoaded \markdownLaTeXLoadedfalse -\AtEndOfPackage{\markdownLaTeXLoadedtrue} -\ExplSyntaxOn -\tl_new:N \markdownLaTeXThemePackageName -\cs_new:Nn - \@@_set_latex_theme:n - { - \str_if_in:nnF - { #1 } - { / } - { - \markdownError - { Won't~load~theme~with~unqualified~name~#1 } - { Theme~names~must~contain~at~least~one~forward~slash } - } - \str_if_in:nnT - { #1 } - { _ } - { - \markdownError - { Won't~load~theme~with~an~underscore~in~its~name~#1 } - { Theme~names~must~not~contain~underscores~in~their~names } - } - \tl_set:Nn \markdownLaTeXThemePackageName { #1 } - \str_replace_all:Nnn - \markdownLaTeXThemePackageName - { / } - { _ } - \edef\markdownLaTeXThemePackageName{ - markdowntheme\markdownLaTeXThemePackageName} - \expandafter\markdownLaTeXThemeLoad\expandafter{ - \markdownLaTeXThemePackageName}{#1/} - } -\keys_define:nn - { markdown/latex-options } - { - import .code:n = { - \tl_set:Nn - \l_tmpa_tl - { #1 } % \end{macrocode} -% \begin{markdown} -% -% To ensure that keys containing forward slashes get passed correctly, we -% replace all forward slashes in the input with backslash tokens with category -% code letter and then undo the replacement. This means that if any unbraced -% backslash tokens with category code letter exist in the input, they will be -% replaced with forward slashes. However, this should be extremely rare. -% -% \end{markdown} -% \begin{macrocode} - \tl_replace_all:NnV - \l_tmpa_tl - { / } - \c_backslash_str - \keys_set:nV - { markdown/latex-options/import } - \l_tmpa_tl - }, - } -\cs_generate_variant:Nn - \tl_replace_all:Nnn - { NnV } -% \end{macrocode} -% \begin{markdown} -% -% The \LaTeX{} option `theme` has been deprecated and will be removed in -% Markdown 3.0.0. -% -% \end{markdown} -% \begin{macrocode} -\keys_define:nn - { markdown/latex-options } - { - theme .code:n = { \@@_set_latex_theme:n { #1 } }, - } -\ExplSyntaxOff -% \end{macrocode} -% \begin{markdown} -% -% The \LaTeX{} themes have a useful synergy with snippets (see Section -% <#sec:latex-setup-snippets>): To make it less likely that different themes -% will set up snippets with the same name, we will prepend \meta{theme -% name}`/` before the snippet name and use the result as the snippet name. -% For example, if the `witiko/dot` theme sets up the `product` snippet, the -% snippet will be available under the name `witiko/dot/product`. -% -% \end{markdown} % \iffalse %</latex> %<*manual-options> % \fi +% \par % \begin{markdown} Due to limitations of \LaTeX{}, themes may not be loaded after the beginning of a \LaTeX{} document. % \end{markdown} -% \iffalse -%</manual-options> -%<*latex> -% \fi -% \begin{macrocode} -\ExplSyntaxOn -\@onlypreamble - \@@_set_latex_theme:n -\ExplSyntaxOff -% \end{macrocode} -% \iffalse -%</latex> -%<*manual-options> -% \fi % \par % \markdownBegin -Example themes provided with the Markdown package include: +Built-in \LaTeX{} themes provided with the Markdown package include: \pkg{witiko/dot} @@ -19311,13 +21510,13 @@ conference article: > <http://ceur-ws.org/Vol-2696/paper_235.pdf> %</manual-options> -%<*latex-themes-witiko-dot> +%<*themes-witiko-dot> % \fi % \begin{macrocode} \ProvidesPackage{markdownthemewitiko_dot}[2021/03/09]% % \end{macrocode} % \iffalse -%</latex-themes-witiko-dot> +%</themes-witiko-dot> %<*manual-options> % \fi % \par @@ -19370,909 +21569,71 @@ lualatex document.tex A PDF document named `document.pdf` should be produced and contain the following image: -> ![img](https://github.com/witiko/markdown/raw/main/markdown.png -> "The banner of the Markdown package") +> ![img](https://github.com/witiko/markdown/raw/main/markdown.png "The banner of the Markdown package") %</manual-options> -%<*latex-themes-witiko-graphicx-http> +%<*themes-witiko-graphicx-http> % \fi % \begin{macrocode} \ProvidesPackage{markdownthemewitiko_graphicx_http}[2021/03/22]% % \end{macrocode} % \iffalse -%</latex-themes-witiko-graphicx-http> -%<*manual-options> -% \fi -% \par -% \markdownBegin - -\pkg{witiko/tilde} - -: A theme that makes tilde (`~`) always typeset the non-breaking space even - when the \Opt{hybrid} Lua option is disabled. -% ``` tex -% \documentclass{article} -% \usepackage[import=witiko/tilde]{markdown} -% \begin{document} -% \begin{markdown} -% Bartel~Leendert van~der~Waerden -% \end{markdown} -% \end{document} -% ``````` -% Typesetting the above document produces the following text: -% “Bartel~Leendert van~der~Waerden”. -% -% \markdownEnd -% \iffalse - -##### \LaTeX{} Example {.unnumbered} - -Using a text editor, create a text document named `document.tex` with the -following content: -``` tex -\documentclass{article} -\usepackage[import=witiko/tilde]{markdown} -\begin{document} -\begin{markdown} -Bartel~Leendert van~der~Waerden -\end{markdown} -\end{document} -``````` -Next, invoke LuaTeX from the terminal: -``` sh -lualatex document.tex -`````` -A PDF document named `document.pdf` should be produced and contain the -following text, where the middot (`·`) denotes a non-breaking space: - -> Bartel·Leendert van·der·Waerden - -%</manual-options> -%<*latex-themes-witiko-tilde> -% \fi -% \begin{macrocode} -\ProvidesPackage{markdownthemewitiko_tilde}[2021/03/22]% -% \end{macrocode} -% \iffalse -%</latex-themes-witiko-tilde> +%</themes-witiko-graphicx-http> %<*manual-options> % \fi % \par % \begin{markdown} -% -% Please, see Section <#sec:latex-themes-implementation> for implementation -% details of the example themes. -#### \LaTeX{} snippets {#latexsnippets} +\pkg{witiko/markdown/defaults} -% \end{markdown} -% \iffalse +: A \LaTeX{} theme with the default definitions of token renderer prototypes + for plain \TeX{}. This theme is loaded automatically together with the + package and explicitly loading it has no effect. -User-defined \LaTeX{} themes provide global control over high-level goals. -However, it is often desirable to change only some local aspects of a document. -\LaTeX{} snippets provide syntactic sugar for defining and invoking various -options locally. - -% \fi -% \begin{markdown} -% The \LaTeX{} option with key `snippet` invokes a snippet named \meta{value}: % \end{markdown} % \iffalse %</manual-options> %<*latex> % \fi % \begin{macrocode} -\ExplSyntaxOn -\keys_define:nn - { markdown/latex-options } - { - snippet .code:n = { - \markdownIfSnippetExists{#1} - { - \expandafter\markdownSetup\expandafter{ - \the\csname markdownLaTeXSetupSnippet - \markdownLaTeXThemeName#1\endcsname} - }{ - \markdownError - {Can't~invoke~setup~snippet~#1} - {The~setup~snippet~is~undefined} - } - } - } -\ExplSyntaxOff -% \end{macrocode} -% \iffalse -%</latex> -%<*manual-options> -% \fi -% \par -% \markdownBegin - -Here is how we can use snippets to store options and invoke them later: - -``` tex -\markdownSetupSnippet{romanNumerals}{ - renderers = { - olItemWithNumber = {% - \item[\romannumeral#1\relax.]% - }, - }, -} -\begin{markdown} - -The following ordered list will be preceded by arabic numerals: - -1. wahid -2. aithnayn - -\end{markdown} -\begin{markdown*}{snippet=romanNumerals} - -The following ordered list will be preceded by roman numerals: - -3. tres -4. quattuor - -\end{markdown*} -``````` - -If the `romanNumerals` snippet were defined in the `jdoe/lists` theme, -we could import the `jdoe/lists` theme and use the qualified name -`jdoe/lists/romanNumerals` to invoke the snippet: - -``` tex -\markdownSetup{import=jdoe/lists} -\begin{markdown*}{snippet=jdoe/lists/romanNumerals} - -The following ordered list will be preceded by roman numerals: - -3. tres -4. quattuor - -\end{markdown*} -``````` - -Alternatively, we can use the extended variant of the `import` \LaTeX{} -option that allows us to import the `romanNumerals` snippet to the -current namespace for easier access: - -``` tex -\markdownSetup{ - import = { - jdoe/lists = romanNumerals, - }, -} -\begin{markdown*}{snippet=romanNumerals} - -The following ordered list will be preceded by roman numerals: - -3. tres -4. quattuor - -\end{markdown*} -``````` - -Furthermore, we can also specify the name of the snippet in the current -namespace, which can be different from the name of the snippet in the -`jdoe/lists` theme. For example, we can make the snippet -`jdoe/lists/romanNumerals` available under the name `roman`. - -``` tex -\markdownSetup{ - import = { - jdoe/lists = romanNumerals as roman, - }, -} -\begin{markdown*}{snippet=roman} - -The following ordered list will be preceded by roman numerals: - -3. tres -4. quattuor - -\end{markdown*} -``````` - -Several themes and/or snippets can be loaded at once using the extended -variant of the `import` \LaTeX{} option: - -``` tex -\markdownSetup{ - import = { - jdoe/longpackagename/lists = { - arabic as arabic1, - roman, - alphabetic, - }, - jdoe/anotherlongpackagename/lists = { - arabic as arabic2, - }, - jdoe/yetanotherlongpackagename, - }, -} -``````` - -% \markdownEnd -% \iffalse -%</manual-options> -%<*latex> -% \fi -% \begin{macrocode} -\ExplSyntaxOn -\tl_new:N - \l_@@_latex_import_current_theme_tl -\keys_define:nn - { markdown/latex-options/import } - { -% \end{macrocode} -% \begin{markdown} -% -% If a theme name is given without a list of snippets to import, -% we assume that an empty list was given. -% -% \end{markdown} -% \begin{macrocode} - unknown .default:n = {}, - unknown .code:n = { -% \end{macrocode} -% \begin{markdown} -% -% To ensure that keys containing forward slashes get passed correctly, we -% replace all forward slashes in the input with backslash tokens with category -% code letter and then undo the replacement. This means that if any unbraced -% backslash tokens with category code letter exist in the input, they will be -% replaced with forward slashes. However, this should be extremely rare. -% -% \end{markdown} -% \begin{macrocode} - \tl_set_eq:NN - \l_@@_latex_import_current_theme_tl - \l_keys_key_str - \tl_replace_all:NVn - \l_@@_latex_import_current_theme_tl - \c_backslash_str - { / } -% \end{macrocode} -% \begin{markdown} -% -% Here, we load the \LaTeX{} theme. -% -% \end{markdown} -% \begin{macrocode} - \@@_set_latex_theme:V - \l_@@_latex_import_current_theme_tl +\AtEndOfPackage{ + \markdownLaTeXLoadedtrue % \end{macrocode} % \begin{markdown} % -% Here, we import the \LaTeX{} snippets. +% At the end of the \LaTeX{} module, we load the +% `witiko/markdown/defaults` \LaTeX{} theme (see Section <#sec:themes>) with +% the default definitions for token renderer prototypes unless the option +% `noDefaults` has been enabled (see Section <#sec:plain>). % % \end{markdown} % \begin{macrocode} - \clist_map_inline:nn - { #1 } - { - \regex_extract_once:nnNTF - { ^(.*?)\s+as\s+(.*?)$ } - { ##1 } - \l_tmpa_seq - { - \seq_pop:NN - \l_tmpa_seq - \l_tmpa_tl - \seq_pop:NN - \l_tmpa_seq - \l_tmpa_tl - \seq_pop:NN - \l_tmpa_seq - \l_tmpb_tl - } - { - \tl_set:Nn - \l_tmpa_tl - { ##1 } - \tl_set:Nn - \l_tmpb_tl - { ##1 } - } - \tl_put_left:Nn - \l_tmpa_tl - { / } - \tl_put_left:NV - \l_tmpa_tl - \l_@@_latex_import_current_theme_tl - \@@_latex_setup_snippet:Vx - \l_tmpb_tl - { snippet = { \l_tmpa_tl } } - } - }, - } -\cs_generate_variant:Nn - \tl_replace_all:Nnn - { NVn } -\cs_generate_variant:Nn - \@@_set_latex_theme:n - { V } -\cs_generate_variant:Nn - \@@_latex_setup_snippet:nn - { Vx } -\ExplSyntaxOff -% \end{macrocode} -% \begin{markdown} -% -%#### Plain \TeX{} Interface Options -% Here, we automatically define plain \TeX{} macros and the -% \meta{key}`=`\meta{value} interface for the above \LaTeX{} options. -% -% \end{markdown} -% \begin{macrocode} -\ExplSyntaxOn -\cs_new:Nn \@@_latex_define_option_commands_and_keyvals: - { - \seq_map_inline:Nn - \g_@@_latex_options_seq - { - \@@_plain_tex_define_option_command:n - { ##1 } - } -% \end{macrocode} -% \begin{markdown} -% -% Furthermore, we also define the \meta{key}`=`\meta{value} interface -% for all option macros recognized by the Lua and plain \TeX{} interfaces. -% -% \end{markdown} -% \begin{macrocode} - \seq_map_inline:Nn - \g_@@_option_layers_seq - { - \seq_map_inline:cn - { g_@@_ ##1 _options_seq } - { -% \end{macrocode} -% \begin{markdown} -% -% To make it easier to copy-and-paste options from Pandoc [@macfarlane22] such -% as `fancy_lists`, `header_attributes`, and `pipe_tables`, we accept -% snake\\\_case in addition to camelCase variants of options. As a bonus, -% studies [@sharif10] also show that snake\\\_case is faster to read than -% camelCase. -% -% \end{markdown} -% \begin{macrocode} - \@@_with_various_cases:nn - { ####1 } - { - \@@_latex_define_option_keyval:nnn - { ##1 } - { ####1 } - { ########1 } - } - } - } + \markdownIfOption{noDefaults}{}{ + \markdownSetup{theme=witiko/markdown/defaults} } -\cs_new:Nn \@@_latex_define_option_keyval:nnn - { - \prop_get:cnN - { g_@@_ #1 _option_types_prop } - { #2 } - \l_tmpa_tl - \keys_define:nn - { markdown/latex-options } - { - #3 .code:n = { - \@@_set_option_value:nn - { #2 } - { ##1 } - }, - } - \str_if_eq:VVT - \l_tmpa_tl - \c_@@_option_type_boolean_tl - { - \keys_define:nn - { markdown/latex-options } - { - #3 .default:n = { true }, - } - } -% \end{macrocode} -% \begin{markdown} -% -% For options of type `clist`, we assume that \meta{key} is a regular English -% noun in plural (such as `extensions`) and we also define the -% \meta{singular key}`=`\meta{value} interface, where \meta{singular key} is -% \meta{key} after stripping the trailing -s (such as `extension`). Rather -% than setting the option to \meta{value}, this interface appends \meta{value} -% to the current value as the rightmost item in the list. -% -% \end{markdown} -% \begin{macrocode} - \str_if_eq:VVT - \l_tmpa_tl - \c_@@_option_type_clist_tl - { - \tl_set:Nn - \l_tmpa_tl - { #3 } - \tl_reverse:N - \l_tmpa_tl - \str_if_eq:enF - { - \tl_head:V - \l_tmpa_tl - } - { s } - { - \msg_error:nnn - { markdown } - { malformed-name-for-clist-option } - { #3 } - } - \tl_set:Nx - \l_tmpa_tl - { - \tl_tail:V - \l_tmpa_tl - } - \tl_reverse:N - \l_tmpa_tl - \tl_put_right:Nn - \l_tmpa_tl - { - .code:n = { - \@@_get_option_value:nN - { #2 } - \l_tmpa_tl - \clist_set:NV - \l_tmpa_clist - { \l_tmpa_tl, { ##1 } } - \@@_set_option_value:nV - { #2 } - \l_tmpa_clist - } - } - \keys_define:nV - { markdown/latex-options } - \l_tmpa_tl - } - } -\cs_generate_variant:Nn - \clist_set:Nn - { NV } -\cs_generate_variant:Nn - \keys_define:nn - { nV } -\cs_generate_variant:Nn - \@@_set_option_value:nn - { nV } -\prg_generate_conditional_variant:Nnn - \str_if_eq:nn - { en } - { F } -\msg_new:nnn - { markdown } - { malformed-name-for-clist-option } - { - Clist~option~name~#1~does~not~end~with~-s. - } -\@@_latex_define_option_commands_and_keyvals: -\ExplSyntaxOff -% \end{macrocode} -% \par -% \begin{markdown} -% -% The \Opt{finalizeCache} and \Opt{frozenCache} plain -% \TeX{} options are exposed through \LaTeX{} options with keys `finalizeCache` -% and `frozenCache`. -% -% To ensure compatibility with the `minted` package [@poore17, Section -% 5.1], which supports the `finalizecache` and `frozencache` package options -% with similar semantics, the Markdown package also recognizes these as aliases -% and recognizes them as document class options. By passing `finalizecache` and -% `frozencache` as document class options, you may conveniently control the -% behavior of both packages at once: -% -% ``` tex -% \documentclass[frozencache]{article} -% \usepackage{markdown,minted} -% \begin{document} -% % ... -% \end{document} -% ``````` -% -% We hope that other packages will support the `finalizecache` and -% `frozencache` package options in the future, so that they can become a -% standard interface for preparing \LaTeX{} document sources for distribution. -% -% \end{markdown} -% \begin{macrocode} -\DeclareOption{finalizecache}{\markdownSetup{finalizeCache}} -\DeclareOption{frozencache}{\markdownSetup{frozenCache}} -% \end{macrocode} -% \par -% \begin{markdown} -% -% The following example \LaTeX{} code showcases a possible configuration of -% plain \TeX{} interface options \Opt{hybrid}, \Opt{smartEllipses}, and -% \Opt{cacheDir}. -% ``` tex -% \markdownSetup{ -% hybrid, -% smartEllipses, -% cacheDir = /tmp, -% } -% ``````` -% -%#### Plain \TeX{} Markdown Token Renderers {#latex-renderers} -% -% The \LaTeX{} interface recognizes an option with the `renderers` key, -% whose value must be a list of key-values, where the keys correspond -% to the markdown token renderer macros exposed by the plain \TeX{} -% interface (see Section <#sec:texrenderersuser>) and the values are -% new definitions of these token renderers. -% -% \end{markdown} -% \begin{macrocode} -\ExplSyntaxOn -\cs_new:Nn \@@_latex_define_renderers: - { - \seq_map_function:NN - \g_@@_renderers_seq - \@@_latex_define_renderer:n - } -\cs_new:Nn \@@_latex_define_renderer:n - { - \@@_renderer_tl_to_csname:nN - { #1 } - \l_tmpa_tl - \prop_get:NnN - \g_@@_renderer_arities_prop - { #1 } - \l_tmpb_tl - \@@_latex_define_renderer:ncV - { #1 } - { \l_tmpa_tl } - \l_tmpb_tl - } -\cs_new:Nn \@@_renderer_tl_to_csname:nN - { - \tl_set:Nn - \l_tmpa_tl - { \str_uppercase:n { #1 } } - \tl_set:Nx - #2 - { - markdownRenderer - \tl_head:f { \l_tmpa_tl } - \tl_tail:n { #1 } - } - } -\cs_new:Nn \@@_latex_define_renderer:nNn - { - \@@_with_various_cases:nn - { #1 } - { - \keys_define:nn - { markdown/latex-options/renderers } - { - ##1 .code:n = { - \cs_generate_from_arg_count:NNnn - #2 - \cs_set:Npn - { #3 } - { ####1 } - }, - } - } - } -\cs_generate_variant:Nn - \@@_latex_define_renderer:nNn - { ncV } -\ExplSyntaxOff -% \end{macrocode} -% \par -% \begin{markdown} -% -% The following example \LaTeX{} code showcases a possible configuration of the -% \mref{markdownRendererLink} and \mref{markdownRendererEmphasis} markdown token -% renderers. -% ``` tex -% \markdownSetup{ -% renderers = { -% link = {#4}, \% Render links as the link title. -% emphasis = {\emph{#1}}, \% Render emphasized text via `\emph`. -% } -% } -% ``````` -% -% In addition to exact token renderer names, we also support wildcards -% that match multiple token renderer names. -% -% \end{markdown} -% \begin{macrocode} -\ExplSyntaxOn -\tl_new:N - \l_@@_renderer_definition_tl -\keys_define:nn - { markdown/latex-options/renderers } - { - unknown .code:n = { - \regex_match:nVTF - { \* } - \l_keys_key_str - { - \tl_set:Nn - \l_@@_renderer_definition_tl - { #1 } - \tl_set:NV - \l_tmpa_tl - \l_keys_key_str - \regex_replace_all:nnN - { \* } - { .* } - \l_tmpa_tl - \regex_set:NV - \l_tmpa_regex - \l_tmpa_tl - \int_zero:N - \l_tmpa_int - \seq_map_inline:Nn - \g_@@_renderers_seq - { - \@@_with_various_cases:nn - { ##1 } - { - \regex_match:NnT - \l_tmpa_regex - { ####1 } - { - \@@_renderer_tl_to_csname:nN - { ##1 } - \l_tmpa_tl - \prop_get:NnN - \g_@@_renderer_arities_prop - { ##1 } - \l_tmpb_tl - \cs_generate_from_arg_count:cNVV - { \l_tmpa_tl } - \cs_set:Npn - \l_tmpb_tl - \l_@@_renderer_definition_tl - \int_incr:N - \l_tmpa_int - \@@_with_various_cases_break: - } - } - } - \int_compare:nNnT - { \l_tmpa_int } = { 0 } - { - \msg_error:nnV - { markdown } - { nonmatched-renderer-wildcard } - \l_keys_key_str - } - } - { - \msg_error:nnV - { markdown } - { undefined-renderer } - \l_keys_key_str - } - }, - } -\msg_new:nnn - { markdown } - { undefined-renderer } - { - Renderer~#1~is~undefined. - } -\msg_new:nnn - { markdown } - { nonmatched-renderer-wildcard } - { - Wildcard~#1~matches~no~renderers. - } -\cs_generate_variant:Nn - \regex_set:Nn - { NV } -\cs_generate_variant:Nn - \cs_generate_from_arg_count:NNnn - { cNVV } -\cs_generate_variant:Nn - \msg_error:nnn - { nnV } -\prg_generate_conditional_variant:Nnn - \regex_match:nn - { nV } - { TF } -\ExplSyntaxOff -% \end{macrocode} -% \begin{markdown} -% -%#### Plain \TeX{} Markdown Token Renderer Prototypes {#latex-renderer-prototypes} -% -% The \LaTeX{} interface recognizes an option with the -% `rendererPrototypes` key, whose value must be a list of key-values, -% where the keys correspond to the markdown token renderer prototype -% macros exposed by the plain \TeX{} interface (see Section -% <#sec:texrendererprototypes>) and the values are new definitions of -% these token renderer prototypes. -% -% \end{markdown} -% \begin{macrocode} -\ExplSyntaxOn -\cs_new:Nn \@@_latex_define_renderer_prototypes: - { - \seq_map_function:NN - \g_@@_renderers_seq - \@@_latex_define_renderer_prototype:n - } -\cs_new:Nn \@@_latex_define_renderer_prototype:n - { - \@@_renderer_prototype_tl_to_csname:nN - { #1 } - \l_tmpa_tl - \prop_get:NnN - \g_@@_renderer_arities_prop - { #1 } - \l_tmpb_tl - \@@_latex_define_renderer_prototype:ncV - { #1 } - { \l_tmpa_tl } - \l_tmpb_tl - } -\cs_new:Nn \@@_latex_define_renderer_prototype:nNn - { - \@@_with_various_cases:nn - { #1 } - { - \keys_define:nn - { markdown/latex-options/renderer-prototypes } - { - ##1 .code:n = { - \cs_generate_from_arg_count:NNnn - #2 - \cs_set:Npn - { #3 } - { ####1 } - }, - } - } - } -\cs_generate_variant:Nn - \@@_latex_define_renderer_prototype:nNn - { ncV } -\ExplSyntaxOff +} % \end{macrocode} -% \par -% \begin{markdown} -% -% The following example \LaTeX{} code showcases a possible configuration of the -% `\markdownRendererImagePrototype` and `\markdownRendererCodeSpanPrototype` -% markdown token renderer prototypes. -% ``` tex -% \markdownSetup{ -% rendererPrototypes = { -% image = {\includegraphics{#2}}, -% codeSpan = {\texttt{#1}}, \% Render inline code via `\texttt`. -% } -% } -% ``````` -% -% In addition to exact token renderer prototype names, we also support -% wildcards that match multiple token renderer prototype names. -% -% \end{markdown} +% \iffalse +%</latex> +%<*themes-witiko-markdown-defaults-latex> +% \fi % \begin{macrocode} -\ExplSyntaxOn -\tl_new:N - \l_@@_renderer_prototype_definition_tl -\keys_define:nn - { markdown/latex-options/renderer-prototypes } - { - unknown .code:n = { - \regex_match:nVTF - { \* } - \l_keys_key_str - { - \tl_set:Nn - \l_@@_renderer_prototype_definition_tl - { #1 } - \tl_set:NV - \l_tmpa_tl - \l_keys_key_str - \regex_replace_all:nnN - { \* } - { .* } - \l_tmpa_tl - \regex_set:NV - \l_tmpa_regex - \l_tmpa_tl - \int_zero:N - \l_tmpa_int - \seq_map_inline:Nn - \g_@@_renderers_seq - { - \@@_with_various_cases:nn - { ##1 } - { - \regex_match:NnT - \l_tmpa_regex - { ####1 } - { - \@@_renderer_prototype_tl_to_csname:nN - { ##1 } - \l_tmpa_tl - \prop_get:NnN - \g_@@_renderer_arities_prop - { ##1 } - \l_tmpb_tl - \cs_generate_from_arg_count:cNVV - { \l_tmpa_tl } - \cs_set:Npn - \l_tmpb_tl - \l_@@_renderer_prototype_definition_tl - \int_incr:N - \l_tmpa_int - \@@_with_various_cases_break: - } - } - } - \int_compare:nNnT - { \l_tmpa_int } = { 0 } - { - \msg_error:nnV - { markdown } - { nonmatched-renderer-prototype-wildcard } - \l_keys_key_str - } - } - { - \msg_error:nnV - { markdown } - { undefined-renderer-prototype } - \l_keys_key_str - } - }, - } -\msg_new:nnn - { markdown } - { undefined-renderer-prototype } - { - Renderer~prototype~#1~is~undefined. - } -\msg_new:nnn - { markdown } - { nonmatched-renderer-prototype-wildcard } - { - Wildcard~#1~matches~no~renderer~prototypes. - } -\cs_generate_variant:Nn - \regex_set:Nn - { NV } -\cs_generate_variant:Nn - \cs_generate_from_arg_count:NNnn - { cNVV } -\cs_generate_variant:Nn - \msg_error:nnn - { nnV } -\prg_generate_conditional_variant:Nnn - \regex_match:nn - { nV } - { TF } -\ExplSyntaxOff +\ProvidesPackage{markdownthemewitiko_markdown_defaults}[2024/01/03]% % \end{macrocode} -% \begin{markdown} -% % \iffalse -%</latex> +%</themes-witiko-markdown-defaults-latex> %<*context> % \fi +% \par +% \begin{markdown} +% +% Please, see Section <#sec:latex-themes-implementation> for implementation +% details of the built-in \LaTeX{} themes. % % \Hologo{ConTeXt} Interface {#contextinterface} %---------------------------- % +% \end{markdown} % \iffalse %</context> %<*manual-interfaces> @@ -20297,7 +21658,7 @@ following content: $\sqrt{-1}$ *equals* $i$. \stopmarkdown -\setupmarkdown[hybrid = yes] +\setupmarkdown[texmathdollars = yes] \startmarkdown $\sqrt{-1}$ *equals* $i$. \stopmarkdown @@ -20306,7 +21667,7 @@ $\sqrt{-1}$ *equals* $i$. ``````` Next, invoke LuaTeX from the terminal: ``` sh -context document.tex +context --luatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: @@ -20320,6 +21681,30 @@ following text: %</manual-interfaces> %<*context> % \fi +% \begin{markdown} +% +% To determine whether \Hologo{ConTeXt} is the top layer or if there are other +% layers above \Hologo{ConTeXt}, we take a look on whether the +% \mref{c_@@_top_layer_tl} token list has already been defined. If not, +% we will assume that \Hologo{ConTeXt} is the top layer. +% +% \end{markdown} +% \begin{macrocode} +\ExplSyntaxOn +\tl_const:Nn \c_@@_option_layer_context_tl { context } +\cs_generate_variant:Nn + \tl_const:Nn + { NV } +\tl_if_exist:NF + \c_@@_top_layer_tl + { + \tl_const:NV + \c_@@_top_layer_tl + \c_@@_option_layer_context_tl + } +\ExplSyntaxOff +% \end{macrocode} +% \begin{markdown} % % The \Hologo{ConTeXt} interface provides a start-stop macro pair for the % typesetting of markdown input from within \Hologo{ConTeXt} and facilities for @@ -20331,19 +21716,6 @@ following text: % \begin{macrocode} \writestatus{loading}{ConTeXt User Module / markdown}% \startmodule[markdown] -\unprotect -% \end{macrocode} -% \par -% \begin{markdown} -% -% The \Hologo{ConTeXt} implementation redefines the plain \TeX{} logging macros -% (see Section <#sec:tex-interface-logging>) to use the \Hologo{ConTeXt} -% `\writestatus` macro. -% -% \end{markdown} -% \begin{macrocode} -\def\markdownInfo#1{\writestatus{markdown}{#1.}}% -\def\markdownWarning#1{\writestatus{markdown\space warn}{#1.}}% \def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&% \do\#\do\^\do\_\do\%\do\~}% \input markdown/markdown @@ -20362,7 +21734,7 @@ following text: %### Typesetting Markdown % The interface exposes the \mdef{startmarkdown} and \mdef{stopmarkdown} macro % pair for the typesetting of a markdown document fragment, and defines the -% \mdef{inputmarkdown} command. +% \mdef{inputmarkdown} macro. % % \end{markdown} % \begin{macrocode} @@ -20423,21 +21795,16 @@ following text: % \TeX{} interface (see Section <#sec:tex-options>). % % The \Hologo{ConTeXt} options may be specified when using the -% \mref{inputmarkdown} macro (see Section <#sec:contextinterface>), or via the -% \mdef{setupmarkdown} macro. The \mref{setupmarkdown} macro receives the -% options to set up as its only argument: +% \mref{inputmarkdown} macro (see Section <#sec:contextinterface>), +% via the \mref{markdownSetup} macro, or via the \mdef{setupmarkdown}`[#1]` +% macro, which is an alias for \mref{markdownSetup}`{#1}`. % % \end{markdown} % \begin{macrocode} \ExplSyntaxOn -\cs_new:Nn - \@@_setup:n - { - \keys_set:nn - { markdown/context-options } - { #1 } - } -\long\def\setupmarkdown[#1] +\cs_new:Npn + \setupmarkdown + [ #1 ] { \@@_setup:n { #1 } @@ -20446,51 +21813,14 @@ following text: % \end{macrocode} % \begin{markdown} % -%#### \Hologo{ConTeXt} Interface Options -% We define the \meta{key}`=`\meta{value} interface for all option macros -% recognized by the Lua and plain \TeX{} interfaces. -% -% \end{markdown} -% \begin{macrocode} -\ExplSyntaxOn -\cs_new:Nn \@@_context_define_option_commands_and_keyvals: - { - \seq_map_inline:Nn - \g_@@_option_layers_seq - { - \seq_map_inline:cn - { g_@@_ ##1 _options_seq } - { -% \end{macrocode} -% \begin{markdown} -% -% To make it easier to copy-and-paste options from Pandoc [@macfarlane22] such -% as `fancy_lists`, `header_attributes`, and `pipe_tables`, we accept -% snake\\\_case in addition to camelCase variants of options. As a bonus, -% studies [@sharif10] also show that snake\\\_case is faster to read than -% camelCase. -% -% \end{markdown} -% \begin{macrocode} - \@@_with_various_cases:nn - { ####1 } - { - \@@_context_define_option_keyval:nnn - { ##1 } - { ####1 } - { ########1 } - } - } - } - } -% \end{macrocode} -% \begin{markdown} +%#### Generating Plain \TeX{} Option Macros and Key-Values % -% Furthermore, we also accept caseless variants of options in line with the -% style of \Hologo{ConTeXt}. +% Unlike plain \TeX{}, we also accept caseless variants of options +% in line with the style of \Hologo{ConTeXt}. % % \end{markdown} % \begin{macrocode} +\ExplSyntaxOn \cs_new:Nn \@@_caseless:N { \regex_replace_all:nnN @@ -20502,52 +21832,89 @@ following text: { #1 } } \seq_gput_right:Nn \g_@@_cases_seq { @@_caseless:N } -\cs_new:Nn \@@_context_define_option_keyval:nnn +% \end{macrocode} +% \begin{markdown} +% +% If \Hologo{ConTeXt} is the top layer, we use the +% \mref{@@_define_option_commands_and_keyvals:}, \mref{@@_define_renderers:}, +% and \mref{@@_define_renderer_prototypes:} macro to define plain \TeX{} +% option, token renderer, and token renderer prototype macros and key-values +% immediately. Otherwise, we postpone the definition until the upper layers +% have been loaded. +% +% \end{markdown} +% \begin{macrocode} +\str_if_eq:VVT + \c_@@_top_layer_tl + \c_@@_option_layer_context_tl { - \prop_get:cnN - { g_@@_ #1 _option_types_prop } - { #2 } - \l_tmpa_tl - \keys_define:nn - { markdown/context-options } - { - #3 .code:n = { - \tl_set:Nx - \l_tmpa_tl - { - \str_case:nnF - { ##1 } - { - { yes } { true } - { no } { false } - } - { ##1 } - } - \@@_set_option_value:nV - { #2 } - \l_tmpa_tl - }, - } - \str_if_eq:VVT - \l_tmpa_tl - \c_@@_option_type_boolean_tl - { - \keys_define:nn - { markdown/context-options } - { - #3 .default:n = { true }, - } - } + \@@_define_option_commands_and_keyvals: + \@@_define_renderers: + \@@_define_renderer_prototypes: } -\cs_generate_variant:Nn - \@@_set_option_value:nn - { nV } -\@@_context_define_option_commands_and_keyvals: \ExplSyntaxOff % \end{macrocode} -% \par +% \iffalse +%</context> +%<*manual-options> +% \fi +% \begin{markdown} + +### Themes + +% In Section~\ref{sec:themes}, we described the concept of themes. +In \Hologo{ConTeXt}, we expand on the concept of +% themes\iffalse +[themes](#themes) +% \fi +by allowing a theme to be a full-blown \Hologo{ConTeXt} module. Specifically, +the key-values `theme`=\meta{theme name} and `import`=\meta{theme name} load a +\Hologo{ConTeXt} module named `t-markdowntheme`\meta{munged theme name}`.tex` +if it exists and a \TeX{} document named `markdowntheme`\meta{munged theme +name}`.tex` otherwise. + +Having the Markdown package automatically load either the generic `.tex` +*theme file* or the \Hologo{ConTeXt}-specific `t-*.tex` theme file allows +developers to have a single *theme file*, when the theme is small or the +difference between \TeX{} formats is unimportant, and scale up to separate +theme files native to different \TeX{} formats for large multi-format themes, +where different code is needed for different \TeX{} formats. To enable code +reuse, developers can load the `.tex` theme file from the `t-*.tex` theme file +using the \mref{markdownLoadPlainTeXTheme} macro. + +For example, to load a theme named `witiko/tilde` in your document: + +``` tex +\usemodule[t][markdown] +\setupmarkdown[import=witiko/tilde] +``````` + +Built-in \Hologo{ConTeXt} themes provided with the Markdown package include: + +\pkg{witiko/markdown/defaults} + +: A \Hologo{ConTeXt} theme with the default definitions of token renderer + prototypes for plain \TeX{}. This theme is loaded automatically together + with the package and explicitly loading it has no effect. + +% \end{markdown} +% \iffalse +%</manual-options> +%<*themes-witiko-markdown-defaults-context> +% \fi +% \begin{macrocode} +\startmodule[markdownthemewitiko_markdown_defaults] +\unprotect +% \end{macrocode} +% \iffalse +%</themes-witiko-markdown-defaults-context> +%<*manual-options> +% \fi % \begin{markdown} % +% Please, see Section <#sec:context-themes-implementation> for implementation +% details of the built-in \Hologo{ConTeXt} themes. +% % Implementation {#implementation} %================ % @@ -20564,7 +21931,7 @@ following text: % % \end{markdown} % \iffalse -%</context> +%</manual-options> %<*lua> % \fi % \begin{markdown} @@ -20587,9 +21954,9 @@ following text: % \begin{macrocode} local upper, format, length = string.upper, string.format, string.len -local P, R, S, V, C, Cg, Cb, Cmt, Cc, Ct, B, Cs, any = +local P, R, S, V, C, Cg, Cb, Cmt, Cc, Ct, B, Cs, Cp, any = lpeg.P, lpeg.R, lpeg.S, lpeg.V, lpeg.C, lpeg.Cg, lpeg.Cb, - lpeg.Cmt, lpeg.Cc, lpeg.Ct, lpeg.B, lpeg.Cs, lpeg.P(1) + lpeg.Cmt, lpeg.Cc, lpeg.Ct, lpeg.B, lpeg.Cs, lpeg.Cp, lpeg.P(1) % \end{macrocode} % \par % \begin{markdown} @@ -20949,13 +22316,13 @@ local character_entities = { ["Tab"] = 9, ["NewLine"] = 10, ["excl"] = 33, - ["quot"] = 34, ["QUOT"] = 34, + ["quot"] = 34, ["num"] = 35, ["dollar"] = 36, ["percnt"] = 37, - ["amp"] = 38, ["AMP"] = 38, + ["amp"] = 38, ["apos"] = 39, ["lpar"] = 40, ["rpar"] = 41, @@ -20967,31 +22334,36 @@ local character_entities = { ["sol"] = 47, ["colon"] = 58, ["semi"] = 59, - ["lt"] = 60, ["LT"] = 60, + ["lt"] = 60, + ["nvlt"] = {60, 8402}, + ["bne"] = {61, 8421}, ["equals"] = 61, - ["gt"] = 62, ["GT"] = 62, + ["gt"] = 62, + ["nvgt"] = {62, 8402}, ["quest"] = 63, ["commat"] = 64, - ["lsqb"] = 91, ["lbrack"] = 91, + ["lsqb"] = 91, ["bsol"] = 92, - ["rsqb"] = 93, ["rbrack"] = 93, + ["rsqb"] = 93, ["Hat"] = 94, + ["UnderBar"] = 95, ["lowbar"] = 95, - ["grave"] = 96, ["DiacriticalGrave"] = 96, - ["lcub"] = 123, + ["grave"] = 96, + ["fjlig"] = {102, 106}, ["lbrace"] = 123, + ["lcub"] = 123, + ["VerticalLine"] = 124, ["verbar"] = 124, ["vert"] = 124, - ["VerticalLine"] = 124, - ["rcub"] = 125, ["rbrace"] = 125, - ["nbsp"] = 160, + ["rcub"] = 125, ["NonBreakingSpace"] = 160, + ["nbsp"] = 160, ["iexcl"] = 161, ["cent"] = 162, ["pound"] = 163, @@ -21000,36 +22372,35 @@ local character_entities = { ["brvbar"] = 166, ["sect"] = 167, ["Dot"] = 168, - ["die"] = 168, ["DoubleDot"] = 168, + ["die"] = 168, ["uml"] = 168, - ["copy"] = 169, ["COPY"] = 169, + ["copy"] = 169, ["ordf"] = 170, ["laquo"] = 171, ["not"] = 172, ["shy"] = 173, - ["reg"] = 174, - ["circledR"] = 174, ["REG"] = 174, + ["circledR"] = 174, + ["reg"] = 174, ["macr"] = 175, - ["OverBar"] = 175, ["strns"] = 175, ["deg"] = 176, + ["PlusMinus"] = 177, ["plusmn"] = 177, ["pm"] = 177, - ["PlusMinus"] = 177, ["sup2"] = 178, ["sup3"] = 179, - ["acute"] = 180, ["DiacriticalAcute"] = 180, + ["acute"] = 180, ["micro"] = 181, ["para"] = 182, - ["middot"] = 183, - ["centerdot"] = 183, ["CenterDot"] = 183, - ["cedil"] = 184, + ["centerdot"] = 183, + ["middot"] = 183, ["Cedilla"] = 184, + ["cedil"] = 184, ["sup1"] = 185, ["ordm"] = 186, ["raquo"] = 187, @@ -21044,6 +22415,7 @@ local character_entities = { ["Atilde"] = 195, ["Auml"] = 196, ["Aring"] = 197, + ["angst"] = 197, ["AElig"] = 198, ["Ccedil"] = 199, ["Egrave"] = 200, @@ -21093,8 +22465,8 @@ local character_entities = { ["ocirc"] = 244, ["otilde"] = 245, ["ouml"] = 246, - ["divide"] = 247, ["div"] = 247, + ["divide"] = 247, ["oslash"] = 248, ["ugrave"] = 249, ["uacute"] = 250, @@ -21229,20 +22601,19 @@ local character_entities = { ["gacute"] = 501, ["jmath"] = 567, ["circ"] = 710, - ["caron"] = 711, ["Hacek"] = 711, - ["breve"] = 728, + ["caron"] = 711, ["Breve"] = 728, - ["dot"] = 729, + ["breve"] = 728, ["DiacriticalDot"] = 729, + ["dot"] = 729, ["ring"] = 730, ["ogon"] = 731, - ["tilde"] = 732, ["DiacriticalTilde"] = 732, - ["dblac"] = 733, + ["tilde"] = 732, ["DiacriticalDoubleAcute"] = 733, + ["dblac"] = 733, ["DownBreve"] = 785, - ["UnderBar"] = 818, ["Alpha"] = 913, ["Beta"] = 914, ["Gamma"] = 915, @@ -21267,12 +22638,12 @@ local character_entities = { ["Chi"] = 935, ["Psi"] = 936, ["Omega"] = 937, + ["ohm"] = 937, ["alpha"] = 945, ["beta"] = 946, ["gamma"] = 947, ["delta"] = 948, - ["epsiv"] = 949, - ["varepsilon"] = 949, + ["epsi"] = 949, ["epsilon"] = 949, ["zeta"] = 950, ["eta"] = 951, @@ -21286,38 +22657,39 @@ local character_entities = { ["omicron"] = 959, ["pi"] = 960, ["rho"] = 961, + ["sigmaf"] = 962, ["sigmav"] = 962, ["varsigma"] = 962, - ["sigmaf"] = 962, ["sigma"] = 963, ["tau"] = 964, ["upsi"] = 965, ["upsilon"] = 965, ["phi"] = 966, - ["phiv"] = 966, - ["varphi"] = 966, ["chi"] = 967, ["psi"] = 968, ["omega"] = 969, + ["thetasym"] = 977, ["thetav"] = 977, ["vartheta"] = 977, - ["thetasym"] = 977, ["Upsi"] = 978, ["upsih"] = 978, + ["phiv"] = 981, ["straightphi"] = 981, + ["varphi"] = 981, ["piv"] = 982, ["varpi"] = 982, ["Gammad"] = 988, - ["gammad"] = 989, ["digamma"] = 989, + ["gammad"] = 989, ["kappav"] = 1008, ["varkappa"] = 1008, ["rhov"] = 1009, ["varrho"] = 1009, - ["epsi"] = 1013, + ["epsiv"] = 1013, ["straightepsilon"] = 1013, - ["bepsi"] = 1014, + ["varepsilon"] = 1013, ["backepsilon"] = 1014, + ["bepsi"] = 1014, ["IOcy"] = 1025, ["DJcy"] = 1026, ["GJcy"] = 1027, @@ -21416,40 +22788,40 @@ local character_entities = { ["emsp14"] = 8197, ["numsp"] = 8199, ["puncsp"] = 8200, - ["thinsp"] = 8201, ["ThinSpace"] = 8201, - ["hairsp"] = 8202, + ["thinsp"] = 8201, ["VeryThinSpace"] = 8202, - ["ZeroWidthSpace"] = 8203, - ["NegativeVeryThinSpace"] = 8203, - ["NegativeThinSpace"] = 8203, + ["hairsp"] = 8202, ["NegativeMediumSpace"] = 8203, ["NegativeThickSpace"] = 8203, + ["NegativeThinSpace"] = 8203, + ["NegativeVeryThinSpace"] = 8203, + ["ZeroWidthSpace"] = 8203, ["zwnj"] = 8204, ["zwj"] = 8205, ["lrm"] = 8206, ["rlm"] = 8207, - ["hyphen"] = 8208, ["dash"] = 8208, + ["hyphen"] = 8208, ["ndash"] = 8211, ["mdash"] = 8212, ["horbar"] = 8213, ["Verbar"] = 8214, ["Vert"] = 8214, - ["lsquo"] = 8216, ["OpenCurlyQuote"] = 8216, + ["lsquo"] = 8216, + ["CloseCurlyQuote"] = 8217, ["rsquo"] = 8217, ["rsquor"] = 8217, - ["CloseCurlyQuote"] = 8217, ["lsquor"] = 8218, ["sbquo"] = 8218, - ["ldquo"] = 8220, ["OpenCurlyDoubleQuote"] = 8220, + ["ldquo"] = 8220, + ["CloseCurlyDoubleQuote"] = 8221, ["rdquo"] = 8221, ["rdquor"] = 8221, - ["CloseCurlyDoubleQuote"] = 8221, - ["ldquor"] = 8222, ["bdquo"] = 8222, + ["ldquor"] = 8222, ["dagger"] = 8224, ["Dagger"] = 8225, ["ddagger"] = 8225, @@ -21463,10 +22835,11 @@ local character_entities = { ["prime"] = 8242, ["Prime"] = 8243, ["tprime"] = 8244, - ["bprime"] = 8245, ["backprime"] = 8245, + ["bprime"] = 8245, ["lsaquo"] = 8249, ["rsaquo"] = 8250, + ["OverBar"] = 8254, ["oline"] = 8254, ["caret"] = 8257, ["hybull"] = 8259, @@ -21474,6 +22847,7 @@ local character_entities = { ["bsemi"] = 8271, ["qprime"] = 8279, ["MediumSpace"] = 8287, + ["ThickSpace"] = {8287, 8202}, ["NoBreak"] = 8288, ["ApplyFunction"] = 8289, ["af"] = 8289, @@ -21482,34 +22856,34 @@ local character_entities = { ["InvisibleComma"] = 8291, ["ic"] = 8291, ["euro"] = 8364, - ["tdot"] = 8411, ["TripleDot"] = 8411, + ["tdot"] = 8411, ["DotDot"] = 8412, ["Copf"] = 8450, ["complexes"] = 8450, ["incare"] = 8453, ["gscr"] = 8458, - ["hamilt"] = 8459, ["HilbertSpace"] = 8459, ["Hscr"] = 8459, + ["hamilt"] = 8459, ["Hfr"] = 8460, ["Poincareplane"] = 8460, - ["quaternions"] = 8461, ["Hopf"] = 8461, + ["quaternions"] = 8461, ["planckh"] = 8462, - ["planck"] = 8463, ["hbar"] = 8463, - ["plankv"] = 8463, ["hslash"] = 8463, + ["planck"] = 8463, + ["plankv"] = 8463, ["Iscr"] = 8464, ["imagline"] = 8464, - ["image"] = 8465, + ["Ifr"] = 8465, ["Im"] = 8465, + ["image"] = 8465, ["imagpart"] = 8465, - ["Ifr"] = 8465, + ["Laplacetrf"] = 8466, ["Lscr"] = 8466, ["lagran"] = 8466, - ["Laplacetrf"] = 8466, ["ell"] = 8467, ["Nopf"] = 8469, ["naturals"] = 8469, @@ -21519,40 +22893,38 @@ local character_entities = { ["wp"] = 8472, ["Popf"] = 8473, ["primes"] = 8473, - ["rationals"] = 8474, ["Qopf"] = 8474, + ["rationals"] = 8474, ["Rscr"] = 8475, ["realine"] = 8475, - ["real"] = 8476, ["Re"] = 8476, - ["realpart"] = 8476, ["Rfr"] = 8476, - ["reals"] = 8477, + ["real"] = 8476, + ["realpart"] = 8476, ["Ropf"] = 8477, + ["reals"] = 8477, ["rx"] = 8478, - ["trade"] = 8482, ["TRADE"] = 8482, - ["integers"] = 8484, + ["trade"] = 8482, ["Zopf"] = 8484, - ["ohm"] = 8486, + ["integers"] = 8484, ["mho"] = 8487, ["Zfr"] = 8488, ["zeetrf"] = 8488, ["iiota"] = 8489, - ["angst"] = 8491, - ["bernou"] = 8492, ["Bernoullis"] = 8492, ["Bscr"] = 8492, - ["Cfr"] = 8493, + ["bernou"] = 8492, ["Cayleys"] = 8493, + ["Cfr"] = 8493, ["escr"] = 8495, ["Escr"] = 8496, ["expectation"] = 8496, - ["Fscr"] = 8497, ["Fouriertrf"] = 8497, - ["phmmat"] = 8499, + ["Fscr"] = 8497, ["Mellintrf"] = 8499, ["Mscr"] = 8499, + ["phmmat"] = 8499, ["order"] = 8500, ["orderof"] = 8500, ["oscr"] = 8500, @@ -21566,8 +22938,8 @@ local character_entities = { ["DifferentialD"] = 8518, ["dd"] = 8518, ["ExponentialE"] = 8519, - ["exponentiale"] = 8519, ["ee"] = 8519, + ["exponentiale"] = 8519, ["ImaginaryI"] = 8520, ["ii"] = 8520, ["frac13"] = 8531, @@ -21582,46 +22954,47 @@ local character_entities = { ["frac38"] = 8540, ["frac58"] = 8541, ["frac78"] = 8542, + ["LeftArrow"] = 8592, + ["ShortLeftArrow"] = 8592, ["larr"] = 8592, ["leftarrow"] = 8592, - ["LeftArrow"] = 8592, ["slarr"] = 8592, - ["ShortLeftArrow"] = 8592, + ["ShortUpArrow"] = 8593, + ["UpArrow"] = 8593, ["uarr"] = 8593, ["uparrow"] = 8593, - ["UpArrow"] = 8593, - ["ShortUpArrow"] = 8593, + ["RightArrow"] = 8594, + ["ShortRightArrow"] = 8594, ["rarr"] = 8594, ["rightarrow"] = 8594, - ["RightArrow"] = 8594, ["srarr"] = 8594, - ["ShortRightArrow"] = 8594, - ["darr"] = 8595, - ["downarrow"] = 8595, ["DownArrow"] = 8595, ["ShortDownArrow"] = 8595, + ["darr"] = 8595, + ["downarrow"] = 8595, + ["LeftRightArrow"] = 8596, ["harr"] = 8596, ["leftrightarrow"] = 8596, - ["LeftRightArrow"] = 8596, - ["varr"] = 8597, - ["updownarrow"] = 8597, ["UpDownArrow"] = 8597, - ["nwarr"] = 8598, + ["updownarrow"] = 8597, + ["varr"] = 8597, ["UpperLeftArrow"] = 8598, + ["nwarr"] = 8598, ["nwarrow"] = 8598, - ["nearr"] = 8599, ["UpperRightArrow"] = 8599, + ["nearr"] = 8599, ["nearrow"] = 8599, + ["LowerRightArrow"] = 8600, ["searr"] = 8600, ["searrow"] = 8600, - ["LowerRightArrow"] = 8600, + ["LowerLeftArrow"] = 8601, ["swarr"] = 8601, ["swarrow"] = 8601, - ["LowerLeftArrow"] = 8601, ["nlarr"] = 8602, ["nleftarrow"] = 8602, ["nrarr"] = 8603, ["nrightarrow"] = 8603, + ["nrarrw"] = {8605, 824}, ["rarrw"] = 8605, ["rightsquigarrow"] = 8605, ["Larr"] = 8606, @@ -21638,27 +23011,27 @@ local character_entities = { ["mapstoleft"] = 8612, ["UpTeeArrow"] = 8613, ["mapstoup"] = 8613, - ["map"] = 8614, ["RightTeeArrow"] = 8614, + ["map"] = 8614, ["mapsto"] = 8614, ["DownTeeArrow"] = 8615, ["mapstodown"] = 8615, - ["larrhk"] = 8617, ["hookleftarrow"] = 8617, - ["rarrhk"] = 8618, + ["larrhk"] = 8617, ["hookrightarrow"] = 8618, + ["rarrhk"] = 8618, ["larrlp"] = 8619, ["looparrowleft"] = 8619, - ["rarrlp"] = 8620, ["looparrowright"] = 8620, + ["rarrlp"] = 8620, ["harrw"] = 8621, ["leftrightsquigarrow"] = 8621, ["nharr"] = 8622, ["nleftrightarrow"] = 8622, - ["lsh"] = 8624, ["Lsh"] = 8624, - ["rsh"] = 8625, + ["lsh"] = 8624, ["Rsh"] = 8625, + ["rsh"] = 8625, ["ldsh"] = 8626, ["rdsh"] = 8627, ["crarr"] = 8629, @@ -21666,456 +23039,505 @@ local character_entities = { ["curvearrowleft"] = 8630, ["curarr"] = 8631, ["curvearrowright"] = 8631, - ["olarr"] = 8634, ["circlearrowleft"] = 8634, - ["orarr"] = 8635, + ["olarr"] = 8634, ["circlearrowright"] = 8635, - ["lharu"] = 8636, + ["orarr"] = 8635, ["LeftVector"] = 8636, ["leftharpoonup"] = 8636, - ["lhard"] = 8637, - ["leftharpoondown"] = 8637, + ["lharu"] = 8636, ["DownLeftVector"] = 8637, + ["leftharpoondown"] = 8637, + ["lhard"] = 8637, + ["RightUpVector"] = 8638, ["uharr"] = 8638, ["upharpoonright"] = 8638, - ["RightUpVector"] = 8638, + ["LeftUpVector"] = 8639, ["uharl"] = 8639, ["upharpoonleft"] = 8639, - ["LeftUpVector"] = 8639, - ["rharu"] = 8640, ["RightVector"] = 8640, + ["rharu"] = 8640, ["rightharpoonup"] = 8640, + ["DownRightVector"] = 8641, ["rhard"] = 8641, ["rightharpoondown"] = 8641, - ["DownRightVector"] = 8641, - ["dharr"] = 8642, ["RightDownVector"] = 8642, + ["dharr"] = 8642, ["downharpoonright"] = 8642, - ["dharl"] = 8643, ["LeftDownVector"] = 8643, + ["dharl"] = 8643, ["downharpoonleft"] = 8643, - ["rlarr"] = 8644, - ["rightleftarrows"] = 8644, ["RightArrowLeftArrow"] = 8644, - ["udarr"] = 8645, + ["rightleftarrows"] = 8644, + ["rlarr"] = 8644, ["UpArrowDownArrow"] = 8645, - ["lrarr"] = 8646, - ["leftrightarrows"] = 8646, + ["udarr"] = 8645, ["LeftArrowRightArrow"] = 8646, - ["llarr"] = 8647, + ["leftrightarrows"] = 8646, + ["lrarr"] = 8646, ["leftleftarrows"] = 8647, - ["uuarr"] = 8648, + ["llarr"] = 8647, ["upuparrows"] = 8648, - ["rrarr"] = 8649, + ["uuarr"] = 8648, ["rightrightarrows"] = 8649, + ["rrarr"] = 8649, ["ddarr"] = 8650, ["downdownarrows"] = 8650, - ["lrhar"] = 8651, ["ReverseEquilibrium"] = 8651, ["leftrightharpoons"] = 8651, - ["rlhar"] = 8652, - ["rightleftharpoons"] = 8652, + ["lrhar"] = 8651, ["Equilibrium"] = 8652, - ["nlArr"] = 8653, + ["rightleftharpoons"] = 8652, + ["rlhar"] = 8652, ["nLeftarrow"] = 8653, - ["nhArr"] = 8654, + ["nlArr"] = 8653, ["nLeftrightarrow"] = 8654, - ["nrArr"] = 8655, + ["nhArr"] = 8654, ["nRightarrow"] = 8655, - ["lArr"] = 8656, - ["Leftarrow"] = 8656, + ["nrArr"] = 8655, ["DoubleLeftArrow"] = 8656, - ["uArr"] = 8657, - ["Uparrow"] = 8657, + ["Leftarrow"] = 8656, + ["lArr"] = 8656, ["DoubleUpArrow"] = 8657, - ["rArr"] = 8658, - ["Rightarrow"] = 8658, - ["Implies"] = 8658, + ["Uparrow"] = 8657, + ["uArr"] = 8657, ["DoubleRightArrow"] = 8658, - ["dArr"] = 8659, - ["Downarrow"] = 8659, + ["Implies"] = 8658, + ["Rightarrow"] = 8658, + ["rArr"] = 8658, ["DoubleDownArrow"] = 8659, - ["hArr"] = 8660, - ["Leftrightarrow"] = 8660, + ["Downarrow"] = 8659, + ["dArr"] = 8659, ["DoubleLeftRightArrow"] = 8660, + ["Leftrightarrow"] = 8660, + ["hArr"] = 8660, ["iff"] = 8660, - ["vArr"] = 8661, - ["Updownarrow"] = 8661, ["DoubleUpDownArrow"] = 8661, + ["Updownarrow"] = 8661, + ["vArr"] = 8661, ["nwArr"] = 8662, ["neArr"] = 8663, ["seArr"] = 8664, ["swArr"] = 8665, - ["lAarr"] = 8666, ["Lleftarrow"] = 8666, - ["rAarr"] = 8667, + ["lAarr"] = 8666, ["Rrightarrow"] = 8667, + ["rAarr"] = 8667, ["zigrarr"] = 8669, - ["larrb"] = 8676, ["LeftArrowBar"] = 8676, - ["rarrb"] = 8677, + ["larrb"] = 8676, ["RightArrowBar"] = 8677, - ["duarr"] = 8693, + ["rarrb"] = 8677, ["DownArrowUpArrow"] = 8693, + ["duarr"] = 8693, ["loarr"] = 8701, ["roarr"] = 8702, ["hoarr"] = 8703, - ["forall"] = 8704, ["ForAll"] = 8704, + ["forall"] = 8704, ["comp"] = 8705, ["complement"] = 8705, - ["part"] = 8706, ["PartialD"] = 8706, - ["exist"] = 8707, + ["npart"] = {8706, 824}, + ["part"] = 8706, ["Exists"] = 8707, - ["nexist"] = 8708, + ["exist"] = 8707, ["NotExists"] = 8708, + ["nexist"] = 8708, ["nexists"] = 8708, ["empty"] = 8709, ["emptyset"] = 8709, ["emptyv"] = 8709, ["varnothing"] = 8709, - ["nabla"] = 8711, ["Del"] = 8711, - ["isin"] = 8712, - ["isinv"] = 8712, + ["nabla"] = 8711, ["Element"] = 8712, ["in"] = 8712, - ["notin"] = 8713, + ["isin"] = 8712, + ["isinv"] = 8712, ["NotElement"] = 8713, + ["notin"] = 8713, ["notinva"] = 8713, - ["niv"] = 8715, ["ReverseElement"] = 8715, - ["ni"] = 8715, ["SuchThat"] = 8715, + ["ni"] = 8715, + ["niv"] = 8715, + ["NotReverseElement"] = 8716, ["notni"] = 8716, ["notniva"] = 8716, - ["NotReverseElement"] = 8716, - ["prod"] = 8719, ["Product"] = 8719, - ["coprod"] = 8720, + ["prod"] = 8719, ["Coproduct"] = 8720, - ["sum"] = 8721, + ["coprod"] = 8720, ["Sum"] = 8721, + ["sum"] = 8721, ["minus"] = 8722, + ["MinusPlus"] = 8723, ["mnplus"] = 8723, ["mp"] = 8723, - ["MinusPlus"] = 8723, - ["plusdo"] = 8724, ["dotplus"] = 8724, - ["setmn"] = 8726, - ["setminus"] = 8726, + ["plusdo"] = 8724, ["Backslash"] = 8726, - ["ssetmn"] = 8726, + ["setminus"] = 8726, + ["setmn"] = 8726, ["smallsetminus"] = 8726, + ["ssetmn"] = 8726, ["lowast"] = 8727, - ["compfn"] = 8728, ["SmallCircle"] = 8728, - ["radic"] = 8730, + ["compfn"] = 8728, ["Sqrt"] = 8730, + ["radic"] = 8730, + ["Proportional"] = 8733, ["prop"] = 8733, ["propto"] = 8733, - ["Proportional"] = 8733, - ["vprop"] = 8733, ["varpropto"] = 8733, + ["vprop"] = 8733, ["infin"] = 8734, ["angrt"] = 8735, ["ang"] = 8736, ["angle"] = 8736, + ["nang"] = {8736, 8402}, ["angmsd"] = 8737, ["measuredangle"] = 8737, ["angsph"] = 8738, - ["mid"] = 8739, ["VerticalBar"] = 8739, - ["smid"] = 8739, + ["mid"] = 8739, ["shortmid"] = 8739, - ["nmid"] = 8740, + ["smid"] = 8739, ["NotVerticalBar"] = 8740, - ["nsmid"] = 8740, + ["nmid"] = 8740, ["nshortmid"] = 8740, + ["nsmid"] = 8740, + ["DoubleVerticalBar"] = 8741, ["par"] = 8741, ["parallel"] = 8741, - ["DoubleVerticalBar"] = 8741, - ["spar"] = 8741, ["shortparallel"] = 8741, + ["spar"] = 8741, + ["NotDoubleVerticalBar"] = 8742, ["npar"] = 8742, ["nparallel"] = 8742, - ["NotDoubleVerticalBar"] = 8742, - ["nspar"] = 8742, ["nshortparallel"] = 8742, + ["nspar"] = 8742, ["and"] = 8743, ["wedge"] = 8743, ["or"] = 8744, ["vee"] = 8744, ["cap"] = 8745, + ["caps"] = {8745, 65024}, ["cup"] = 8746, - ["int"] = 8747, + ["cups"] = {8746, 65024}, ["Integral"] = 8747, + ["int"] = 8747, ["Int"] = 8748, - ["tint"] = 8749, ["iiint"] = 8749, + ["tint"] = 8749, + ["ContourIntegral"] = 8750, ["conint"] = 8750, ["oint"] = 8750, - ["ContourIntegral"] = 8750, ["Conint"] = 8751, ["DoubleContourIntegral"] = 8751, ["Cconint"] = 8752, ["cwint"] = 8753, - ["cwconint"] = 8754, ["ClockwiseContourIntegral"] = 8754, - ["awconint"] = 8755, + ["cwconint"] = 8754, ["CounterClockwiseContourIntegral"] = 8755, + ["awconint"] = 8755, + ["Therefore"] = 8756, ["there4"] = 8756, ["therefore"] = 8756, - ["Therefore"] = 8756, + ["Because"] = 8757, ["becaus"] = 8757, ["because"] = 8757, - ["Because"] = 8757, ["ratio"] = 8758, ["Colon"] = 8759, ["Proportion"] = 8759, - ["minusd"] = 8760, ["dotminus"] = 8760, + ["minusd"] = 8760, ["mDDot"] = 8762, ["homtht"] = 8763, - ["sim"] = 8764, ["Tilde"] = 8764, - ["thksim"] = 8764, + ["nvsim"] = {8764, 8402}, + ["sim"] = 8764, ["thicksim"] = 8764, - ["bsim"] = 8765, + ["thksim"] = 8764, ["backsim"] = 8765, + ["bsim"] = 8765, + ["race"] = {8765, 817}, ["ac"] = 8766, + ["acE"] = {8766, 819}, ["mstpos"] = 8766, ["acd"] = 8767, - ["wreath"] = 8768, ["VerticalTilde"] = 8768, ["wr"] = 8768, - ["nsim"] = 8769, + ["wreath"] = 8768, ["NotTilde"] = 8769, - ["esim"] = 8770, + ["nsim"] = 8769, ["EqualTilde"] = 8770, + ["NotEqualTilde"] = {8770, 824}, ["eqsim"] = 8770, - ["sime"] = 8771, + ["esim"] = 8770, + ["nesim"] = {8770, 824}, ["TildeEqual"] = 8771, + ["sime"] = 8771, ["simeq"] = 8771, + ["NotTildeEqual"] = 8772, ["nsime"] = 8772, ["nsimeq"] = 8772, - ["NotTildeEqual"] = 8772, - ["cong"] = 8773, ["TildeFullEqual"] = 8773, + ["cong"] = 8773, ["simne"] = 8774, - ["ncong"] = 8775, ["NotTildeFullEqual"] = 8775, - ["asymp"] = 8776, - ["ap"] = 8776, + ["ncong"] = 8775, ["TildeTilde"] = 8776, + ["ap"] = 8776, ["approx"] = 8776, - ["thkap"] = 8776, + ["asymp"] = 8776, ["thickapprox"] = 8776, - ["nap"] = 8777, + ["thkap"] = 8776, ["NotTildeTilde"] = 8777, + ["nap"] = 8777, ["napprox"] = 8777, ["ape"] = 8778, ["approxeq"] = 8778, ["apid"] = 8779, - ["bcong"] = 8780, + ["napid"] = {8779, 824}, ["backcong"] = 8780, - ["asympeq"] = 8781, + ["bcong"] = 8780, ["CupCap"] = 8781, - ["bump"] = 8782, - ["HumpDownHump"] = 8782, + ["asympeq"] = 8781, + ["nvap"] = {8781, 8402}, ["Bumpeq"] = 8782, - ["bumpe"] = 8783, + ["HumpDownHump"] = 8782, + ["NotHumpDownHump"] = {8782, 824}, + ["bump"] = 8782, + ["nbump"] = {8782, 824}, ["HumpEqual"] = 8783, + ["NotHumpEqual"] = {8783, 824}, + ["bumpe"] = 8783, ["bumpeq"] = 8783, - ["esdot"] = 8784, + ["nbumpe"] = {8783, 824}, ["DotEqual"] = 8784, ["doteq"] = 8784, - ["eDot"] = 8785, + ["esdot"] = 8784, + ["nedot"] = {8784, 824}, ["doteqdot"] = 8785, + ["eDot"] = 8785, ["efDot"] = 8786, ["fallingdotseq"] = 8786, ["erDot"] = 8787, ["risingdotseq"] = 8787, + ["Assign"] = 8788, ["colone"] = 8788, ["coloneq"] = 8788, - ["Assign"] = 8788, ["ecolon"] = 8789, ["eqcolon"] = 8789, ["ecir"] = 8790, ["eqcirc"] = 8790, - ["cire"] = 8791, ["circeq"] = 8791, + ["cire"] = 8791, ["wedgeq"] = 8793, ["veeeq"] = 8794, - ["trie"] = 8796, ["triangleq"] = 8796, + ["trie"] = 8796, ["equest"] = 8799, ["questeq"] = 8799, - ["ne"] = 8800, ["NotEqual"] = 8800, - ["equiv"] = 8801, + ["ne"] = 8800, ["Congruent"] = 8801, - ["nequiv"] = 8802, + ["bnequiv"] = {8801, 8421}, + ["equiv"] = 8801, ["NotCongruent"] = 8802, + ["nequiv"] = 8802, ["le"] = 8804, ["leq"] = 8804, - ["ge"] = 8805, + ["nvle"] = {8804, 8402}, ["GreaterEqual"] = 8805, + ["ge"] = 8805, ["geq"] = 8805, - ["lE"] = 8806, + ["nvge"] = {8805, 8402}, ["LessFullEqual"] = 8806, + ["lE"] = 8806, ["leqq"] = 8806, - ["gE"] = 8807, + ["nlE"] = {8806, 824}, + ["nleqq"] = {8806, 824}, ["GreaterFullEqual"] = 8807, + ["NotGreaterFullEqual"] = {8807, 824}, + ["gE"] = 8807, ["geqq"] = 8807, + ["ngE"] = {8807, 824}, + ["ngeqq"] = {8807, 824}, ["lnE"] = 8808, ["lneqq"] = 8808, + ["lvertneqq"] = {8808, 65024}, + ["lvnE"] = {8808, 65024}, ["gnE"] = 8809, ["gneqq"] = 8809, + ["gvertneqq"] = {8809, 65024}, + ["gvnE"] = {8809, 65024}, ["Lt"] = 8810, ["NestedLessLess"] = 8810, + ["NotLessLess"] = {8810, 824}, ["ll"] = 8810, + ["nLt"] = {8810, 8402}, + ["nLtv"] = {8810, 824}, ["Gt"] = 8811, ["NestedGreaterGreater"] = 8811, + ["NotGreaterGreater"] = {8811, 824}, ["gg"] = 8811, - ["twixt"] = 8812, + ["nGt"] = {8811, 8402}, + ["nGtv"] = {8811, 824}, ["between"] = 8812, + ["twixt"] = 8812, ["NotCupCap"] = 8813, - ["nlt"] = 8814, ["NotLess"] = 8814, ["nless"] = 8814, - ["ngt"] = 8815, + ["nlt"] = 8814, ["NotGreater"] = 8815, + ["ngt"] = 8815, ["ngtr"] = 8815, - ["nle"] = 8816, ["NotLessEqual"] = 8816, + ["nle"] = 8816, ["nleq"] = 8816, - ["nge"] = 8817, ["NotGreaterEqual"] = 8817, + ["nge"] = 8817, ["ngeq"] = 8817, - ["lsim"] = 8818, ["LessTilde"] = 8818, ["lesssim"] = 8818, + ["lsim"] = 8818, + ["GreaterTilde"] = 8819, ["gsim"] = 8819, ["gtrsim"] = 8819, - ["GreaterTilde"] = 8819, - ["nlsim"] = 8820, ["NotLessTilde"] = 8820, - ["ngsim"] = 8821, + ["nlsim"] = 8820, ["NotGreaterTilde"] = 8821, - ["lg"] = 8822, - ["lessgtr"] = 8822, + ["ngsim"] = 8821, ["LessGreater"] = 8822, + ["lessgtr"] = 8822, + ["lg"] = 8822, + ["GreaterLess"] = 8823, ["gl"] = 8823, ["gtrless"] = 8823, - ["GreaterLess"] = 8823, - ["ntlg"] = 8824, ["NotLessGreater"] = 8824, - ["ntgl"] = 8825, + ["ntlg"] = 8824, ["NotGreaterLess"] = 8825, - ["pr"] = 8826, + ["ntgl"] = 8825, ["Precedes"] = 8826, + ["pr"] = 8826, ["prec"] = 8826, - ["sc"] = 8827, ["Succeeds"] = 8827, + ["sc"] = 8827, ["succ"] = 8827, - ["prcue"] = 8828, ["PrecedesSlantEqual"] = 8828, + ["prcue"] = 8828, ["preccurlyeq"] = 8828, - ["sccue"] = 8829, ["SucceedsSlantEqual"] = 8829, + ["sccue"] = 8829, ["succcurlyeq"] = 8829, - ["prsim"] = 8830, - ["precsim"] = 8830, ["PrecedesTilde"] = 8830, + ["precsim"] = 8830, + ["prsim"] = 8830, + ["NotSucceedsTilde"] = {8831, 824}, + ["SucceedsTilde"] = 8831, ["scsim"] = 8831, ["succsim"] = 8831, - ["SucceedsTilde"] = 8831, + ["NotPrecedes"] = 8832, ["npr"] = 8832, ["nprec"] = 8832, - ["NotPrecedes"] = 8832, + ["NotSucceeds"] = 8833, ["nsc"] = 8833, ["nsucc"] = 8833, - ["NotSucceeds"] = 8833, + ["NotSubset"] = {8834, 8402}, + ["nsubset"] = {8834, 8402}, ["sub"] = 8834, ["subset"] = 8834, + ["vnsub"] = {8834, 8402}, + ["NotSuperset"] = {8835, 8402}, + ["Superset"] = 8835, + ["nsupset"] = {8835, 8402}, ["sup"] = 8835, ["supset"] = 8835, - ["Superset"] = 8835, + ["vnsup"] = {8835, 8402}, ["nsub"] = 8836, ["nsup"] = 8837, - ["sube"] = 8838, ["SubsetEqual"] = 8838, + ["sube"] = 8838, ["subseteq"] = 8838, + ["SupersetEqual"] = 8839, ["supe"] = 8839, ["supseteq"] = 8839, - ["SupersetEqual"] = 8839, + ["NotSubsetEqual"] = 8840, ["nsube"] = 8840, ["nsubseteq"] = 8840, - ["NotSubsetEqual"] = 8840, + ["NotSupersetEqual"] = 8841, ["nsupe"] = 8841, ["nsupseteq"] = 8841, - ["NotSupersetEqual"] = 8841, ["subne"] = 8842, ["subsetneq"] = 8842, + ["varsubsetneq"] = {8842, 65024}, + ["vsubne"] = {8842, 65024}, ["supne"] = 8843, ["supsetneq"] = 8843, + ["varsupsetneq"] = {8843, 65024}, + ["vsupne"] = {8843, 65024}, ["cupdot"] = 8845, - ["uplus"] = 8846, ["UnionPlus"] = 8846, - ["sqsub"] = 8847, + ["uplus"] = 8846, + ["NotSquareSubset"] = {8847, 824}, ["SquareSubset"] = 8847, + ["sqsub"] = 8847, ["sqsubset"] = 8847, - ["sqsup"] = 8848, + ["NotSquareSuperset"] = {8848, 824}, ["SquareSuperset"] = 8848, + ["sqsup"] = 8848, ["sqsupset"] = 8848, - ["sqsube"] = 8849, ["SquareSubsetEqual"] = 8849, + ["sqsube"] = 8849, ["sqsubseteq"] = 8849, - ["sqsupe"] = 8850, ["SquareSupersetEqual"] = 8850, + ["sqsupe"] = 8850, ["sqsupseteq"] = 8850, - ["sqcap"] = 8851, ["SquareIntersection"] = 8851, - ["sqcup"] = 8852, + ["sqcap"] = 8851, + ["sqcaps"] = {8851, 65024}, ["SquareUnion"] = 8852, - ["oplus"] = 8853, + ["sqcup"] = 8852, + ["sqcups"] = {8852, 65024}, ["CirclePlus"] = 8853, - ["ominus"] = 8854, + ["oplus"] = 8853, ["CircleMinus"] = 8854, - ["otimes"] = 8855, + ["ominus"] = 8854, ["CircleTimes"] = 8855, + ["otimes"] = 8855, ["osol"] = 8856, - ["odot"] = 8857, ["CircleDot"] = 8857, - ["ocir"] = 8858, + ["odot"] = 8857, ["circledcirc"] = 8858, - ["oast"] = 8859, + ["ocir"] = 8858, ["circledast"] = 8859, - ["odash"] = 8861, + ["oast"] = 8859, ["circleddash"] = 8861, - ["plusb"] = 8862, + ["odash"] = 8861, ["boxplus"] = 8862, - ["minusb"] = 8863, + ["plusb"] = 8862, ["boxminus"] = 8863, - ["timesb"] = 8864, + ["minusb"] = 8863, ["boxtimes"] = 8864, - ["sdotb"] = 8865, + ["timesb"] = 8864, ["dotsquare"] = 8865, - ["vdash"] = 8866, + ["sdotb"] = 8865, ["RightTee"] = 8866, - ["dashv"] = 8867, + ["vdash"] = 8866, ["LeftTee"] = 8867, - ["top"] = 8868, + ["dashv"] = 8867, ["DownTee"] = 8868, - ["bottom"] = 8869, + ["top"] = 8868, + ["UpTee"] = 8869, ["bot"] = 8869, + ["bottom"] = 8869, ["perp"] = 8869, - ["UpTee"] = 8869, ["models"] = 8871, - ["vDash"] = 8872, ["DoubleRightTee"] = 8872, + ["vDash"] = 8872, ["Vdash"] = 8873, ["Vvdash"] = 8874, ["VDash"] = 8875, @@ -22124,22 +23546,24 @@ local character_entities = { ["nVdash"] = 8878, ["nVDash"] = 8879, ["prurel"] = 8880, - ["vltri"] = 8882, - ["vartriangleleft"] = 8882, ["LeftTriangle"] = 8882, - ["vrtri"] = 8883, - ["vartriangleright"] = 8883, + ["vartriangleleft"] = 8882, + ["vltri"] = 8882, ["RightTriangle"] = 8883, + ["vartriangleright"] = 8883, + ["vrtri"] = 8883, + ["LeftTriangleEqual"] = 8884, ["ltrie"] = 8884, + ["nvltrie"] = {8884, 8402}, ["trianglelefteq"] = 8884, - ["LeftTriangleEqual"] = 8884, + ["RightTriangleEqual"] = 8885, + ["nvrtrie"] = {8885, 8402}, ["rtrie"] = 8885, ["trianglerighteq"] = 8885, - ["RightTriangleEqual"] = 8885, ["origof"] = 8886, ["imof"] = 8887, - ["mumap"] = 8888, ["multimap"] = 8888, + ["mumap"] = 8888, ["hercon"] = 8889, ["intcal"] = 8890, ["intercal"] = 8890, @@ -22147,39 +23571,39 @@ local character_entities = { ["barvee"] = 8893, ["angrtvb"] = 8894, ["lrtri"] = 8895, - ["xwedge"] = 8896, ["Wedge"] = 8896, ["bigwedge"] = 8896, - ["xvee"] = 8897, + ["xwedge"] = 8896, ["Vee"] = 8897, ["bigvee"] = 8897, - ["xcap"] = 8898, + ["xvee"] = 8897, ["Intersection"] = 8898, ["bigcap"] = 8898, - ["xcup"] = 8899, + ["xcap"] = 8898, ["Union"] = 8899, ["bigcup"] = 8899, + ["xcup"] = 8899, + ["Diamond"] = 8900, ["diam"] = 8900, ["diamond"] = 8900, - ["Diamond"] = 8900, ["sdot"] = 8901, - ["sstarf"] = 8902, ["Star"] = 8902, - ["divonx"] = 8903, + ["sstarf"] = 8902, ["divideontimes"] = 8903, + ["divonx"] = 8903, ["bowtie"] = 8904, ["ltimes"] = 8905, ["rtimes"] = 8906, - ["lthree"] = 8907, ["leftthreetimes"] = 8907, - ["rthree"] = 8908, + ["lthree"] = 8907, ["rightthreetimes"] = 8908, - ["bsime"] = 8909, + ["rthree"] = 8908, ["backsimeq"] = 8909, - ["cuvee"] = 8910, + ["bsime"] = 8909, ["curlyvee"] = 8910, - ["cuwed"] = 8911, + ["cuvee"] = 8910, ["curlywedge"] = 8911, + ["cuwed"] = 8911, ["Sub"] = 8912, ["Subset"] = 8912, ["Sup"] = 8913, @@ -22189,49 +23613,53 @@ local character_entities = { ["fork"] = 8916, ["pitchfork"] = 8916, ["epar"] = 8917, - ["ltdot"] = 8918, ["lessdot"] = 8918, + ["ltdot"] = 8918, ["gtdot"] = 8919, ["gtrdot"] = 8919, ["Ll"] = 8920, + ["nLl"] = {8920, 824}, ["Gg"] = 8921, ["ggg"] = 8921, - ["leg"] = 8922, + ["nGg"] = {8921, 824}, ["LessEqualGreater"] = 8922, + ["leg"] = 8922, + ["lesg"] = {8922, 65024}, ["lesseqgtr"] = 8922, + ["GreaterEqualLess"] = 8923, ["gel"] = 8923, + ["gesl"] = {8923, 65024}, ["gtreqless"] = 8923, - ["GreaterEqualLess"] = 8923, ["cuepr"] = 8926, ["curlyeqprec"] = 8926, ["cuesc"] = 8927, ["curlyeqsucc"] = 8927, - ["nprcue"] = 8928, ["NotPrecedesSlantEqual"] = 8928, - ["nsccue"] = 8929, + ["nprcue"] = 8928, ["NotSucceedsSlantEqual"] = 8929, - ["nsqsube"] = 8930, + ["nsccue"] = 8929, ["NotSquareSubsetEqual"] = 8930, - ["nsqsupe"] = 8931, + ["nsqsube"] = 8930, ["NotSquareSupersetEqual"] = 8931, + ["nsqsupe"] = 8931, ["lnsim"] = 8934, ["gnsim"] = 8935, - ["prnsim"] = 8936, ["precnsim"] = 8936, + ["prnsim"] = 8936, ["scnsim"] = 8937, ["succnsim"] = 8937, + ["NotLeftTriangle"] = 8938, ["nltri"] = 8938, ["ntriangleleft"] = 8938, - ["NotLeftTriangle"] = 8938, + ["NotRightTriangle"] = 8939, ["nrtri"] = 8939, ["ntriangleright"] = 8939, - ["NotRightTriangle"] = 8939, + ["NotLeftTriangleEqual"] = 8940, ["nltrie"] = 8940, ["ntrianglelefteq"] = 8940, - ["NotLeftTriangleEqual"] = 8940, + ["NotRightTriangleEqual"] = 8941, ["nrtrie"] = 8941, ["ntrianglerighteq"] = 8941, - ["NotRightTriangleEqual"] = 8941, ["vellip"] = 8942, ["ctdot"] = 8943, ["utdot"] = 8944, @@ -22240,9 +23668,11 @@ local character_entities = { ["isinsv"] = 8947, ["isins"] = 8948, ["isindot"] = 8949, + ["notindot"] = {8949, 824}, ["notinvc"] = 8950, ["notinvb"] = 8951, ["isinE"] = 8953, + ["notinE"] = {8953, 824}, ["nisd"] = 8954, ["xnis"] = 8955, ["nis"] = 8956, @@ -22252,14 +23682,14 @@ local character_entities = { ["barwedge"] = 8965, ["Barwed"] = 8966, ["doublebarwedge"] = 8966, - ["lceil"] = 8968, ["LeftCeiling"] = 8968, - ["rceil"] = 8969, + ["lceil"] = 8968, ["RightCeiling"] = 8969, - ["lfloor"] = 8970, + ["rceil"] = 8969, ["LeftFloor"] = 8970, - ["rfloor"] = 8971, + ["lfloor"] = 8970, ["RightFloor"] = 8971, + ["rfloor"] = 8971, ["drcrop"] = 8972, ["dlcrop"] = 8973, ["urcrop"] = 8974, @@ -22291,10 +23721,10 @@ local character_entities = { ["lmoustache"] = 9136, ["rmoust"] = 9137, ["rmoustache"] = 9137, - ["tbrk"] = 9140, ["OverBracket"] = 9140, - ["bbrk"] = 9141, + ["tbrk"] = 9140, ["UnderBracket"] = 9141, + ["bbrk"] = 9141, ["bbrktbrk"] = 9142, ["OverParenthesis"] = 9180, ["UnderParenthesis"] = 9181, @@ -22303,10 +23733,10 @@ local character_entities = { ["trpezium"] = 9186, ["elinters"] = 9191, ["blank"] = 9251, - ["oS"] = 9416, ["circledS"] = 9416, - ["boxh"] = 9472, + ["oS"] = 9416, ["HorizontalLine"] = 9472, + ["boxh"] = 9472, ["boxv"] = 9474, ["boxdr"] = 9484, ["boxdl"] = 9488, @@ -22352,50 +23782,50 @@ local character_entities = { ["blk14"] = 9617, ["blk12"] = 9618, ["blk34"] = 9619, + ["Square"] = 9633, ["squ"] = 9633, ["square"] = 9633, - ["Square"] = 9633, - ["squf"] = 9642, - ["squarf"] = 9642, - ["blacksquare"] = 9642, ["FilledVerySmallSquare"] = 9642, + ["blacksquare"] = 9642, + ["squarf"] = 9642, + ["squf"] = 9642, ["EmptyVerySmallSquare"] = 9643, ["rect"] = 9645, ["marker"] = 9646, ["fltns"] = 9649, - ["xutri"] = 9651, ["bigtriangleup"] = 9651, - ["utrif"] = 9652, + ["xutri"] = 9651, ["blacktriangle"] = 9652, - ["utri"] = 9653, + ["utrif"] = 9652, ["triangle"] = 9653, - ["rtrif"] = 9656, + ["utri"] = 9653, ["blacktriangleright"] = 9656, + ["rtrif"] = 9656, ["rtri"] = 9657, ["triangleright"] = 9657, - ["xdtri"] = 9661, ["bigtriangledown"] = 9661, - ["dtrif"] = 9662, + ["xdtri"] = 9661, ["blacktriangledown"] = 9662, + ["dtrif"] = 9662, ["dtri"] = 9663, ["triangledown"] = 9663, - ["ltrif"] = 9666, ["blacktriangleleft"] = 9666, + ["ltrif"] = 9666, ["ltri"] = 9667, ["triangleleft"] = 9667, ["loz"] = 9674, ["lozenge"] = 9674, ["cir"] = 9675, ["tridot"] = 9708, - ["xcirc"] = 9711, ["bigcirc"] = 9711, + ["xcirc"] = 9711, ["ultri"] = 9720, ["urtri"] = 9721, ["lltri"] = 9722, ["EmptySmallSquare"] = 9723, ["FilledSmallSquare"] = 9724, - ["starf"] = 9733, ["bigstar"] = 9733, + ["starf"] = 9733, ["star"] = 9734, ["phone"] = 9742, ["female"] = 9792, @@ -22406,8 +23836,8 @@ local character_entities = { ["clubsuit"] = 9827, ["hearts"] = 9829, ["heartsuit"] = 9829, - ["diams"] = 9830, ["diamondsuit"] = 9830, + ["diams"] = 9830, ["sung"] = 9834, ["flat"] = 9837, ["natur"] = 9838, @@ -22422,51 +23852,53 @@ local character_entities = { ["VerticalSeparator"] = 10072, ["lbbrk"] = 10098, ["rbbrk"] = 10099, - ["lobrk"] = 10214, + ["bsolhsub"] = 10184, + ["suphsol"] = 10185, ["LeftDoubleBracket"] = 10214, - ["robrk"] = 10215, + ["lobrk"] = 10214, ["RightDoubleBracket"] = 10215, - ["lang"] = 10216, + ["robrk"] = 10215, ["LeftAngleBracket"] = 10216, + ["lang"] = 10216, ["langle"] = 10216, - ["rang"] = 10217, ["RightAngleBracket"] = 10217, + ["rang"] = 10217, ["rangle"] = 10217, ["Lang"] = 10218, ["Rang"] = 10219, ["loang"] = 10220, ["roang"] = 10221, - ["xlarr"] = 10229, - ["longleftarrow"] = 10229, ["LongLeftArrow"] = 10229, - ["xrarr"] = 10230, - ["longrightarrow"] = 10230, + ["longleftarrow"] = 10229, + ["xlarr"] = 10229, ["LongRightArrow"] = 10230, - ["xharr"] = 10231, - ["longleftrightarrow"] = 10231, + ["longrightarrow"] = 10230, + ["xrarr"] = 10230, ["LongLeftRightArrow"] = 10231, - ["xlArr"] = 10232, - ["Longleftarrow"] = 10232, + ["longleftrightarrow"] = 10231, + ["xharr"] = 10231, ["DoubleLongLeftArrow"] = 10232, - ["xrArr"] = 10233, - ["Longrightarrow"] = 10233, + ["Longleftarrow"] = 10232, + ["xlArr"] = 10232, ["DoubleLongRightArrow"] = 10233, - ["xhArr"] = 10234, - ["Longleftrightarrow"] = 10234, + ["Longrightarrow"] = 10233, + ["xrArr"] = 10233, ["DoubleLongLeftRightArrow"] = 10234, - ["xmap"] = 10236, + ["Longleftrightarrow"] = 10234, + ["xhArr"] = 10234, ["longmapsto"] = 10236, + ["xmap"] = 10236, ["dzigrarr"] = 10239, ["nvlArr"] = 10498, ["nvrArr"] = 10499, ["nvHarr"] = 10500, ["Map"] = 10501, ["lbarr"] = 10508, - ["rbarr"] = 10509, ["bkarow"] = 10509, + ["rbarr"] = 10509, ["lBarr"] = 10510, - ["rBarr"] = 10511, ["dbkarow"] = 10511, + ["rBarr"] = 10511, ["RBarr"] = 10512, ["drbkarow"] = 10512, ["DDotrahd"] = 10513, @@ -22483,16 +23915,17 @@ local character_entities = { ["rarrbfs"] = 10528, ["nwarhk"] = 10531, ["nearhk"] = 10532, - ["searhk"] = 10533, ["hksearow"] = 10533, - ["swarhk"] = 10534, + ["searhk"] = 10533, ["hkswarow"] = 10534, + ["swarhk"] = 10534, ["nwnear"] = 10535, ["nesear"] = 10536, ["toea"] = 10536, ["seswar"] = 10537, ["tosa"] = 10537, ["swnwar"] = 10538, + ["nrarrc"] = {10547, 824}, ["rarrc"] = 10547, ["cudarrr"] = 10549, ["ldca"] = 10550, @@ -22538,10 +23971,10 @@ local character_entities = { ["llhard"] = 10603, ["rharul"] = 10604, ["lrhard"] = 10605, - ["udhar"] = 10606, ["UpEquilibrium"] = 10606, - ["duhar"] = 10607, + ["udhar"] = 10606, ["ReverseUpEquilibrium"] = 10607, + ["duhar"] = 10607, ["RoundImplies"] = 10608, ["erarr"] = 10609, ["simrarr"] = 10610, @@ -22608,30 +24041,31 @@ local character_entities = { ["trisb"] = 10701, ["rtriltri"] = 10702, ["LeftTriangleBar"] = 10703, + ["NotLeftTriangleBar"] = {10703, 824}, + ["NotRightTriangleBar"] = {10704, 824}, ["RightTriangleBar"] = 10704, - ["race"] = 10714, ["iinfin"] = 10716, ["infintie"] = 10717, ["nvinfin"] = 10718, ["eparsl"] = 10723, ["smeparsl"] = 10724, ["eqvparsl"] = 10725, - ["lozf"] = 10731, ["blacklozenge"] = 10731, + ["lozf"] = 10731, ["RuleDelayed"] = 10740, ["dsol"] = 10742, - ["xodot"] = 10752, ["bigodot"] = 10752, - ["xoplus"] = 10753, + ["xodot"] = 10752, ["bigoplus"] = 10753, - ["xotime"] = 10754, + ["xoplus"] = 10753, ["bigotimes"] = 10754, - ["xuplus"] = 10756, + ["xotime"] = 10754, ["biguplus"] = 10756, - ["xsqcup"] = 10758, + ["xuplus"] = 10756, ["bigsqcup"] = 10758, - ["qint"] = 10764, + ["xsqcup"] = 10758, ["iiiint"] = 10764, + ["qint"] = 10764, ["fpartint"] = 10765, ["cirfnint"] = 10768, ["awint"] = 10769, @@ -22663,8 +24097,8 @@ local character_entities = { ["triplus"] = 10809, ["triminus"] = 10810, ["tritime"] = 10811, - ["iprod"] = 10812, ["intprod"] = 10812, + ["iprod"] = 10812, ["amalg"] = 10815, ["capdot"] = 10816, ["ncup"] = 10818, @@ -22694,27 +24128,35 @@ local character_entities = { ["sdote"] = 10854, ["simdot"] = 10858, ["congdot"] = 10861, + ["ncongdot"] = {10861, 824}, ["easter"] = 10862, ["apacir"] = 10863, ["apE"] = 10864, + ["napE"] = {10864, 824}, ["eplus"] = 10865, ["pluse"] = 10866, ["Esim"] = 10867, ["Colone"] = 10868, ["Equal"] = 10869, - ["eDDot"] = 10871, ["ddotseq"] = 10871, + ["eDDot"] = 10871, ["equivDD"] = 10872, ["ltcir"] = 10873, ["gtcir"] = 10874, ["ltquest"] = 10875, ["gtquest"] = 10876, - ["les"] = 10877, ["LessSlantEqual"] = 10877, + ["NotLessSlantEqual"] = {10877, 824}, ["leqslant"] = 10877, - ["ges"] = 10878, + ["les"] = 10877, + ["nleqslant"] = {10877, 824}, + ["nles"] = {10877, 824}, ["GreaterSlantEqual"] = 10878, + ["NotGreaterSlantEqual"] = {10878, 824}, ["geqslant"] = 10878, + ["ges"] = 10878, + ["ngeqslant"] = {10878, 824}, + ["nges"] = {10878, 824}, ["lesdot"] = 10879, ["gesdot"] = 10880, ["lesdoto"] = 10881, @@ -22758,7 +24200,9 @@ local character_entities = { ["simlE"] = 10911, ["simgE"] = 10912, ["LessLess"] = 10913, + ["NotNestedLessLess"] = {10913, 824}, ["GreaterGreater"] = 10914, + ["NotNestedGreaterGreater"] = {10914, 824}, ["glj"] = 10916, ["gla"] = 10917, ["ltcc"] = 10918, @@ -22768,26 +24212,34 @@ local character_entities = { ["smt"] = 10922, ["lat"] = 10923, ["smte"] = 10924, + ["smtes"] = {10924, 65024}, ["late"] = 10925, + ["lates"] = {10925, 65024}, ["bumpE"] = 10926, + ["NotPrecedesEqual"] = {10927, 824}, + ["PrecedesEqual"] = 10927, + ["npre"] = {10927, 824}, + ["npreceq"] = {10927, 824}, ["pre"] = 10927, ["preceq"] = 10927, - ["PrecedesEqual"] = 10927, + ["NotSucceedsEqual"] = {10928, 824}, + ["SucceedsEqual"] = 10928, + ["nsce"] = {10928, 824}, + ["nsucceq"] = {10928, 824}, ["sce"] = 10928, ["succeq"] = 10928, - ["SucceedsEqual"] = 10928, ["prE"] = 10931, ["scE"] = 10932, - ["prnE"] = 10933, ["precneqq"] = 10933, + ["prnE"] = 10933, ["scnE"] = 10934, ["succneqq"] = 10934, ["prap"] = 10935, ["precapprox"] = 10935, ["scap"] = 10936, ["succapprox"] = 10936, - ["prnap"] = 10937, ["precnapprox"] = 10937, + ["prnap"] = 10937, ["scnap"] = 10938, ["succnapprox"] = 10938, ["Pr"] = 10939, @@ -22800,16 +24252,24 @@ local character_entities = { ["supmult"] = 10946, ["subedot"] = 10947, ["supedot"] = 10948, + ["nsubE"] = {10949, 824}, + ["nsubseteqq"] = {10949, 824}, ["subE"] = 10949, ["subseteqq"] = 10949, + ["nsupE"] = {10950, 824}, + ["nsupseteqq"] = {10950, 824}, ["supE"] = 10950, ["supseteqq"] = 10950, ["subsim"] = 10951, ["supsim"] = 10952, ["subnE"] = 10955, ["subsetneqq"] = 10955, + ["varsubsetneqq"] = {10955, 65024}, + ["vsubnE"] = {10955, 65024}, ["supnE"] = 10956, ["supsetneqq"] = 10956, + ["varsupsetneqq"] = {10956, 65024}, + ["vsupnE"] = {10956, 65024}, ["csub"] = 10959, ["csup"] = 10960, ["csube"] = 10961, @@ -22838,6 +24298,7 @@ local character_entities = { ["topcir"] = 10993, ["nhpar"] = 10994, ["parsim"] = 10995, + ["nparsl"] = {11005, 8421}, ["parsl"] = 11005, ["fflig"] = 64256, ["filig"] = 64257, @@ -22988,7 +24449,11 @@ local character_entities = { % \end{markdown} % \begin{macrocode} function entities.dec_entity(s) - return unicode.utf8.char(tonumber(s)) + local n = tonumber(s) + if n == nil then + return "&#" .. s .. ";" -- fallback for unknown entities + end + return unicode.utf8.char(n) end % \end{macrocode} % \par @@ -23001,7 +24466,28 @@ end % \end{markdown} % \begin{macrocode} function entities.hex_entity(s) - return unicode.utf8.char(tonumber("0x"..s)) + local n = tonumber("0x"..s) + if n == nil then + return "&#x" .. s .. ";" -- fallback for unknown entities + end + return unicode.utf8.char(n) +end +% \end{macrocode} +% \par +% \begin{markdown} +% +% Given a captured character `x` and a string `s` of hexadecimal digits, the +% \luamdef{entities.hex_entity_with_x_char} returns the corresponding +% \acro{utf}8-encoded Unicode codepoint or fallback with the `x` character. +% +% \end{markdown} +% \begin{macrocode} +function entities.hex_entity_with_x_char(x, s) + local n = tonumber("0x"..s) + if n == nil then + return "&#" .. x .. s .. ";" -- fallback for unknown entities + end + return unicode.utf8.char(n) end % \end{macrocode} % \par @@ -23014,11 +24500,18 @@ end % \end{markdown} % \begin{macrocode} function entities.char_entity(s) - local n = character_entities[s] - if n == nil then + local code_points = character_entities[s] + if code_points == nil then return "&" .. s .. ";" end - return unicode.utf8.char(n) + if type(code_points) ~= 'table' then + code_points = {code_points} + end + local char_table = {} + for _, code_point in ipairs(code_points) do + table.insert(char_table, unicode.utf8.char(code_point)) + end + return table.concat(char_table) end % \end{macrocode} % \par @@ -23073,6 +24566,18 @@ function M.writer.new(options) % \par % \begin{markdown} % +% Define \luamdef{writer->flatten\_inlines}, which indicates whether or not the +% writer should produce raw text rather than text in the output format for +% inline elements. The \luamref{writer->flatten\_inlines} member variable is +% mutable. +% +% \end{markdown} +% \begin{macrocode} + self.flatten_inlines = false +% \end{macrocode} +% \par +% \begin{markdown} +% % Parse the \Opt{slice} option and define \luamdef{writer->slice\_begin}, % \luamdef{writer->slice\_end}, and \luamdef{writer->is\_writing}. The % \luamref{writer->is\_writing} member variable is mutable. @@ -23192,12 +24697,43 @@ function M.writer.new(options) % \par % \begin{markdown} % -% Define \luamdef{writer->hard_line_break} as the output format of a forced +% Define \luamdef{writer->paragraphsep} as the output format of a paragraph +% separator. Users can use more than one blank line to delimit two blocks to +% indicate the end of a series of blocks that make up a paragraph. This +% produces a paragraph separator instead of an interblock separator. +% +% \end{markdown} +% \begin{macrocode} + function self.paragraphsep() + if not self.is_writing then return "" end + return "\\markdownRendererParagraphSeparator\n{}" + end +% \end{macrocode} +% \par +% \begin{markdown} +% +% Define \luamdef{writer->soft_line_break} as the output format of a soft % line break. % % \end{markdown} % \begin{macrocode} - self.hard_line_break = "\\markdownRendererHardLineBreak\n{}" + self.soft_line_break = function() + if self.flatten_inlines then return "\n" end + return "\\markdownRendererSoftLineBreak\n{}" + end +% \end{macrocode} +% \par +% \begin{markdown} +% +% Define \luamdef{writer->hard_line_break} as the output format of a hard +% line break. +% +% \end{markdown} +% \begin{macrocode} + self.hard_line_break = function() + if self.flatten_inlines then return "\n" end + return "\\markdownRendererHardLineBreak\n{}" + end % \end{macrocode} % \par % \begin{markdown} @@ -23290,11 +24826,18 @@ function M.writer.new(options) % % \end{markdown} % \begin{macrocode} - local escape_typographic_text = util.escaper( + local function create_escaper(char_escapes, string_escapes) + local escape = util.escaper(char_escapes, string_escapes) + return function(s) + if self.flatten_inlines then return s end + return escape(s) + end + end + local escape_typographic_text = create_escaper( self.escaped_chars, self.escaped_strings) - local escape_programmatic_text = util.escaper( + local escape_programmatic_text = create_escaper( self.escaped_uri_chars, self.escaped_minimal_strings) - local escape_minimal = util.escaper( + local escape_minimal = create_escaper( {}, self.escaped_minimal_strings) % \end{macrocode} % \par @@ -23310,6 +24853,7 @@ function M.writer.new(options) % - \luamdef{writer->math} transforms a math span. % - \luamdef{writer->identifier} transforms an input programmatic identifier. % - \luamdef{writer->uri} transforms an input \acro{uri}. +% - \luamdef{writer->infostring} transforms a fence code infostring. % % \end{markdown} % \begin{macrocode} @@ -23319,10 +24863,12 @@ function M.writer.new(options) self.identifier = escape_minimal self.string = escape_minimal self.uri = escape_minimal + self.infostring = escape_minimal else self.identifier = escape_programmatic_text self.string = escape_typographic_text self.uri = escape_programmatic_text + self.infostring = escape_programmatic_text end % \end{macrocode} % \par @@ -23335,6 +24881,7 @@ function M.writer.new(options) % \end{markdown} % \begin{macrocode} function self.code(s, attributes) + if self.flatten_inlines then return s end local buf = {} if attributes ~= nil then table.insert(buf, @@ -23361,6 +24908,7 @@ function M.writer.new(options) % \end{markdown} % \begin{macrocode} function self.link(lab, src, tit, attributes) + if self.flatten_inlines then return lab end local buf = {} if attributes ~= nil then table.insert(buf, @@ -23389,6 +24937,7 @@ function M.writer.new(options) % \end{markdown} % \begin{macrocode} function self.image(lab, src, tit, attributes) + if self.flatten_inlines then return lab end local buf = {} if attributes ~= nil then table.insert(buf, @@ -23419,7 +24968,9 @@ function M.writer.new(options) if not self.is_writing then return "" end local buffer = {} for _,item in ipairs(items) do - buffer[#buffer + 1] = self.bulletitem(item) + if item ~= "" then + buffer[#buffer + 1] = self.bulletitem(item) + end end local contents = util.intersperse(buffer,"\n") if tight and options.tightLists then @@ -23460,8 +25011,10 @@ function M.writer.new(options) local buffer = {} local num = startnum for _,item in ipairs(items) do - buffer[#buffer + 1] = self.ordereditem(item,num) - if num ~= nil then + if item ~= "" then + buffer[#buffer + 1] = self.ordereditem(item,num) + end + if num ~= nil and item ~= "" then num = num + 1 end end @@ -23504,27 +25057,13 @@ function M.writer.new(options) % \end{markdown} % \begin{macrocode} function self.inline_html_comment(contents) + if self.flatten_inlines then return contents end return {"\\markdownRendererInlineHtmlComment{",contents,"}"} end % \end{macrocode} % \par % \begin{markdown} % -% Define \luamdef{writer->block_html_comment} as a function that will -% transform the contents of a block \acro{HTML} comment, to the output -% format, where `contents` are the contents of the \acro{HTML} comment. -% -% \end{markdown} -% \begin{macrocode} - function self.block_html_comment(contents) - if not self.is_writing then return "" end - return {"\\markdownRendererBlockHtmlCommentBegin\n",contents, - "\n\\markdownRendererBlockHtmlCommentEnd "} - end -% \end{macrocode} -% \par -% \begin{markdown} -% % Define \luamdef{writer->inline_html_tag} as a function that will % transform the contents of an opening, closing, or empty inline \acro{HTML} % tag to the output format, where `contents` are the contents of the @@ -23533,6 +25072,7 @@ function M.writer.new(options) % \end{markdown} % \begin{macrocode} function self.inline_html_tag(contents) + if self.flatten_inlines then return contents end return {"\\markdownRendererInlineHtmlTag{",self.string(contents),"}"} end % \end{macrocode} @@ -23560,6 +25100,7 @@ function M.writer.new(options) % \end{markdown} % \begin{macrocode} function self.emphasis(s) + if self.flatten_inlines then return s end return {"\\markdownRendererEmphasis{",s,"}"} end % \end{macrocode} @@ -23590,6 +25131,7 @@ function M.writer.new(options) % \end{markdown} % \begin{macrocode} function self.strong(s) + if self.flatten_inlines then return s end return {"\\markdownRendererStrongEmphasis{",s,"}"} end % \end{macrocode} @@ -23602,7 +25144,7 @@ function M.writer.new(options) % \end{markdown} % \begin{macrocode} function self.blockquote(s) - if #util.rope_to_string(s) == 0 then return "" end + if not self.is_writing then return "" end return {"\\markdownRendererBlockQuoteBegin\n",s, "\n\\markdownRendererBlockQuoteEnd "} end @@ -23649,17 +25191,24 @@ function M.writer.new(options) % % \end{markdown} % \begin{macrocode} - function self.attributes(attributes) - local expanded_attributes = {} - local key_value_regex = "([^= ]+)%s*=%s*(.*)" + local seen_identifiers = {} + local key_value_regex = "([^= ]+)%s*=%s*(.*)" + local function normalize_attributes(attributes, auto_identifiers) + -- normalize attributes + local normalized_attributes = {} + local has_explicit_identifiers = false local key, value - for _, attribute in ipairs(attributes) do - if attribute:sub(1, 1) == "#" or attribute:sub(1, 1) == "." then - table.insert(expanded_attributes, attribute) + for _, attribute in ipairs(attributes or {}) do + if attribute:sub(1, 1) == "#" then + table.insert(normalized_attributes, attribute) + has_explicit_identifiers = true + seen_identifiers[attribute:sub(2)] = true + elseif attribute:sub(1, 1) == "." then + table.insert(normalized_attributes, attribute) else key, value = attribute:match(key_value_regex) if key:lower() == "id" then - table.insert(expanded_attributes, "#" .. value) + table.insert(normalized_attributes, "#" .. value) elseif key:lower() == "class" then local classes = {} for class in value:gmatch("%S+") do @@ -23667,23 +25216,67 @@ function M.writer.new(options) end table.sort(classes) for _, class in ipairs(classes) do - table.insert(expanded_attributes, "." .. class) + table.insert(normalized_attributes, "." .. class) end else - table.insert(expanded_attributes, attribute) + table.insert(normalized_attributes, attribute) end end end - table.sort(expanded_attributes) - local buf = {} - local seen = {} - for _, attribute in ipairs(expanded_attributes) do - if seen[attribute] ~= nil then - goto continue -- prevent duplicate attributes - else - seen[attribute] = true + -- if no explicit identifiers exist, add auto identifiers + if not has_explicit_identifiers and auto_identifiers ~= nil then + local seen_auto_identifiers = {} + for _, auto_identifier in ipairs(auto_identifiers) do + if seen_auto_identifiers[auto_identifier] == nil then + seen_auto_identifiers[auto_identifier] = true + if seen_identifiers[auto_identifier] == nil then + seen_identifiers[auto_identifier] = true + table.insert(normalized_attributes, + "#" .. auto_identifier) + else + local auto_identifier_number = 1 + while true do + local numbered_auto_identifier = auto_identifier .. "-" + .. auto_identifier_number + if seen_identifiers[numbered_auto_identifier] == nil then + seen_identifiers[numbered_auto_identifier] = true + table.insert(normalized_attributes, + "#" .. numbered_auto_identifier) + break + end + auto_identifier_number = auto_identifier_number + 1 + end + end + end + end + end + + -- sort and deduplicate normalized attributes + table.sort(normalized_attributes) + local seen_normalized_attributes = {} + local deduplicated_normalized_attributes = {} + for _, attribute in ipairs(normalized_attributes) do + if seen_normalized_attributes[attribute] == nil then + seen_normalized_attributes[attribute] = true + table.insert(deduplicated_normalized_attributes, attribute) end + end + + return deduplicated_normalized_attributes + end + + function self.attributes(attributes, should_normalize_attributes) + local normalized_attributes + if should_normalize_attributes == false then + normalized_attributes = attributes + else + normalized_attributes = normalize_attributes(attributes) + end + + local buf = {} + local key, value + for _, attribute in ipairs(normalized_attributes) do if attribute:sub(1, 1) == "#" then table.insert(buf, {"\\markdownRendererAttributeIdentifier{", attribute:sub(2), "}"}) @@ -23695,7 +25288,6 @@ function M.writer.new(options) table.insert(buf, {"\\markdownRendererAttributeKeyValue{", key, "}{", value, "}"}) end - ::continue:: end return buf @@ -23715,6 +25307,19 @@ function M.writer.new(options) % \par % \begin{markdown} % +% Define \luamdef{writer->attribute\_type\_levels} as a hash table that +% maps attribute types to the number of attributes of said type in +% \luamref{writer->active\_attributes}. +% +% \end{markdown} +% \begin{macrocode} + self.attribute_type_levels = {} + setmetatable(self.attribute_type_levels, + { __index = function() return 0 end }) +% \end{macrocode} +% \par +% \begin{markdown} +% % Define \luamdef{writer->push\_attributes} and % \luamdef{writer->pop\_attributes} as functions that will add a new set % of active block-level attributes or remove the most current attributes @@ -23759,6 +25364,9 @@ function M.writer.new(options) % \begin{macrocode} function self.push_attributes(attribute_type, attributes, start_output, end_output) + local attribute_type_level = self.attribute_type_levels[attribute_type] + self.attribute_type_levels[attribute_type] = attribute_type_level + 1 + -- index attributes in a hash table for easy lookup attributes = attributes or {} for i = 1, #attributes do @@ -23776,7 +25384,6 @@ function M.writer.new(options) end if attributes["#" .. self.slice_begin_identifier] ~= nil and self.slice_begin_type == "^" then - self.is_writing = true table.insert(buf, apply_attributes()) self.is_writing = true end @@ -23812,6 +25419,8 @@ function M.writer.new(options) local attributes, _, end_output current_attribute_type, attributes, _, end_output = table.unpack( self.active_attributes[#self.active_attributes]) + local attribute_type_level = self.attribute_type_levels[current_attribute_type] + self.attribute_type_levels[current_attribute_type] = attribute_type_level - 1 if self.is_writing and end_output ~= nil then table.insert(buf, end_output) end @@ -23833,6 +25442,119 @@ function M.writer.new(options) return buf end % \end{macrocode} +% \begin{markdown} +% +% Create an auto identifier string by stripping and converting characters from string `s`. +% +% \end{markdown} +% \begin{macrocode} +local function create_auto_identifier(s) + local buffer = {} + local prev_space = false + local letter_found = false + + for _, code in utf8.codes(uni_algos.normalize.NFC(s)) do + local char = utf8.char(code) + + -- Remove everything up to the first letter. + if not letter_found then + local is_letter = unicode.utf8.match(char, "%a") + if is_letter then + letter_found = true + else + goto continue + end + end + + -- Remove all non-alphanumeric characters, except underscores, hyphens, and periods. + if not unicode.utf8.match(char, "[%w_%-%.%s]") then + goto continue + end + + -- Replace all spaces and newlines with hyphens. + if unicode.utf8.match(char, "[%s\n]") then + char = "-" + if prev_space then + goto continue + else + prev_space = true + end + else + -- Convert all alphabetic characters to lowercase. + char = unicode.utf8.lower(char) + prev_space = false + end + + table.insert(buffer, char) + + ::continue:: + end + + if prev_space then + table.remove(buffer) + end + + local identifier = #buffer == 0 and "section" or table.concat(buffer, "") + return identifier +end +% \end{macrocode} +% \begin{markdown} +% +% Create an GitHub-flavored auto identifier string by stripping and converting characters from string `s`. +% +% \end{markdown} +% \begin{macrocode} +local function create_gfm_auto_identifier(s) + local buffer = {} + local prev_space = false + local letter_found = false + + for _, code in utf8.codes(uni_algos.normalize.NFC(s)) do + local char = utf8.char(code) + + -- Remove everything up to the first non-space. + if not letter_found then + local is_letter = unicode.utf8.match(char, "%S") + if is_letter then + letter_found = true + else + goto continue + end + end + + -- Remove all non-alphanumeric characters, except underscores and hyphens. + if not unicode.utf8.match(char, "[%w_%-%s]") then + prev_space = false + goto continue + end + + -- Replace all spaces and newlines with hyphens. + if unicode.utf8.match(char, "[%s\n]") then + char = "-" + if prev_space then + goto continue + else + prev_space = true + end + else + -- Convert all alphabetic characters to lowercase. + char = unicode.utf8.lower(char) + prev_space = false + end + + table.insert(buffer, char) + + ::continue:: + end + + if prev_space then + table.remove(buffer) + end + + local identifier = #buffer == 0 and "section" or table.concat(buffer, "") + return identifier +end +% \end{macrocode} % \par % \begin{markdown} % @@ -23842,47 +25564,52 @@ function M.writer.new(options) % % \end{markdown} % \begin{macrocode} - local current_heading_level = 0 function self.heading(s, level, attributes) local buf = {} + local flat_text, inlines = table.unpack(s) -- push empty attributes for implied sections - while current_heading_level < level - 1 do + while self.attribute_type_levels["heading"] < level - 1 do table.insert(buf, self.push_attributes("heading", nil, "\\markdownRendererSectionBegin\n", "\n\\markdownRendererSectionEnd ")) - current_heading_level = current_heading_level + 1 end -- pop attributes for sections that have ended - while current_heading_level >= level do + while self.attribute_type_levels["heading"] >= level do table.insert(buf, self.pop_attributes("heading")) - current_heading_level = current_heading_level - 1 end + -- construct attributes for the new section + local auto_identifiers = {} + if self.options.autoIdentifiers then + table.insert(auto_identifiers, create_auto_identifier(flat_text)) + end + if self.options.gfmAutoIdentifiers then + table.insert(auto_identifiers, create_gfm_auto_identifier(flat_text)) + end + local normalized_attributes = normalize_attributes(attributes, auto_identifiers) + -- push attributes for the new section local start_output = {} local end_output = {} table.insert(start_output, "\\markdownRendererSectionBegin\n") - if options.headerAttributes and attributes ~= nil and #attributes > 0 then - table.insert(start_output, - "\\markdownRendererHeaderAttributeContextBegin\n") - table.insert(start_output, self.attributes(attributes)) - table.insert(end_output, - "\n\\markdownRendererHeaderAttributeContextEnd ") - end table.insert(end_output, "\n\\markdownRendererSectionEnd ") table.insert(buf, self.push_attributes("heading", - attributes, + normalized_attributes, start_output, end_output)) - current_heading_level = current_heading_level + 1 - assert(current_heading_level == level) + assert(self.attribute_type_levels["heading"] == level) + + -- render the heading and its attributes + if self.is_writing and #normalized_attributes > 0 then + table.insert(buf, "\\markdownRendererHeaderAttributeContextBegin\n") + table.insert(buf, self.attributes(normalized_attributes, false)) + end - -- produce the renderer local cmd level = level + options.shiftHeadings if level <= 1 then @@ -23901,7 +25628,11 @@ function M.writer.new(options) cmd = "" end if self.is_writing then - table.insert(buf, {cmd, "{", s, "}"}) + table.insert(buf, {cmd, "{", inlines, "}"}) + end + + if self.is_writing and #normalized_attributes > 0 then + table.insert(buf, "\\markdownRendererHeaderAttributeContextEnd ") end return buf @@ -23919,6 +25650,7 @@ function M.writer.new(options) function self.get_state() return { is_writing=self.is_writing, + flatten_inlines=self.flatten_inlines, active_attributes={table.unpack(self.active_attributes)}, } end @@ -24013,14 +25745,13 @@ parsers.tilde = P("~") parsers.backslash = P("\\") parsers.tab = P("\t") parsers.newline = P("\n") -parsers.tightblocksep = P("\001") parsers.digit = R("09") parsers.hexdigit = R("09","af","AF") parsers.letter = R("AZ","az") parsers.alphanumeric = R("AZ","az","09") parsers.keyword = parsers.letter - * parsers.alphanumeric^0 + * (parsers.alphanumeric + parsers.dash)^0 parsers.internal_punctuation = S(":;,.?") parsers.doubleasterisks = P("**") @@ -24042,8 +25773,7 @@ parsers.nonspacechar = parsers.any - parsers.spacing parsers.optionalspace = parsers.spacechar^0 parsers.normalchar = parsers.any - (V("SpecialChar") - + parsers.spacing - + parsers.tightblocksep) + + parsers.spacing) parsers.eof = -parsers.any parsers.nonindentspace = parsers.space^-3 * - parsers.spacechar parsers.indent = parsers.space^-3 * parsers.tab @@ -24064,6 +25794,767 @@ parsers.spnl = parsers.optionalspace parsers.line = parsers.linechar^0 * parsers.newline parsers.nonemptyline = parsers.line - parsers.blankline % \end{macrocode} +% \par +% \begin{markdown} +% +%#### Parsers Used for Indentation +% +% \end{markdown} +% \begin{macrocode} + +parsers.leader = parsers.space^-3 + +% \end{macrocode} +% \begin{markdown} +% +% Check if a trail exists and is non-empty in the indent table `indent_table`. +% +% \end{markdown} +% \begin{macrocode} +local function has_trail(indent_table) + return indent_table ~= nil and + indent_table.trail ~= nil and + next(indent_table.trail) ~= nil +end + +% \end{macrocode} +% \begin{markdown} +% +% Check if indent table `indent_table` has any indents. +% +% \end{markdown} +% \begin{macrocode} +local function has_indents(indent_table) + return indent_table ~= nil and + indent_table.indents ~= nil and + next(indent_table.indents) ~= nil +end + +% \end{macrocode} +% \begin{markdown} +% +% Add a trail `trail_info` to the indent table `indent_table`. +% +% \end{markdown} +% \begin{macrocode} +local function add_trail(indent_table, trail_info) + indent_table.trail = trail_info + return indent_table +end + +% \end{macrocode} +% \begin{markdown} +% +% Remove a trail `trail_info` from the indent table `indent_table`. +% +% \end{markdown} +% \begin{macrocode} +local function remove_trail(indent_table) + indent_table.trail = nil + return indent_table +end + +% \end{macrocode} +% \begin{markdown} +% +% Update the indent table `indent_table` by adding or removing a new +% indent `add`. +% +% \end{markdown} +% \begin{macrocode} +local function update_indent_table(indent_table, new_indent, add) + indent_table = remove_trail(indent_table) + + if not has_indents(indent_table) then + indent_table.indents = {} + end + + + if add then + indent_table.indents[#indent_table.indents + 1] = new_indent + else + if indent_table.indents[#indent_table.indents].name == new_indent.name then + indent_table.indents[#indent_table.indents] = nil + end + end + + return indent_table +end + +% \end{macrocode} +% \begin{markdown} +% +% Remove an indent by its name `name`. +% +% \end{markdown} +% \begin{macrocode} +local function remove_indent(name) + local function remove_indent_level(s, i, indent_table) -- luacheck: ignore s i + indent_table = update_indent_table(indent_table, {name=name}, false) + return true, indent_table + end + + return Cg(Cmt(Cb("indent_info"), remove_indent_level), "indent_info") +end + +% \end{macrocode} +% \begin{markdown} +% +% Process the spacing of a string of spaces and tabs `spacing` with preceding indent width from +% the start of the line `indent` and strip up to `left_strip_length` spaces. Return the remainder +% `remainder` and whether there is enough spaces to produce a code `is_code`. Return how many +% spaces were stripped, as well as if the minimum was met `is_minimum` and what remainder it +% left `minimum_remainder`. +% +% \end{markdown} +% \begin{macrocode} +local function process_starter_spacing(indent, spacing, minimum, left_strip_length) + left_strip_length = left_strip_length or 0 + + local count = 0 + local tab_value = 4 - (indent) % 4 + + local code_started, minimum_found = false, false + local code_start, minimum_remainder = "", "" + + local left_total_stripped = 0 + local full_remainder = "" + + if spacing ~= nil then + for i = 1, #spacing do + local character = spacing:sub(i, i) + + if character == "\t" then + count = count + tab_value + tab_value = 4 + elseif character == " " then + count = count + 1 + tab_value = 4 - (1 - tab_value) % 4 + end + + if (left_strip_length ~= 0) then + local possible_to_strip = math.min(count, left_strip_length) + count = count - possible_to_strip + left_strip_length = left_strip_length - possible_to_strip + left_total_stripped = left_total_stripped + possible_to_strip + else + full_remainder = full_remainder .. character + end + + if (minimum_found) then + minimum_remainder = minimum_remainder .. character + elseif (count >= minimum) then + minimum_found = true + minimum_remainder = minimum_remainder .. string.rep(" ", count - minimum) + end + + if (code_started) then + code_start = code_start .. character + elseif (count >= minimum + 4) then + code_started = true + code_start = code_start .. string.rep(" ", count - (minimum + 4)) + end + end + end + + local remainder + if (code_started) then + remainder = code_start + else + remainder = string.rep(" ", count - minimum) + end + + local is_minimum = count >= minimum + return { + is_code = code_started, + remainder = remainder, + left_total_stripped = left_total_stripped, + is_minimum = is_minimum, + minimum_remainder = minimum_remainder, + total_length = count, + full_remainder = full_remainder + } +end + +% \end{macrocode} +% \begin{markdown} +% +% Count the total width of all indents in the indent table `indent_table`. +% +% \end{markdown} +% \begin{macrocode} +local function count_indent_tab_level(indent_table) + local count = 0 + if not has_indents(indent_table) then + return count + end + + for i=1, #indent_table.indents do + count = count + indent_table.indents[i].length + end + return count +end + +% \end{macrocode} +% \begin{markdown} +% +% Count the total width of a delimiter `delimiter`. +% +% \end{markdown} +% \begin{macrocode} +local function total_delimiter_length(delimiter) + local count = 0 + if type(delimiter) == "string" then return #delimiter end + for _, value in pairs(delimiter) do + count = count + total_delimiter_length(value) + end + return count +end + +% \end{macrocode} +% \begin{markdown} +% +% Process the container starter `starter` of a type `indent_type`. Adjust the width of the indent +% if the delimiter is followed only by whitespaces `is_blank`. +% +% \end{markdown} +% \begin{macrocode} +local function process_starter_indent(_, _, indent_table, starter, is_blank, indent_type, breakable) + local last_trail = starter[1] + local delimiter = starter[2] + local raw_new_trail = starter[3] + + if indent_type == "bq" and not breakable then + indent_table.ignore_blockquote_blank = true + end + + if has_trail(indent_table) then + local trail = indent_table.trail + if trail.is_code then + return false + end + last_trail = trail.remainder + else + local sp = process_starter_spacing(0, last_trail, 0, 0) + + if sp.is_code then + return false + end + last_trail = sp.remainder + end + + local preceding_indentation = count_indent_tab_level(indent_table) % 4 + local last_trail_length = #last_trail + local delimiter_length = total_delimiter_length(delimiter) + + local total_indent_level = preceding_indentation + last_trail_length + delimiter_length + + local sp = {} + if not is_blank then + sp = process_starter_spacing(total_indent_level, raw_new_trail, 0, 1) + end + + local del_trail_length = sp.left_total_stripped + if is_blank then + del_trail_length = 1 + elseif not sp.is_code then + del_trail_length = del_trail_length + #sp.remainder + end + + local indent_length = last_trail_length + delimiter_length + del_trail_length + local new_indent_info = {name=indent_type, length=indent_length} + + indent_table = update_indent_table(indent_table, new_indent_info, true) + indent_table = add_trail(indent_table, {is_code=sp.is_code, remainder=sp.remainder, total_length=sp.total_length, + full_remainder=sp.full_remainder}) + + return true, indent_table +end + +% \end{macrocode} +% \begin{markdown} +% +% Return the pattern corresponding with the indent name `name`. +% +% \end{markdown} +% \begin{macrocode} +local function decode_pattern(name) + local delimeter = parsers.succeed + if name == "bq" then + delimeter = parsers.more + end + + return C(parsers.optionalspace) * C(delimeter) * C(parsers.optionalspace) * Cp() +end + +% \end{macrocode} +% \begin{markdown} +% +% Find the first blank-only indent of the indent table `indent_table` followed +% by blank-only indents. +% +% \end{markdown} +% \begin{macrocode} +local function left_blank_starter(indent_table) + local blank_starter_index + + if not has_indents(indent_table) then + return + end + + for i = #indent_table.indents,1,-1 do + local value = indent_table.indents[i] + if value.name == "li" then + blank_starter_index = i + else + break + end + end + + return blank_starter_index +end + +% \end{macrocode} +% \begin{markdown} +% +% Apply the patterns decoded from the indents of the indent table `indent_table` +% iteratively starting at position `index` of the string `s`. If the `is_optional` +% mode is selected, match as many patterns as possible, else match all or fail. +% With the option `is_blank`, the parsing behaves as optional after the position +% of a blank-only indent has been surpassed. +% +% \end{markdown} +% \begin{macrocode} +local function traverse_indent(s, i, indent_table, is_optional, is_blank) + local new_index = i + + local preceding_indentation = 0 + local current_trail = {} + + local blank_starter = left_blank_starter(indent_table) + + for index = 1,#indent_table.indents do + local value = indent_table.indents[index] + local pattern = decode_pattern(value.name) + + -- match decoded pattern + local new_indent_info = lpeg.match(Ct(pattern), s, new_index) + if new_indent_info == nil then + local blankline_end = lpeg.match(Ct(parsers.blankline * Cg(Cp(), "pos")), s, new_index) + if is_optional or not indent_table.ignore_blockquote_blank or not blankline_end then + return is_optional, new_index, current_trail + end + + return traverse_indent(s, tonumber(blankline_end.pos), indent_table, is_optional, is_blank) + end + + local raw_last_trail = new_indent_info[1] + local delimiter = new_indent_info[2] + local raw_new_trail = new_indent_info[3] + local next_index = new_indent_info[4] + + local space_only = delimiter == "" + + -- check previous trail + if not space_only and next(current_trail) == nil then + local sp = process_starter_spacing(0, raw_last_trail, 0, 0) + current_trail = {is_code=sp.is_code, remainder=sp.remainder, total_length=sp.total_length, + full_remainder=sp.full_remainder} + end + + if next(current_trail) ~= nil then + if not space_only and current_trail.is_code then + return is_optional, new_index, current_trail + end + if current_trail.internal_remainder ~= nil then + raw_last_trail = current_trail.internal_remainder + end + end + + local raw_last_trail_length = 0 + local delimiter_length = 0 + + if not space_only then + delimiter_length = #delimiter + raw_last_trail_length = #raw_last_trail + end + + local total_indent_level = preceding_indentation + raw_last_trail_length + delimiter_length + + local spacing_to_process + local minimum = 0 + local left_strip_length = 0 + + if not space_only then + spacing_to_process = raw_new_trail + left_strip_length = 1 + else + spacing_to_process = raw_last_trail + minimum = value.length + end + + local sp = process_starter_spacing(total_indent_level, spacing_to_process, minimum, left_strip_length) + + if space_only and not sp.is_minimum then + return is_optional or (is_blank and blank_starter <= index), new_index, current_trail + end + + local indent_length = raw_last_trail_length + delimiter_length + sp.left_total_stripped + + -- update info for the next pattern + if not space_only then + preceding_indentation = preceding_indentation + indent_length + else + preceding_indentation = preceding_indentation + value.length + end + + current_trail = {is_code=sp.is_code, remainder=sp.remainder, internal_remainder=sp.minimum_remainder, + total_length=sp.total_length, full_remainder=sp.full_remainder} + new_index = next_index + end + + return true, new_index, current_trail +end + +% \end{macrocode} +% \begin{markdown} +% +% Check if a code trail is expected. +% +% \end{markdown} +% \begin{macrocode} +local function check_trail(expect_code, is_code) + return (expect_code and is_code) or (not expect_code and not is_code) +end + +% \end{macrocode} +% \begin{markdown} +% +% Check if the current trail of the `indent_table` would produce code if it is expected `expect_code` +% or it would not if it is not. If there is no trail, process and check the current spacing `spacing`. +% +% \end{markdown} +% \begin{macrocode} +local function check_trail_joined(s, i, indent_table, spacing, expect_code, omit_remainder) -- luacheck: ignore s i + local is_code + local remainder + + if has_trail(indent_table) then + local trail = indent_table.trail + is_code = trail.is_code + if is_code then + remainder = trail.remainder + else + remainder = trail.full_remainder + end + else + local sp = process_starter_spacing(0, spacing, 0, 0) + is_code = sp.is_code + if is_code then + remainder = sp.remainder + else + remainder = sp.full_remainder + end + end + + local result = check_trail(expect_code, is_code) + if omit_remainder then + return result + end + return result, remainder +end + +% \end{macrocode} +% \begin{markdown} +% +% Check if the current trail of the `indent_table` is of length between `min` and `max`. +% +% \end{markdown} +% \begin{macrocode} +local function check_trail_length(s, i, indent_table, spacing, min, max) -- luacheck: ignore s i + local trail + + if has_trail(indent_table) then + trail = indent_table.trail + else + trail = process_starter_spacing(0, spacing, 0, 0) + end + + local total_length = trail.total_length + if total_length == nil then + return false + end + + return min <= total_length and total_length <= max +end + +% \end{macrocode} +% \begin{markdown} +% +% Check the indentation of the continuation line, optionally with +% the mode `is_optional` selected. Check blank line exclusively with `is_blank`. +% +% \end{markdown} +% \begin{macrocode} +local function check_continuation_indentation(s, i, indent_table, is_optional, is_blank) + if not has_indents(indent_table) then + return true + end + + local passes, new_index, current_trail = traverse_indent(s, i, indent_table, is_optional, is_blank) + + if passes then + indent_table = add_trail(indent_table, current_trail) + return new_index, indent_table + end + return false +end + +% \end{macrocode} +% \begin{markdown} +% +% Get name of the last indent from the `indent_table`. +% +% \end{markdown} +% \begin{macrocode} +local function get_last_indent_name(indent_table) + if has_indents(indent_table) then + return indent_table.indents[#indent_table.indents].name + end +end + +% \end{macrocode} +% \begin{markdown} +% +% Remove the remainder altogether if the last indent from the `indent_table` +% is blank-only. +% +% \end{markdown} +% \begin{macrocode} +local function remove_remainder_if_blank(indent_table, remainder) + if get_last_indent_name(indent_table) == "li" then + return "" + end + return remainder +end + +% \end{macrocode} +% \begin{markdown} +% +% Take the trail `trail` or create a new one from `spacing` and comapre it +% with the expected `trail_type`. On success return the index `i` and the +% remainder of the trail. +% +% \end{markdown} +% \begin{macrocode} +local function check_trail_type(s, i, trail, spacing, trail_type) -- luacheck: ignore s i + if trail == nil then + trail = process_starter_spacing(0, spacing, 0, 0) + end + + if trail_type == "non-code" then + return check_trail(false, trail.is_code) + end + if trail_type == "code" then + return check_trail(true, trail.is_code) + end + if trail_type == "full-code" then + if (trail.is_code) then + return i, trail.remainder + end + return i, "" + end + if trail_type == "full-any" then + return i, trail.internal_remainder + end +end + +% \end{macrocode} +% \begin{markdown} +% +% Stores or restores an `is_freezing` trail from indent table `indent_table`. +% +% \end{markdown} +% \begin{macrocode} +local function trail_freezing(s, i, indent_table, is_freezing) -- luacheck: ignore s i + if is_freezing then + if indent_table.is_trail_frozen then + indent_table.trail = indent_table.frozen_trail + else + indent_table.frozen_trail = indent_table.trail + indent_table.is_trail_frozen = true + end + else + indent_table.frozen_trail = nil + indent_table.is_trail_frozen = false + end + return true, indent_table +end + +% \end{macrocode} +% \begin{markdown} +% +% Check the indentation of the continuation line, optionally with +% the mode `is_optional` selected. Check blank line specifically with `is_blank`. +% Additionally, also directly check the new trail with a type `trail_type`. +% +% \end{markdown} +% \begin{macrocode} +local function check_continuation_indentation_and_trail(s, i, indent_table, is_optional, is_blank, trail_type, + reset_rem, omit_remainder) + if not has_indents(indent_table) then + local spacing, new_index = lpeg.match(C(parsers.spacechar^0) * Cp(), s, i) + local result, remainder = check_trail_type(s, i, indent_table.trail, spacing, trail_type) + if remainder == nil then + if result then + return new_index + end + return false + end + if result then + return new_index, remainder + end + return false + end + + local passes, new_index, current_trail = traverse_indent(s, i, indent_table, is_optional, is_blank) + + if passes then + local spacing + if current_trail == nil then + local newer_spacing, newer_index = lpeg.match(C(parsers.spacechar^0) * Cp(), s, i) + current_trail = process_starter_spacing(0, newer_spacing, 0, 0) + new_index = newer_index + spacing = newer_spacing + else + spacing = current_trail.remainder + end + local result, remainder = check_trail_type(s, new_index, current_trail, spacing, trail_type) + if remainder == nil or omit_remainder then + if result then + return new_index + end + return false + end + + if is_blank and reset_rem then + remainder = remove_remainder_if_blank(indent_table, remainder) + end + if result then + return new_index, remainder + end + return false + end + return false +end + +% \end{macrocode} +% \begin{markdown} +% +% The following patterns check whitespace indentation at the start of a block. +% +% \end{markdown} +% \begin{macrocode} +parsers.check_trail = Cmt(Cb("indent_info") * C(parsers.spacechar^0) * Cc(false), check_trail_joined) + +parsers.check_trail_no_rem = Cmt(Cb("indent_info") * C(parsers.spacechar^0) * Cc(false) * Cc(true), check_trail_joined) + +parsers.check_code_trail = Cmt(Cb("indent_info") * C(parsers.spacechar^0) * Cc(true), check_trail_joined) + +parsers.check_trail_length_range = function(min, max) + return Cmt(Cb("indent_info") * C(parsers.spacechar^0) * Cc(min) * Cc(max), check_trail_length) +end + +parsers.check_trail_length = function(n) + return parsers.check_trail_length_range(n, n) +end + +% \end{macrocode} +% \begin{markdown} +% +% The following patterns handle trail backup, to prevent a failing pattern to modify it before +% passing it to the next. +% +% \end{markdown} +% \begin{macrocode} +parsers.freeze_trail = Cg(Cmt(Cb("indent_info") * Cc(true), trail_freezing), "indent_info") + +parsers.unfreeze_trail = Cg(Cmt(Cb("indent_info") * Cc(false), trail_freezing), "indent_info") + +% \end{macrocode} +% \begin{markdown} +% +% The following patterns check indentation in continuation lines as defined by the container start. +% +% \end{markdown} +% \begin{macrocode} +parsers.check_minimal_indent = Cmt(Cb("indent_info") * Cc(false), check_continuation_indentation) + +parsers.check_optional_indent = Cmt(Cb("indent_info") * Cc(true), check_continuation_indentation) + +parsers.check_minimal_blank_indent = Cmt(Cb("indent_info") * Cc(false) * Cc(true), check_continuation_indentation) + +% \end{macrocode} +% \begin{markdown} +% +% The following patterns check indentation in continuation lines as defined by the container start. +% Additionally the subsequent trail is also directly checked. +% +% \end{markdown} +% \begin{macrocode} + +parsers.check_minimal_indent_and_trail = Cmt( Cb("indent_info") + * Cc(false) * Cc(false) * Cc("non-code") * Cc(true), + check_continuation_indentation_and_trail) + +parsers.check_minimal_indent_and_code_trail = Cmt( Cb("indent_info") + * Cc(false) * Cc(false) * Cc("code") * Cc(false), + check_continuation_indentation_and_trail) + +parsers.check_minimal_blank_indent_and_full_code_trail = Cmt( Cb("indent_info") + * Cc(false) * Cc(true) * Cc("full-code") * Cc(true), + check_continuation_indentation_and_trail) + +parsers.check_minimal_indent_and_any_trail = Cmt( Cb("indent_info") + * Cc(false) * Cc(false) * Cc("full-any") * Cc(true) * Cc(false), + check_continuation_indentation_and_trail) + +parsers.check_minimal_blank_indent_and_any_trail = Cmt( Cb("indent_info") + * Cc(false) * Cc(true) * Cc("full-any") * Cc(true) * Cc(false), + check_continuation_indentation_and_trail) + +parsers.check_minimal_blank_indent_and_any_trail_no_rem = Cmt( Cb("indent_info") + * Cc(false) * Cc(true) * Cc("full-any") * Cc(true) * Cc(true), + check_continuation_indentation_and_trail) + +parsers.check_optional_indent_and_any_trail = Cmt( Cb("indent_info") + * Cc(true) * Cc(false) * Cc("full-any") * Cc(true) * Cc(false), + check_continuation_indentation_and_trail) + +parsers.check_optional_blank_indent_and_any_trail = Cmt( Cb("indent_info") + * Cc(true) * Cc(true) * Cc("full-any") * Cc(true) * Cc(false), + check_continuation_indentation_and_trail) + +% \end{macrocode} +% \begin{markdown} +% +% The following patterns specify behaviour around newlines. +% +% \end{markdown} +% \begin{macrocode} + +parsers.spnlc_noexc = parsers.optionalspace + * (parsers.newline * parsers.check_minimal_indent_and_any_trail)^-1 + +parsers.spnlc = parsers.optionalspace + * (V("EndlineNoSub"))^-1 + +parsers.spnlc_sep = parsers.optionalspace * V("EndlineNoSub") + + parsers.spacechar^1 + +parsers.only_blank = parsers.spacechar^0 * (parsers.newline + parsers.eof) + +% \end{macrocode} % \begin{figure} % \hspace*{-0.1\textwidth} % \begin{minipage}{1.2\textwidth} @@ -24150,6 +26641,7 @@ parsers.chunk = parsers.line * (parsers.optionallyindentedline - parsers.blankline)^0 parsers.attribute_key_char = parsers.alphanumeric + S("-_:.") +parsers.attribute_raw_char = parsers.alphanumeric + S("-_") parsers.attribute_key = (parsers.attribute_key_char - parsers.dash - parsers.digit) * parsers.attribute_key_char^0 @@ -24161,10 +26653,16 @@ parsers.attribute_value = ( (parsers.dquote / "") * (parsers.squote / "")) + ( parsers.anyescaped - parsers.dquote - parsers.rbrace - parsers.space)^0 +parsers.attribute_identifier = parsers.attribute_key_char^1 +parsers.attribute_classname = parsers.letter + * parsers.attribute_key_char^0 +parsers.attribute_raw = parsers.attribute_raw_char^1 parsers.attribute = (parsers.dash * Cc(".unnumbered")) - + C((parsers.hash + parsers.period) - * parsers.attribute_key) + + C( parsers.hash + * parsers.attribute_identifier) + + C( parsers.period + * parsers.attribute_classname) + Cs( parsers.attribute_key * parsers.optionalspace * parsers.equal * parsers.optionalspace * parsers.attribute_value) @@ -24180,7 +26678,7 @@ parsers.attributes = parsers.lbrace parsers.raw_attribute = parsers.lbrace * parsers.optionalspace * parsers.equal - * C(parsers.attribute_key) + * C(parsers.attribute_raw) * parsers.optionalspace * parsers.rbrace @@ -24195,22 +26693,43 @@ end % \par % \begin{markdown} % -%#### Parsers Used for Markdown Lists +%#### Parsers Used for HTML Entities % % \end{markdown} % \begin{macrocode} -parsers.bulletchar = C(parsers.plus + parsers.asterisk + parsers.dash) +local function repeat_between(pattern, min, max) + return -pattern^(max + 1) * pattern^min +end -parsers.bullet = ( parsers.bulletchar * #parsers.spacing - * (parsers.tab + parsers.space^-3) - + parsers.space * parsers.bulletchar * #parsers.spacing - * (parsers.tab + parsers.space^-2) - + parsers.space * parsers.space * parsers.bulletchar - * #parsers.spacing - * (parsers.tab + parsers.space^-1) - + parsers.space * parsers.space * parsers.space - * parsers.bulletchar * #parsers.spacing - ) +parsers.hexentity = parsers.ampersand * parsers.hash * C(S("Xx")) + * C(repeat_between(parsers.hexdigit, 1, 6)) * parsers.semicolon +parsers.decentity = parsers.ampersand * parsers.hash + * C(repeat_between(parsers.digit, 1, 7)) * parsers.semicolon +parsers.tagentity = parsers.ampersand * C(parsers.alphanumeric^1) + * parsers.semicolon + +parsers.html_entities = parsers.hexentity / entities.hex_entity_with_x_char + + parsers.decentity / entities.dec_entity + + parsers.tagentity / entities.char_entity +% \end{macrocode} +% \par +% \begin{markdown} +% +%#### Parsers Used for Markdown Lists +% +% \end{markdown} +% \begin{macrocode} +parsers.bullet = function(bullet_char, interrupting) + local allowed_end + if interrupting then + allowed_end = C(parsers.spacechar^1) * #parsers.linechar + else + allowed_end = C(parsers.spacechar^1) + #(parsers.newline + parsers.eof) + end + return parsers.check_trail + * Ct(C(bullet_char) * Cc("")) + * allowed_end +end local function tickbox(interior) return parsers.optionalspace * parsers.lbracket @@ -24235,17 +26754,399 @@ local function captures_equal_length(_,i,a,b) return #a == #b and i end -parsers.closeticks = parsers.space^-1 - * Cmt(C(parsers.backtick^1) - * Cb("ticks"), captures_equal_length) +parsers.closeticks = Cmt(C(parsers.backtick^1) + * Cb("ticks"), captures_equal_length) -parsers.intickschar = (parsers.any - S(" \n\r`")) - + (parsers.newline * -parsers.blankline) - + (parsers.space - parsers.closeticks) +parsers.intickschar = (parsers.any - S("\n\r`")) + + V("NoSoftLineBreakEndline") + (parsers.backtick^1 - parsers.closeticks) -parsers.inticks = parsers.openticks * parsers.space^-1 - * C(parsers.intickschar^0) * parsers.closeticks +local function process_inticks(s) + s = s:gsub("\n", " ") + s = s:gsub("^ (.*) $", "%1") + return s +end + +parsers.inticks = parsers.openticks + * C(parsers.space^0) + * parsers.closeticks + + parsers.openticks + * Cs(Cs(parsers.intickschar^0) / process_inticks) + * parsers.closeticks + +% \end{macrocode} +% \par +% \begin{markdown} +% +%#### Parsers Used for HTML +% +% \end{markdown} +% \begin{macrocode} +-- case-insensitive match (we assume s is lowercase). must be single byte encoding +parsers.keyword_exact = function(s) + local parser = P(0) + for i=1,#s do + local c = s:sub(i,i) + local m = c .. upper(c) + parser = parser * S(m) + end + return parser +end + +parsers.special_block_keyword = + parsers.keyword_exact("pre") + + parsers.keyword_exact("script") + + parsers.keyword_exact("style") + + parsers.keyword_exact("textarea") + +parsers.block_keyword = + parsers.keyword_exact("address") + + parsers.keyword_exact("article") + + parsers.keyword_exact("aside") + + parsers.keyword_exact("base") + + parsers.keyword_exact("basefont") + + parsers.keyword_exact("blockquote") + + parsers.keyword_exact("body") + + parsers.keyword_exact("caption") + + parsers.keyword_exact("center") + + parsers.keyword_exact("col") + + parsers.keyword_exact("colgroup") + + parsers.keyword_exact("dd") + + parsers.keyword_exact("details") + + parsers.keyword_exact("dialog") + + parsers.keyword_exact("dir") + + parsers.keyword_exact("div") + + parsers.keyword_exact("dl") + + parsers.keyword_exact("dt") + + parsers.keyword_exact("fieldset") + + parsers.keyword_exact("figcaption") + + parsers.keyword_exact("figure") + + parsers.keyword_exact("footer") + + parsers.keyword_exact("form") + + parsers.keyword_exact("frame") + + parsers.keyword_exact("frameset") + + parsers.keyword_exact("h1") + + parsers.keyword_exact("h2") + + parsers.keyword_exact("h3") + + parsers.keyword_exact("h4") + + parsers.keyword_exact("h5") + + parsers.keyword_exact("h6") + + parsers.keyword_exact("head") + + parsers.keyword_exact("header") + + parsers.keyword_exact("hr") + + parsers.keyword_exact("html") + + parsers.keyword_exact("iframe") + + parsers.keyword_exact("legend") + + parsers.keyword_exact("li") + + parsers.keyword_exact("link") + + parsers.keyword_exact("main") + + parsers.keyword_exact("menu") + + parsers.keyword_exact("menuitem") + + parsers.keyword_exact("nav") + + parsers.keyword_exact("noframes") + + parsers.keyword_exact("ol") + + parsers.keyword_exact("optgroup") + + parsers.keyword_exact("option") + + parsers.keyword_exact("p") + + parsers.keyword_exact("param") + + parsers.keyword_exact("section") + + parsers.keyword_exact("source") + + parsers.keyword_exact("summary") + + parsers.keyword_exact("table") + + parsers.keyword_exact("tbody") + + parsers.keyword_exact("td") + + parsers.keyword_exact("tfoot") + + parsers.keyword_exact("th") + + parsers.keyword_exact("thead") + + parsers.keyword_exact("title") + + parsers.keyword_exact("tr") + + parsers.keyword_exact("track") + + parsers.keyword_exact("ul") + +-- end conditions +parsers.html_blankline_end_condition = parsers.linechar^0 + * ( parsers.newline + * (parsers.check_minimal_blank_indent_and_any_trail + * #parsers.blankline + + parsers.check_minimal_indent_and_any_trail) + * parsers.linechar^1)^0 + * (parsers.newline^-1 / "") + +local function remove_trailing_blank_lines(s) + return s:gsub("[\n\r]+%s*$", "") +end + +parsers.html_until_end = function(end_marker) + return Cs(Cs((parsers.newline + * (parsers.check_minimal_blank_indent_and_any_trail + * #parsers.blankline + + parsers.check_minimal_indent_and_any_trail) + + parsers.linechar - end_marker)^0 + * parsers.linechar^0 * parsers.newline^-1) + / remove_trailing_blank_lines) +end + +-- attributes +parsers.html_attribute_spacing = parsers.optionalspace + * V("NoSoftLineBreakEndline") + * parsers.optionalspace + + parsers.spacechar^1 + +parsers.html_attribute_name = (parsers.letter + parsers.colon + parsers.underscore) + * (parsers.alphanumeric + parsers.colon + parsers.underscore + + parsers.period + parsers.dash)^0 + +parsers.html_attribute_value = parsers.squote + * (parsers.linechar - parsers.squote)^0 + * parsers.squote + + parsers.dquote + * (parsers.linechar - parsers.dquote)^0 + * parsers.dquote + + ( parsers.any - parsers.spacechar - parsers.newline + - parsers.dquote - parsers.squote - parsers.backtick + - parsers.equal - parsers.less - parsers.more)^1 + +parsers.html_inline_attribute_value = parsers.squote + * (V("NoSoftLineBreakEndline") + + parsers.any + - parsers.blankline^2 + - parsers.squote)^0 + * parsers.squote + + parsers.dquote + * (V("NoSoftLineBreakEndline") + + parsers.any + - parsers.blankline^2 + - parsers.dquote)^0 + * parsers.dquote + + (parsers.any - parsers.spacechar - parsers.newline + - parsers.dquote - parsers.squote - parsers.backtick + - parsers.equal - parsers.less - parsers.more)^1 + +parsers.html_attribute_value_specification = parsers.optionalspace + * parsers.equal + * parsers.optionalspace + * parsers.html_attribute_value + +parsers.html_spnl = parsers.optionalspace + * (V("NoSoftLineBreakEndline") * parsers.optionalspace)^-1 + +parsers.html_inline_attribute_value_specification = parsers.html_spnl + * parsers.equal + * parsers.html_spnl + * parsers.html_inline_attribute_value + +parsers.html_attribute = parsers.html_attribute_spacing + * parsers.html_attribute_name + * parsers.html_inline_attribute_value_specification^-1 + +parsers.html_non_newline_attribute = parsers.spacechar^1 + * parsers.html_attribute_name + * parsers.html_attribute_value_specification^-1 + +parsers.nested_breaking_blank = parsers.newline + * parsers.check_minimal_blank_indent + * parsers.blankline + +parsers.html_comment_start = P("<!--") + +parsers.html_comment_end = P("-->") + +parsers.html_comment = Cs( parsers.html_comment_start + * parsers.html_until_end(parsers.html_comment_end)) + +parsers.html_inline_comment = (parsers.html_comment_start / "") + * -P(">") * -P("->") + * Cs((V("NoSoftLineBreakEndline") + parsers.any - P("--") + - parsers.nested_breaking_blank - parsers.html_comment_end)^0) + * (parsers.html_comment_end / "") + +parsers.html_cdatasection_start = P("<![CDATA[") + +parsers.html_cdatasection_end = P("]]>") + +parsers.html_cdatasection = Cs( parsers.html_cdatasection_start + * parsers.html_until_end(parsers.html_cdatasection_end)) + +parsers.html_inline_cdatasection = parsers.html_cdatasection_start + * Cs(V("NoSoftLineBreakEndline") + parsers.any + - parsers.nested_breaking_blank - parsers.html_cdatasection_end)^0 + * parsers.html_cdatasection_end + +parsers.html_declaration_start = P("<!") * parsers.letter + +parsers.html_declaration_end = P(">") + +parsers.html_declaration = Cs( parsers.html_declaration_start + * parsers.html_until_end(parsers.html_declaration_end)) + +parsers.html_inline_declaration = parsers.html_declaration_start + * Cs(V("NoSoftLineBreakEndline") + parsers.any + - parsers.nested_breaking_blank - parsers.html_declaration_end)^0 + * parsers.html_declaration_end + +parsers.html_instruction_start = P("<?") + +parsers.html_instruction_end = P("?>") + +parsers.html_instruction = Cs( parsers.html_instruction_start + * parsers.html_until_end(parsers.html_instruction_end)) + +parsers.html_inline_instruction = parsers.html_instruction_start + * Cs(V("NoSoftLineBreakEndline") + parsers.any + - parsers.nested_breaking_blank - parsers.html_instruction_end)^0 + * parsers.html_instruction_end + +parsers.html_blankline = parsers.newline + * parsers.optionalspace + * parsers.newline + +parsers.html_tag_start = parsers.less + +parsers.html_tag_closing_start = parsers.less + * parsers.slash + +parsers.html_tag_end = parsers.html_spnl + * parsers.more + +parsers.html_empty_tag_end = parsers.html_spnl + * parsers.slash + * parsers.more + +-- opening tags +parsers.html_any_open_inline_tag = parsers.html_tag_start + * parsers.keyword + * parsers.html_attribute^0 + * parsers.html_tag_end + +parsers.html_any_open_tag = parsers.html_tag_start + * parsers.keyword + * parsers.html_non_newline_attribute^0 + * parsers.html_tag_end + +parsers.html_open_tag = parsers.html_tag_start + * parsers.block_keyword + * parsers.html_attribute^0 + * parsers.html_tag_end + +parsers.html_open_special_tag = parsers.html_tag_start + * parsers.special_block_keyword + * parsers.html_attribute^0 + * parsers.html_tag_end + +-- incomplete tags +parsers.incomplete_tag_following = parsers.spacechar + + parsers.more + + parsers.slash * parsers.more + + #(parsers.newline + parsers.eof) + +parsers.incomplete_special_tag_following = parsers.spacechar + + parsers.more + + #(parsers.newline + parsers.eof) + +parsers.html_incomplete_open_tag = parsers.html_tag_start + * parsers.block_keyword + * parsers.incomplete_tag_following + +parsers.html_incomplete_open_special_tag = parsers.html_tag_start + * parsers.special_block_keyword + * parsers.incomplete_special_tag_following + +parsers.html_incomplete_close_tag = parsers.html_tag_closing_start + * parsers.block_keyword + * parsers.incomplete_tag_following + +parsers.html_incomplete_close_special_tag = parsers.html_tag_closing_start + * parsers.special_block_keyword + * parsers.incomplete_tag_following + +-- closing tags +parsers.html_close_tag = parsers.html_tag_closing_start + * parsers.block_keyword + * parsers.html_tag_end + +parsers.html_any_close_tag = parsers.html_tag_closing_start + * parsers.keyword + * parsers.html_tag_end + +parsers.html_close_special_tag = parsers.html_tag_closing_start + * parsers.special_block_keyword + * parsers.html_tag_end + +-- empty tags +parsers.html_any_empty_inline_tag = parsers.html_tag_start + * parsers.keyword + * parsers.html_attribute^0 + * parsers.html_empty_tag_end + +parsers.html_any_empty_tag = parsers.html_tag_start + * parsers.keyword + * parsers.html_non_newline_attribute^0 + * parsers.optionalspace + * parsers.slash + * parsers.more + +parsers.html_empty_tag = parsers.html_tag_start + * parsers.block_keyword + * parsers.html_attribute^0 + * parsers.html_empty_tag_end + +parsers.html_empty_special_tag = parsers.html_tag_start + * parsers.special_block_keyword + * parsers.html_attribute^0 + * parsers.html_empty_tag_end + +parsers.html_incomplete_blocks = parsers.html_incomplete_open_tag + + parsers.html_incomplete_open_special_tag + + parsers.html_incomplete_close_tag + +-- parse special html blocks +parsers.html_blankline_ending_special_block_opening = (parsers.html_close_special_tag + + parsers.html_empty_special_tag) + * #(parsers.optionalspace + * (parsers.newline + parsers.eof)) + +parsers.html_blankline_ending_special_block = parsers.html_blankline_ending_special_block_opening + * parsers.html_blankline_end_condition + +parsers.html_special_block_opening = parsers.html_incomplete_open_special_tag + - parsers.html_empty_special_tag + +parsers.html_closing_special_block = parsers.html_special_block_opening + * parsers.html_until_end(parsers.html_close_special_tag) + +parsers.html_special_block = parsers.html_blankline_ending_special_block + + parsers.html_closing_special_block + +-- parse html blocks +parsers.html_block_opening = parsers.html_incomplete_open_tag + + parsers.html_incomplete_close_tag + +parsers.html_block = parsers.html_block_opening + * parsers.html_blankline_end_condition + +-- parse any html blocks +parsers.html_any_block_opening = (parsers.html_any_open_tag + + parsers.html_any_close_tag + + parsers.html_any_empty_tag) + * #(parsers.optionalspace * (parsers.newline + parsers.eof)) + +parsers.html_any_block = parsers.html_any_block_opening + * parsers.html_blankline_end_condition + +parsers.html_inline_comment_full = parsers.html_comment_start + * -P(">") * -P("->") + * Cs((V("NoSoftLineBreakEndline") + parsers.any - P("--") + - parsers.nested_breaking_blank - parsers.html_comment_end)^0) + * parsers.html_comment_end + +parsers.html_inline_tags = parsers.html_inline_comment_full + + parsers.html_any_empty_inline_tag + + parsers.html_inline_instruction + + parsers.html_inline_cdatasection + + parsers.html_inline_declaration + + parsers.html_any_open_inline_tag + + parsers.html_any_close_tag + % \end{macrocode} % \par % \begin{markdown} @@ -24254,7 +27155,54 @@ parsers.inticks = parsers.openticks * parsers.space^-1 % % \end{markdown} % \begin{macrocode} -parsers.leader = parsers.space^-3 +parsers.urlchar = parsers.anyescaped + - parsers.newline + - parsers.more + +parsers.auto_link_scheme_part = parsers.alphanumeric + + parsers.plus + + parsers.period + + parsers.dash + +parsers.auto_link_scheme = parsers.letter + * parsers.auto_link_scheme_part + * parsers.auto_link_scheme_part^-30 + +parsers.absolute_uri = parsers.auto_link_scheme * parsers.colon + * (parsers.any - parsers.spacing - parsers.less - parsers.more)^0 + +parsers.printable_characters = S(".!#$%&'*+/=?^_`{|}~-") + +parsers.email_address_local_part_char = parsers.alphanumeric + + parsers.printable_characters + +parsers.email_address_local_part = parsers.email_address_local_part_char^1 + +parsers.email_address_dns_label = parsers.alphanumeric + * (parsers.alphanumeric + parsers.dash)^-62 + * B(parsers.alphanumeric) + +parsers.email_address_domain = parsers.email_address_dns_label + * (parsers.period * parsers.email_address_dns_label)^0 + +parsers.email_address = parsers.email_address_local_part + * parsers.at + * parsers.email_address_domain + +parsers.auto_link_url = parsers.less + * C(parsers.absolute_uri) + * parsers.more + +parsers.auto_link_email = parsers.less + * C(parsers.email_address) + * parsers.more + +parsers.auto_link_relative_reference = parsers.less + * C(parsers.urlchar^1) + * parsers.more + +parsers.autolink = parsers.auto_link_url + + parsers.auto_link_email -- content in balanced brackets, parentheses, or quotes: parsers.bracketed = P{ parsers.lbracket @@ -24284,183 +27232,96 @@ parsers.dquoted = P{ parsers.dquote * parsers.alphanumeric ) + V(1))^0 * parsers.dquote } --- bracketed tag for markdown links, allowing nested brackets: -parsers.tag = parsers.lbracket +parsers.link_text = parsers.lbracket * Cs((parsers.alphanumeric^1 - + parsers.bracketed - + parsers.inticks - + ( parsers.backslash / "" * parsers.rbracket - + parsers.any - - (parsers.rbracket + parsers.blankline^2)))^0) + + parsers.bracketed + + parsers.inticks + + parsers.autolink + + V("InlineHtml") + + ( parsers.backslash * parsers.backslash) + + ( parsers.backslash * (parsers.lbracket + parsers.rbracket) + + V("NoSoftLineBreakSpace") + + V("NoSoftLineBreakEndline") + + (parsers.any + - (parsers.newline + parsers.lbracket + parsers.rbracket + parsers.blankline^2))))^0) * parsers.rbracket +parsers.link_label = parsers.lbracket + * -#(parsers.sp * parsers.rbracket) + * #((parsers.any - parsers.rbracket)^-999 * parsers.rbracket) + * Cs((parsers.alphanumeric^1 + + parsers.inticks + + parsers.autolink + + V("InlineHtml") + + ( parsers.backslash * parsers.backslash) + + ( parsers.backslash * (parsers.lbracket + parsers.rbracket) + + V("NoSoftLineBreakSpace") + + V("NoSoftLineBreakEndline") + + (parsers.any + - (parsers.newline + parsers.lbracket + parsers.rbracket + parsers.blankline^2))))^1) + * parsers.rbracket + +parsers.inparens_url = P{ parsers.lparent + * ((parsers.anyescaped - (parsers.lparent + + parsers.rparent + + parsers.spacing) + ) + V(1))^0 + * parsers.rparent } + -- url for markdown links, allowing nested brackets: parsers.url = parsers.less * Cs((parsers.anyescaped + - parsers.newline + - parsers.less - parsers.more)^0) * parsers.more - + Cs((parsers.inparens + (parsers.anyescaped - - parsers.spacing - - parsers.rparent))^1) - --- quoted text, possibly with nested quotes: -parsers.title_s = parsers.squote * Cs(((parsers.anyescaped-parsers.squote) - + parsers.squoted)^0) - * parsers.squote - -parsers.title_d = parsers.dquote * Cs(((parsers.anyescaped-parsers.dquote) - + parsers.dquoted)^0) - * parsers.dquote + + -parsers.less + * Cs((parsers.inparens_url + (parsers.anyescaped + - parsers.spacing + - parsers.lparent + - parsers.rparent))^1) + +-- quoted text: +parsers.title_s = parsers.squote + * Cs((parsers.html_entities + + V("NoSoftLineBreakSpace") + + V("NoSoftLineBreakEndline") + + (parsers.anyescaped - parsers.newline - parsers.squote - parsers.blankline^2))^0) + * parsers.squote + +parsers.title_d = parsers.dquote + * Cs((parsers.html_entities + + V("NoSoftLineBreakSpace") + + V("NoSoftLineBreakEndline") + + (parsers.anyescaped - parsers.newline - parsers.dquote - parsers.blankline^2))^0) + * parsers.dquote parsers.title_p = parsers.lparent - * Cs((parsers.inparens + (parsers.anyescaped-parsers.rparent))^0) + * Cs((parsers.html_entities + + V("NoSoftLineBreakSpace") + + V("NoSoftLineBreakEndline") + + (parsers.anyescaped - parsers.newline - parsers.lparent - parsers.rparent + - parsers.blankline^2))^0) * parsers.rparent parsers.title = parsers.title_d + parsers.title_s + parsers.title_p parsers.optionaltitle - = parsers.spnl * parsers.title * parsers.spacechar^0 + = parsers.spnlc * parsers.title * parsers.spacechar^0 + Cc("") -parsers.indirect_link - = parsers.tag - * ( C(parsers.spnl) * parsers.tag - + Cc(nil) * Cc(nil) -- always produce exactly two captures - ) - -parsers.indirect_image - = parsers.exclamation * parsers.indirect_link % \end{macrocode} % \par % \begin{markdown} % -%#### Parsers Used for HTML -% -% \end{markdown} -% \begin{macrocode} --- case-insensitive match (we assume s is lowercase). must be single byte encoding -parsers.keyword_exact = function(s) - local parser = P(0) - for i=1,#s do - local c = s:sub(i,i) - local m = c .. upper(c) - parser = parser * S(m) - end - return parser -end - -parsers.block_keyword = - parsers.keyword_exact("address") + parsers.keyword_exact("blockquote") + - parsers.keyword_exact("center") + parsers.keyword_exact("del") + - parsers.keyword_exact("dir") + parsers.keyword_exact("div") + - parsers.keyword_exact("p") + parsers.keyword_exact("pre") + - parsers.keyword_exact("li") + parsers.keyword_exact("ol") + - parsers.keyword_exact("ul") + parsers.keyword_exact("dl") + - parsers.keyword_exact("dd") + parsers.keyword_exact("form") + - parsers.keyword_exact("fieldset") + parsers.keyword_exact("isindex") + - parsers.keyword_exact("ins") + parsers.keyword_exact("menu") + - parsers.keyword_exact("noframes") + parsers.keyword_exact("frameset") + - parsers.keyword_exact("h1") + parsers.keyword_exact("h2") + - parsers.keyword_exact("h3") + parsers.keyword_exact("h4") + - parsers.keyword_exact("h5") + parsers.keyword_exact("h6") + - parsers.keyword_exact("hr") + parsers.keyword_exact("script") + - parsers.keyword_exact("noscript") + parsers.keyword_exact("table") + - parsers.keyword_exact("tbody") + parsers.keyword_exact("tfoot") + - parsers.keyword_exact("thead") + parsers.keyword_exact("th") + - parsers.keyword_exact("td") + parsers.keyword_exact("tr") - --- There is no reason to support bad html, so we expect quoted attributes -parsers.htmlattributevalue - = parsers.squote * (parsers.any - (parsers.blankline - + parsers.squote))^0 - * parsers.squote - + parsers.dquote * (parsers.any - (parsers.blankline - + parsers.dquote))^0 - * parsers.dquote - -parsers.htmlattribute = parsers.spacing^1 - * (parsers.alphanumeric + S("_-"))^1 - * parsers.sp * parsers.equal * parsers.sp - * parsers.htmlattributevalue - -parsers.htmlcomment = P("<!--") - * parsers.optionalspace - * Cs((parsers.any - parsers.optionalspace * P("-->"))^0) - * parsers.optionalspace - * P("-->") - -parsers.htmlinstruction = P("<?") * (parsers.any - P("?>"))^0 * P("?>") - -parsers.openelt_any = parsers.less * parsers.keyword * parsers.htmlattribute^0 - * parsers.sp * parsers.more - -parsers.openelt_exact = function(s) - return parsers.less * parsers.sp * parsers.keyword_exact(s) - * parsers.htmlattribute^0 * parsers.sp * parsers.more -end - -parsers.openelt_block = parsers.sp * parsers.block_keyword - * parsers.htmlattribute^0 * parsers.sp * parsers.more - -parsers.closeelt_any = parsers.less * parsers.sp * parsers.slash - * parsers.keyword * parsers.sp * parsers.more - -parsers.closeelt_exact = function(s) - return parsers.less * parsers.sp * parsers.slash * parsers.keyword_exact(s) - * parsers.sp * parsers.more -end - -parsers.emptyelt_any = parsers.less * parsers.sp * parsers.keyword - * parsers.htmlattribute^0 * parsers.sp * parsers.slash - * parsers.more - -parsers.emptyelt_block = parsers.less * parsers.sp * parsers.block_keyword - * parsers.htmlattribute^0 * parsers.sp * parsers.slash - * parsers.more - -parsers.displaytext = (parsers.any - parsers.less)^1 - --- return content between two matched HTML tags -parsers.in_matched = function(s) - return { parsers.openelt_exact(s) - * (V(1) + parsers.displaytext - + (parsers.less - parsers.closeelt_exact(s)))^0 - * parsers.closeelt_exact(s) } -end - -local function parse_matched_tags(s,pos) - local t = string.lower(lpeg.match(C(parsers.keyword),s,pos)) - return lpeg.match(parsers.in_matched(t),s,pos-1) -end - -parsers.in_matched_block_tags = parsers.less - * Cmt(#parsers.openelt_block, parse_matched_tags) - -% \end{macrocode} -% \par -% \begin{markdown} -% -%#### Parsers Used for HTML Entities -% -% \end{markdown} -% \begin{macrocode} -parsers.hexentity = parsers.ampersand * parsers.hash * S("Xx") - * C(parsers.hexdigit^1) * parsers.semicolon -parsers.decentity = parsers.ampersand * parsers.hash - * C(parsers.digit^1) * parsers.semicolon -parsers.tagentity = parsers.ampersand * C(parsers.alphanumeric^1) - * parsers.semicolon -% \end{macrocode} -% \par -% \begin{markdown} -% -%#### Helpers for Link Reference Definitions +%#### Helpers for Links and Link Reference Definitions % % \end{markdown} % \begin{macrocode} -- parse a reference definition: [foo]: /bar "title" -parsers.define_reference_parser = parsers.leader * parsers.tag * parsers.colon - * parsers.spacechar^0 * parsers.url - * parsers.optionaltitle +parsers.define_reference_parser = (parsers.check_trail / "") * parsers.link_label * parsers.colon + * parsers.spnlc * parsers.url + * ( parsers.spnlc_sep * parsers.title * parsers.only_blank + + Cc("") * parsers.only_blank) % \end{macrocode} % \par % \begin{markdown} @@ -24470,7 +27331,6 @@ parsers.define_reference_parser = parsers.leader * parsers.tag * parsers.colon % \end{markdown} % \begin{macrocode} parsers.Inline = V("Inline") -parsers.IndentedInline = V("IndentedInline") -- parse many p between starter and ender parsers.between = function(p, starter, ender) @@ -24478,26 +27338,6 @@ parsers.between = function(p, starter, ender) return (starter * #parsers.nonspacechar * Ct(p * (p - ender2)^0) * ender2) end -parsers.urlchar = parsers.anyescaped - - parsers.newline - - parsers.more - -parsers.auto_link_url = parsers.less - * C( parsers.alphanumeric^1 * P("://") - * parsers.urlchar^1) - * parsers.more - -parsers.auto_link_email - = parsers.less - * C((parsers.alphanumeric + S("-._+"))^1 - * P("@") * parsers.urlchar^1) - * parsers.more - -parsers.auto_link_relative_reference - = parsers.less - * C(parsers.urlchar^1) - * parsers.more - % \end{macrocode} % \par % \begin{markdown} @@ -24507,10 +27347,13 @@ parsers.auto_link_relative_reference % \end{markdown} % \begin{macrocode} parsers.lineof = function(c) - return (parsers.leader * (P(c) * parsers.optionalspace)^3 - * (parsers.newline * parsers.blankline^1 - + parsers.newline^-1 * parsers.eof)) + return (parsers.check_trail_no_rem * (P(c) * parsers.optionalspace)^3 + * (parsers.newline + parsers.eof)) end + +parsers.thematic_break_lines = parsers.lineof(parsers.asterisk) + + parsers.lineof(parsers.dash) + + parsers.lineof(parsers.underscore) % \end{macrocode} % \par % \begin{markdown} @@ -24524,11 +27367,21 @@ parsers.heading_start = #parsers.hash * C(parsers.hash^-6) * -parsers.hash / length -- parse setext header ending and return level -parsers.heading_level = parsers.equal^1 * Cc(1) + parsers.dash^1 * Cc(2) +parsers.heading_level = parsers.nonindentspace * parsers.equal^1 * parsers.optionalspace * #parsers.newline * Cc(1) + + parsers.nonindentspace * parsers.dash^1 * parsers.optionalspace * #parsers.newline * Cc(2) local function strip_atx_end(s) - return s:gsub("[#%s]*\n$","") + return s:gsub("%s+#*%s*\n$","") end + +parsers.atx_heading = parsers.check_trail_no_rem + * Cg(parsers.heading_start, "level") + * (C( parsers.optionalspace + * parsers.hash^0 + * parsers.optionalspace + * parsers.newline) + + parsers.spacechar^1 + * C(parsers.line)) % \end{macrocode} % \par % \begin{markdown} @@ -24610,7 +27463,7 @@ function M.reader.new(writer, options) tag = util.rope_to_string(tag) tag = tag:gsub("[ \n\r\t]+", " ") tag = tag:gsub("^ ", ""):gsub(" $", "") - tag = uni_case.casefold(tag, true, false) + tag = uni_algos.case.casefold(tag, true, false) return tag end % \end{macrocode} @@ -24733,11 +27586,6 @@ function M.reader.new(writer, options) return parsers.inlines end, false) - self.create_parser("parse_inlines_no_link", - function() - return parsers.inlines_no_link - end, false) - self.create_parser("parse_inlines_no_inline_note", function() return parsers.inlines_no_inline_note @@ -24752,6 +27600,134 @@ function M.reader.new(writer, options) function() return parsers.inlines_nbsp end, false) + self.create_parser("parse_inlines_no_link_or_emphasis", + function() + return parsers.inlines_no_link_or_emphasis + end, false) +% \end{macrocode} +% \par +% \begin{markdown} +% +%#### Parsers Used for Indentation (local) +% +% The following patterns represent basic building blocks of indented content. +% +% \end{markdown} +% \begin{macrocode} + parsers.minimally_indented_blankline = parsers.check_minimal_indent * (parsers.blankline / "") + + parsers.minimally_indented_block = parsers.check_minimal_indent * V("Block") + + parsers.minimally_indented_block_or_paragraph = parsers.check_minimal_indent * V("BlockOrParagraph") + + parsers.minimally_indented_paragraph = parsers.check_minimal_indent * V("Paragraph") + + parsers.minimally_indented_plain = parsers.check_minimal_indent * V("Plain") + + parsers.minimally_indented_par_or_plain = parsers.minimally_indented_paragraph + + parsers.minimally_indented_plain + + parsers.minimally_indented_par_or_plain_no_blank = parsers.minimally_indented_par_or_plain + - parsers.minimally_indented_blankline + + parsers.minimally_indented_ref = parsers.check_minimal_indent * V("Reference") + + parsers.minimally_indented_blank = parsers.check_minimal_indent * V("Blank") + + parsers.conditionally_indented_blankline = parsers.check_minimal_blank_indent * (parsers.blankline / "") + + parsers.minimally_indented_ref_or_block = parsers.minimally_indented_ref + + parsers.minimally_indented_block + - parsers.minimally_indented_blankline + + parsers.minimally_indented_ref_or_block_or_par = parsers.minimally_indented_ref + + parsers.minimally_indented_block_or_paragraph + - parsers.minimally_indented_blankline + +% \end{macrocode} +% \begin{markdown} +% +% The following pattern parses the properly indented content that follows the initial container start. +% +% \end{markdown} +% \begin{macrocode} + + parsers.separator_loop = function(separated_block, paragraph, block_separator, paragraph_separator) + return separated_block + + block_separator + * paragraph + * separated_block + + paragraph_separator + * paragraph + end + + parsers.create_loop_body_pair = function(separated_block, paragraph, block_separator, paragraph_separator) + return { + block = parsers.separator_loop(separated_block, paragraph, block_separator, block_separator), + par = parsers.separator_loop(separated_block, paragraph, block_separator, paragraph_separator) + } + end + + parsers.block_sep_group = function(blank) + return blank^0 * parsers.eof + + ( blank^2 / writer.paragraphsep + + blank^0 / writer.interblocksep + ) + end + + parsers.par_sep_group = function(blank) + return blank^0 * parsers.eof + + blank^0 / writer.paragraphsep + end + + parsers.sep_group_no_output = function(blank) + return blank^0 * parsers.eof + + blank^0 + end + + parsers.content_blank = parsers.minimally_indented_blankline + + parsers.ref_or_block_separated = parsers.sep_group_no_output(parsers.content_blank) + * ( parsers.minimally_indented_ref + - parsers.content_blank) + + parsers.block_sep_group(parsers.content_blank) + * ( parsers.minimally_indented_block + - parsers.content_blank) + + parsers.loop_body_pair = + parsers.create_loop_body_pair(parsers.ref_or_block_separated, + parsers.minimally_indented_par_or_plain_no_blank, + parsers.block_sep_group(parsers.content_blank), + parsers.par_sep_group(parsers.content_blank)) + + parsers.content_loop = ( V("Block") + * parsers.loop_body_pair.block^0 + + (V("Paragraph") + V("Plain")) + * parsers.ref_or_block_separated + * parsers.loop_body_pair.block^0 + + (V("Paragraph") + V("Plain")) + * parsers.loop_body_pair.par^0) + * parsers.content_blank^0 + + parsers.indented_content = function() + return Ct( (V("Reference") + (parsers.blankline / "")) + * parsers.content_blank^0 + * parsers.check_minimal_indent + * parsers.content_loop + + (V("Reference") + (parsers.blankline / "")) + * parsers.content_blank^0 + + parsers.content_loop) + end + + parsers.add_indent = function(pattern, name, breakable) + return Cg(Cmt( Cb("indent_info") + * Ct(pattern) + * (#parsers.linechar * Cc(false) + Cc(true)) -- check if starter is blank + * Cc(name) + * Cc(breakable), + process_starter_indent), "indent_info") + end + % \end{macrocode} % \par % \begin{markdown} @@ -24766,18 +27742,28 @@ function M.reader.new(writer, options) parsers.dig = parsers.digit end - parsers.enumerator = C(parsers.dig^3 * parsers.period) * #parsers.spacing - + C(parsers.dig^2 * parsers.period) * #parsers.spacing - * (parsers.tab + parsers.space^1) - + C(parsers.dig * parsers.period) * #parsers.spacing - * (parsers.tab + parsers.space^-2) - + parsers.space * C(parsers.dig^2 * parsers.period) - * #parsers.spacing - + parsers.space * C(parsers.dig * parsers.period) - * #parsers.spacing - * (parsers.tab + parsers.space^-1) - + parsers.space * parsers.space * C(parsers.dig^1 - * parsers.period) * #parsers.spacing + parsers.enumerator = function(delimiter_type, interrupting) + local delimiter_range + local allowed_end + if interrupting then + delimiter_range = P("1") + allowed_end = C(parsers.spacechar^1) * #parsers.linechar + else + delimiter_range = parsers.dig * parsers.dig^-8 + allowed_end = C(parsers.spacechar^1) + #(parsers.newline + parsers.eof) + end + + return parsers.check_trail + * Ct(C(delimiter_range) * C(delimiter_type)) + * allowed_end + end + + parsers.starter = parsers.bullet(parsers.dash) + + parsers.bullet(parsers.asterisk) + + parsers.bullet(parsers.plus) + + parsers.enumerator(parsers.period) + + parsers.enumerator(parsers.rparent) + % \end{macrocode} % \par % \begin{markdown} @@ -24786,20 +27772,369 @@ function M.reader.new(writer, options) % % \end{markdown} % \begin{macrocode} - -- strip off leading > and indents, and run through blocks - parsers.blockquote_body = ((parsers.leader * parsers.more * parsers.space^-1)/"" - * parsers.linechar^0 * parsers.newline)^1 - * (-V("BlockquoteExceptions") * parsers.linechar^1 - * parsers.newline)^0 + parsers.blockquote_start = parsers.check_trail * C(parsers.more) * C(parsers.spacechar^0) + + parsers.blockquote_body = parsers.add_indent(parsers.blockquote_start, "bq", true) + * parsers.indented_content() + * remove_indent("bq") if not options.breakableBlockquotes then - parsers.blockquote_body = parsers.blockquote_body - * (parsers.blankline^0 / "") + parsers.blockquote_body = parsers.add_indent(parsers.blockquote_start, "bq", false) + * parsers.indented_content() + * remove_indent("bq") end % \end{macrocode} % \par % \begin{markdown} % +%#### Helpers for Emphasis and Strong Emphasis (local) +% +% Parse the content of a table `content_part` with links, images and emphasis disabled. +% +% \end{markdown} +% \begin{macrocode} + local function parse_content_part(content_part) + local rope = util.rope_to_string(content_part) + local parsed = self.parser_functions.parse_inlines_no_link_or_emphasis(rope) + parsed.indent_info = nil + return parsed + end + +% \end{macrocode} +% \begin{markdown} +% +% Collect the content between the `opening_index` and `closing_index` in the delimiter table `t`. +% +% \end{markdown} +% \begin{macrocode} + local function collect_emphasis_content(t, opening_index, closing_index) + local content = {} + + local content_part = {} + for i = opening_index, closing_index do + local value = t[i] + + if value.rendered ~= nil then + content[#content + 1] = parse_content_part(content_part) + content_part = {} + content[#content + 1] = value.rendered + value.rendered = nil + else + if value.type == "delimiter" and value.element == "emphasis" then + if value.is_active then + content_part[#content_part + 1] = string.rep(value.character, value.current_count) + end + else + content_part[#content_part + 1] = value.content + end + value.content = '' + value.is_active = false + end + end + + if next(content_part) ~= nil then + content[#content + 1] = parse_content_part(content_part) + end + + return content + end + +% \end{macrocode} +% \begin{markdown} +% +% Render content between the `opening_index` and `closing_index` in the delimiter table `t` +% as emphasis. +% +% \end{markdown} +% \begin{macrocode} + local function fill_emph(t, opening_index, closing_index) + local content = collect_emphasis_content(t, opening_index + 1, closing_index - 1) + t[opening_index + 1].is_active = true + t[opening_index + 1].rendered = writer.emphasis(content) + end + +% \end{macrocode} +% \begin{markdown} +% +% Render content between the `opening_index` and `closing_index` in the delimiter table `t` +% as strong emphasis. +% +% \end{markdown} +% \begin{macrocode} + local function fill_strong(t, opening_index, closing_index) + local content = collect_emphasis_content(t, opening_index + 1, closing_index - 1) + t[opening_index + 1].is_active = true + t[opening_index + 1].rendered = writer.strong(content) + end + +% \end{macrocode} +% \begin{markdown} +% +% Check whether the opening delimiter `opening_delimiter` and closing delimiter `closing_delimiter` break +% rule three together. +% +% \end{markdown} +% \begin{macrocode} + local function breaks_three_rule(opening_delimiter, closing_delimiter) + return (opening_delimiter.is_closing or closing_delimiter.is_opening) and + ((opening_delimiter.original_count + closing_delimiter.original_count) % 3 == 0) and + (opening_delimiter.original_count % 3 ~= 0 or closing_delimiter.original_count % 3 ~= 0) + end + +% \end{macrocode} +% \begin{markdown} +% +% Look for the first potential emphasis opener in the delimiter table `t` in the range from +% `bottom_index` to `latest_index` that has the same character `character` as the closing +% delimiter `closing_delimiter`. +% +% \end{markdown} +% \begin{macrocode} + local function find_emphasis_opener(t, bottom_index, latest_index, character, closing_delimiter) + for i = latest_index, bottom_index, -1 do + local value = t[i] + if value.is_active and + value.is_opening and + value.type == "delimiter" and + value.element == "emphasis" and + (value.character == character) and + (value.current_count > 0) then + if not breaks_three_rule(value, closing_delimiter) then + return i + end + end + end + end + +% \end{macrocode} +% \begin{markdown} +% +% Iterate over the delimiters in the delimiter table `t`, producing emphasis or strong emphasis macros. +% +% \end{markdown} +% \begin{macrocode} + local function process_emphasis(t, opening_index, closing_index) + for i = opening_index, closing_index do + local value = t[i] + if value.type == "delimiter" and value.element == "emphasis" then + local delimiter_length = string.len(value.content) + value.character = string.sub(value.content, 1, 1) + value.current_count = delimiter_length + value.original_count = delimiter_length + end + end + + local openers_bottom = { + ['*'] = { + [true] = {opening_index, opening_index, opening_index}, + [false] = {opening_index, opening_index, opening_index} + }, + ['_'] = { + [true] = {opening_index, opening_index, opening_index}, + [false] = {opening_index, opening_index, opening_index} + } + } + + local current_position = opening_index + local max_position = closing_index + + while current_position <= max_position do + local value = t[current_position] + + if value.type ~= "delimiter" or + value.element ~= "emphasis" or + not value.is_active or + not value.is_closing or + (value.current_count <= 0) then + current_position = current_position + 1 + goto continue + end + + local character = value.character + local is_opening = value.is_opening + local closing_length_modulo_three = value.original_count % 3 + + local current_openers_bottom = openers_bottom[character][is_opening][closing_length_modulo_three + 1] + + local opener_position = find_emphasis_opener(t, current_openers_bottom, current_position - 1, character, value) + + if (opener_position == nil) then + openers_bottom[character][is_opening][closing_length_modulo_three + 1] = current_position + current_position = current_position + 1 + goto continue + end + + local opening_delimiter = t[opener_position] + + local current_opening_count = opening_delimiter.current_count + local current_closing_count = t[current_position].current_count + + if (current_opening_count >= 2) and (current_closing_count >= 2) then + opening_delimiter.current_count = current_opening_count - 2 + t[current_position].current_count = current_closing_count - 2 + fill_strong(t, opener_position, current_position) + else + opening_delimiter.current_count = current_opening_count - 1 + t[current_position].current_count = current_closing_count - 1 + fill_emph(t, opener_position, current_position) + end + + ::continue:: + end + end + + local cont = lpeg.R("\128\191") -- continuation byte + +% \end{macrocode} +% \begin{markdown} +% +% Match a UTF-8 character of byte length `n`. +% +% \end{markdown} +% \begin{macrocode} + local function utf8_by_byte_count(n) + if (n == 1) then + return lpeg.R("\0\127") + end + if (n == 2) then + return lpeg.R("\194\223") * cont + end + if (n == 3) then + return lpeg.R("\224\239") * cont * cont + end + if (n == 4) then + return lpeg.R("\240\244") * cont * cont * cont + end + end + +% \end{macrocode} +% \begin{markdown} +% +% Check if a there is a character of a type `chartype` between the start position `start_pos` +% and end position `end_pos` in a string `s` relative to current index `i`. +% +% \end{markdown} +% \begin{macrocode} + local function check_unicode_type(s, i, start_pos, end_pos, chartype) + local c + local char_length + for pos = start_pos, end_pos, 1 do + if (start_pos < 0) then + char_length = -pos + else + char_length = pos + 1 + end + c = lpeg.match({ C(utf8_by_byte_count(char_length)) },s,i+pos) + if (c ~= nil) and (unicode.utf8.match(c, chartype)) then + return i + end + end + end + + local function check_preceding_unicode_punctuation(s, i) + return check_unicode_type(s, i, -4, -1, "%p") + end + + local function check_preceding_unicode_whitespace(s, i) + return check_unicode_type(s, i, -4, -1, "%s") + end + + local function check_following_unicode_punctuation(s, i) + return check_unicode_type(s, i, 0, 3, "%p") + end + + local function check_following_unicode_whitespace(s, i) + return check_unicode_type(s, i, 0, 3, "%s") + end + + parsers.unicode_preceding_punctuation = B(parsers.escapable) + + Cmt(parsers.succeed, check_preceding_unicode_punctuation) + + parsers.unicode_preceding_whitespace = Cmt(parsers.succeed, check_preceding_unicode_whitespace) + + parsers.unicode_following_punctuation = #parsers.escapable + + Cmt(parsers.succeed, check_following_unicode_punctuation) + + parsers.unicode_following_whitespace = Cmt(parsers.succeed, check_following_unicode_whitespace) + + parsers.delimiter_run = function(character) + return (B(parsers.backslash * character) + -B(character)) + * character^1 + * -#character + end + + parsers.left_flanking_delimiter_run = function(character) + return (B( parsers.any) + * (parsers.unicode_preceding_punctuation + parsers.unicode_preceding_whitespace) + + -B(parsers.any)) + * parsers.delimiter_run(character) + * parsers.unicode_following_punctuation + + parsers.delimiter_run(character) + * -#(parsers.unicode_following_punctuation + parsers.unicode_following_whitespace + + parsers.eof) + end + + parsers.right_flanking_delimiter_run = function(character) + return parsers.unicode_preceding_punctuation + * parsers.delimiter_run(character) + * (parsers.unicode_following_punctuation + parsers.unicode_following_whitespace + + parsers.eof) + + (B(parsers.any) + * -(parsers.unicode_preceding_punctuation + parsers.unicode_preceding_whitespace)) + * parsers.delimiter_run(character) + end + + if options.underscores then + parsers.emph_start = parsers.left_flanking_delimiter_run(parsers.asterisk) + + (-#parsers.right_flanking_delimiter_run(parsers.underscore) + + (parsers.unicode_preceding_punctuation + * #parsers.right_flanking_delimiter_run(parsers.underscore))) + * parsers.left_flanking_delimiter_run(parsers.underscore) + + parsers.emph_end = parsers.right_flanking_delimiter_run(parsers.asterisk) + + (-#parsers.left_flanking_delimiter_run(parsers.underscore) + + #(parsers.left_flanking_delimiter_run(parsers.underscore) + * parsers.unicode_following_punctuation)) + * parsers.right_flanking_delimiter_run(parsers.underscore) + else + parsers.emph_start = parsers.left_flanking_delimiter_run(parsers.asterisk) + + parsers.emph_end = parsers.right_flanking_delimiter_run(parsers.asterisk) + end + + parsers.emph_capturing_open_and_close = #parsers.emph_start * #parsers.emph_end + * Ct( Cg(Cc("delimiter"), "type") + * Cg(Cc("emphasis"), "element") + * Cg(C(parsers.emph_start), "content") + * Cg(Cc(true), "is_opening") + * Cg(Cc(true), "is_closing")) + + parsers.emph_capturing_open = Ct( Cg(Cc("delimiter"), "type") + * Cg(Cc("emphasis"), "element") + * Cg(C(parsers.emph_start), "content") + * Cg(Cc(true), "is_opening") + * Cg(Cc(false), "is_closing")) + + parsers.emph_capturing_close = Ct( Cg(Cc("delimiter"), "type") + * Cg(Cc("emphasis"), "element") + * Cg(C(parsers.emph_end), "content") + * Cg(Cc(false), "is_opening") + * Cg(Cc(true), "is_closing")) + + parsers.emph_open_or_close = parsers.emph_capturing_open_and_close + + parsers.emph_capturing_open + + parsers.emph_capturing_close + + parsers.emph_open = parsers.emph_capturing_open_and_close + + parsers.emph_capturing_open + + parsers.emph_close = parsers.emph_capturing_open_and_close + + parsers.emph_capturing_close + +% \end{macrocode} +% \par +% \begin{markdown} +% %#### Helpers for Links and Link Reference Definitions (local) % % \end{markdown} @@ -24818,14 +28153,16 @@ function M.reader.new(writer, options) % % \end{markdown} % \begin{macrocode} - function self.register_link(tag, url, title, + function self.register_link(_, tag, url, title, attributes) - tag = self.normalize_tag(tag) - references[tag] = { - url = url, - title = title, - attributes = attributes, - } + local normalized_tag = self.normalize_tag(tag) + if references[normalized_tag] == nil then + references[normalized_tag] = { + url = url, + title = title, + attributes = attributes + } + end return "" end @@ -24834,103 +28171,505 @@ function M.reader.new(writer, options) % \begin{markdown} % % The \luamdef{reader->lookup_reference} method looks up a -% reference with link label `tag`. When the reference exists -% the method returns a link. The attributes of a link are -% produced by merging the attributes of the link reference -% and the optional `attributes`. Otherwise, the method returns a -% two-tuple of `nil` and fallback text constructed from the -% link text `label` and the optional spaces `sps` between the -% link text and the link label. -% -% \end{markdown} -% \begin{macrocode} - function self.lookup_reference(label, sps, tag, - attributes) - local tagpart - if not tag then - tag = label - tagpart = "" - elseif tag == "" then - tag = label - tagpart = "[]" - else - tagpart = { - "[", - self.parser_functions.parse_inlines(tag), - "]" - } - end - if sps then - tagpart = {sps, tagpart} +% reference with link label `tag`. +% +% \end{markdown} +% \begin{macrocode} + function self.lookup_reference(tag) + return references[self.normalize_tag(tag)] + end + + parsers.title_s_direct_ref = parsers.squote + * Cs((parsers.html_entities + + (parsers.anyescaped - parsers.squote - parsers.blankline^2))^0) + * parsers.squote + + parsers.title_d_direct_ref = parsers.dquote + * Cs((parsers.html_entities + + (parsers.anyescaped - parsers.dquote - parsers.blankline^2))^0) + * parsers.dquote + + parsers.title_p_direct_ref = parsers.lparent + * Cs((parsers.html_entities + + (parsers.anyescaped - parsers.lparent - parsers.rparent - parsers.blankline^2))^0) + * parsers.rparent + + parsers.title_direct_ref = parsers.title_s_direct_ref + + parsers.title_d_direct_ref + + parsers.title_p_direct_ref + + parsers.inline_direct_ref_inside = parsers.lparent * parsers.spnl + * Cg(parsers.url + Cc(""), "url") + * parsers.spnl + * Cg(parsers.title_direct_ref + Cc(""), "title") + * parsers.spnl * parsers.rparent + + parsers.inline_direct_ref = parsers.lparent * parsers.spnlc + * Cg(parsers.url + Cc(""), "url") + * parsers.spnlc + * Cg(parsers.title + Cc(""), "title") + * parsers.spnlc * parsers.rparent + + parsers.empty_link = parsers.lbracket + * parsers.rbracket + + parsers.inline_link = parsers.link_text + * parsers.inline_direct_ref + + parsers.full_link = parsers.link_text + * parsers.link_label + + parsers.shortcut_link = parsers.link_label + * -(parsers.empty_link + parsers.link_label) + + parsers.collapsed_link = parsers.link_label + * parsers.empty_link + + parsers.image_opening = #(parsers.exclamation * parsers.inline_link) + * Cg(Cc("inline"), "link_type") + + #(parsers.exclamation * parsers.full_link) + * Cg(Cc("full"), "link_type") + + #(parsers.exclamation * parsers.collapsed_link) + * Cg(Cc("collapsed"), "link_type") + + #(parsers.exclamation * parsers.shortcut_link) + * Cg(Cc("shortcut"), "link_type") + + #(parsers.exclamation * parsers.empty_link) + * Cg(Cc("empty"), "link_type") + + parsers.link_opening = #parsers.inline_link + * Cg(Cc("inline"), "link_type") + + #parsers.full_link + * Cg(Cc("full"), "link_type") + + #parsers.collapsed_link + * Cg(Cc("collapsed"), "link_type") + + #parsers.shortcut_link + * Cg(Cc("shortcut"), "link_type") + + #parsers.empty_link + * Cg(Cc("empty_link"), "link_type") + + #parsers.link_text + * Cg(Cc("link_text"), "link_type") + + parsers.link_image_opening = Ct( Cg(Cc("delimiter"), "type") + * Cg(Cc(true), "is_opening") + * Cg(Cc(false), "is_closing") + * ( Cg(Cc("image"), "element") + * parsers.image_opening + * Cg(parsers.exclamation * parsers.lbracket, "content") + + Cg(Cc("link"), "element") + * parsers.link_opening + * Cg(parsers.lbracket, "content"))) + + parsers.link_image_closing = Ct( Cg(Cc("delimiter"), "type") + * Cg(Cc("link"), "element") + * Cg(Cc(false), "is_opening") + * Cg(Cc(true), "is_closing") + * ( Cg(Cc(true), "is_direct") + * Cg(parsers.rbracket * #parsers.inline_direct_ref, "content") + + Cg(Cc(false), "is_direct") + * Cg(parsers.rbracket, "content"))) + + parsers.link_image_open_or_close = parsers.link_image_opening + + parsers.link_image_closing + + if options.html then + parsers.link_emph_precedence = parsers.inticks + + parsers.autolink + + parsers.html_inline_tags + else + parsers.link_emph_precedence = parsers.inticks + + parsers.autolink + end + + parsers.link_and_emph_endline = parsers.newline + * ((parsers.check_minimal_indent + * -V("EndlineExceptions") + + parsers.check_optional_indent + * -V("EndlineExceptions") + * -parsers.starter) / "") + * parsers.spacechar^0 / "\n" + + parsers.link_and_emph_content = Ct( Cg(Cc("content"), "type") + * Cg(Cs(( parsers.link_emph_precedence + + parsers.backslash * parsers.any + + parsers.link_and_emph_endline + + (parsers.linechar + - parsers.blankline^2 + - parsers.link_image_open_or_close + - parsers.emph_open_or_close))^0), "content")) + + parsers.link_and_emph_table = (parsers.link_image_opening + parsers.emph_open) + * parsers.link_and_emph_content + * ((parsers.link_image_open_or_close + parsers.emph_open_or_close) + * parsers.link_and_emph_content)^1 + +% \end{macrocode} +% \begin{markdown} +% +% Collect the content between the `opening_index` and `closing_index` in the delimiter table `t`. +% +% \end{markdown} +% \begin{macrocode} + local function collect_link_content(t, opening_index, closing_index) + local content = {} + for i = opening_index, closing_index do + content[#content + 1] = t[i].content end - tag = self.normalize_tag(tag) - local r = references[tag] - if r then - local merged_attributes = {} - for _, attribute in ipairs(r.attributes or {}) do - table.insert(merged_attributes, attribute) + return util.rope_to_string(content) + end + +% \end{macrocode} +% \begin{markdown} +% +% Look for the closest potential link opener in the delimiter table `t` in the range from +% `bottom_index` to `latest_index`. +% +% \end{markdown} +% \begin{macrocode} + local function find_link_opener(t, bottom_index, latest_index) + for i = latest_index, bottom_index, -1 do + local value = t[i] + if value.type == "delimiter" and + value.is_opening and + (value.element == "link" or value.element == "image") + and not value.removed then + if value.is_active then + return i + end + value.removed = true + return nil end - for _, attribute in ipairs(attributes or {}) do - table.insert(merged_attributes, attribute) + end + end + +% \end{macrocode} +% \begin{markdown} +% +% Find the position of a delimiter that closes a full link after an an index `latest_index` +% in the delimiter table `t`. +% +% \end{markdown} +% \begin{macrocode} + local function find_next_link_closing_index(t, latest_index) + for i = latest_index, #t do + local value = t[i] + if value.is_closing and + value.element == "link" and + not value.removed then + return i end - if #merged_attributes == 0 then - merged_attributes = nil + end + end + +% \end{macrocode} +% \begin{markdown} +% +% Disable all preceding opening link delimiters by marking them inactive with the `is_active` property +% to prevent links within links. Images within links are allowed. +% +% \end{markdown} +% \begin{macrocode} + local function disable_previous_link_openers(t, opening_index) + if t[opening_index].element == "image" then + return + end + + for i = opening_index, 1, -1 do + local value = t[i] + if value.is_active and + value.type == "delimiter" and + value.is_opening and + value.element == "link" then + value.is_active = false end - return { - url = r.url, - title = r.title, - attributes = merged_attributes, - } - else - return nil, { - "[", - self.parser_functions.parse_inlines(label), - "]", - tagpart - } end end - -- lookup link reference and return a link, if the reference is found, - -- or a bracketed label otherwise. - local function indirect_link(label, sps, tag) - return writer.defer_call(function() - local r,fallback = self.lookup_reference(label, sps, tag) - if r then - return writer.link( - self.parser_functions.parse_inlines_no_link(label), - r.url, r.title) - else - return fallback +% \end{macrocode} +% \begin{markdown} +% +% Disable the delimiters between the `opening_index` and `closing_index` in the delimiter table `t` +% by marking them inactive with the `is_active` property. +% +% \end{markdown} +% \begin{macrocode} + local function disable_range(t, opening_index, closing_index) + for i = opening_index, closing_index do + local value = t[i] + if value.is_active then + value.is_active = false + if value.type == "delimiter" then + value.removed = true + end end - end) + end end - -- lookup image reference and return an image, if the reference is found, - -- or a bracketed label otherwise. - local function indirect_image(label, sps, tag) - return writer.defer_call(function() - local r,fallback = self.lookup_reference(label, sps, tag) - if r then - return writer.image(writer.string(label), r.url, r.title) - else - return {"!", fallback} +% \end{macrocode} +% \begin{markdown} +% +% Clear the parsed content between the `opening_index` and `closing_index` in the delimiter table `t`. +% +% \end{markdown} +% \begin{macrocode} + local function delete_parsed_content_in_range(t, opening_index, closing_index) + for i = opening_index, closing_index do + t[i].rendered = nil + end + end + +% \end{macrocode} +% \begin{markdown} +% +% Clear the content between the `opening_index` and `closing_index` in the delimiter table `t`. +% +% \end{markdown} +% \begin{macrocode} + local function empty_content_in_range(t, opening_index, closing_index) + for i = opening_index, closing_index do + t[i].content = '' + end + end + +% \end{macrocode} +% \begin{markdown} +% +% Join the attributes from the link reference definition `reference_attributes` with the link's own +% attributes `own_attributes`. +% +% \end{markdown} +% \begin{macrocode} + local function join_attributes(reference_attributes, own_attributes) + local merged_attributes = {} + for _, attribute in ipairs(reference_attributes or {}) do + table.insert(merged_attributes, attribute) + end + for _, attribute in ipairs(own_attributes or {}) do + table.insert(merged_attributes, attribute) + end + if next(merged_attributes) == nil then + merged_attributes = nil + end + return merged_attributes + end + +% \end{macrocode} +% \begin{markdown} +% +% Parse content between two delimiters in the delimiter table `t`. Produce the respective link and image +% macros. +% +% \end{markdown} +% \begin{macrocode} + local function render_link_or_image(t, opening_index, closing_index, content_end_index, reference) + process_emphasis(t, opening_index, content_end_index) + local mapped = collect_emphasis_content(t, opening_index + 1, content_end_index - 1) + + local rendered = {} + if (t[opening_index].element == "link") then + rendered = writer.link(mapped, reference.url, reference.title, reference.attributes) + end + + if (t[opening_index].element == "image") then + rendered = writer.image(mapped, reference.url, reference.title, reference.attributes) + end + + t[opening_index].rendered = rendered + delete_parsed_content_in_range(t, opening_index + 1, closing_index) + empty_content_in_range(t, opening_index, closing_index) + disable_previous_link_openers(t, opening_index) + disable_range(t, opening_index, closing_index) + end + +% \end{macrocode} +% \begin{markdown} +% +% Match the link destination of an inline link at index `closing_index` in table `t` +% when `match_reference` is true. Additionally, match attributes when the option +% \Opt{linkAttributes} is enabled. +% +% \end{markdown} +% \begin{macrocode} + local function resolve_inline_following_content(t, closing_index, match_reference, match_link_attributes) + local content = "" + for i = closing_index + 1, #t do + content = content .. t[i].content + end + + local matching_content = parsers.succeed + + if match_reference then + matching_content = matching_content * parsers.inline_direct_ref_inside + end + + if match_link_attributes then + matching_content = matching_content * Cg(Ct(parsers.attributes^-1), "attributes") + end + + local matched = lpeg.match(Ct(matching_content * Cg(Cp(), "end_position")), content) + + local matched_count = matched.end_position - 1 + for i = closing_index + 1, #t do + local value = t[i] + + local chars_left = matched_count + matched_count = matched_count - #value.content + + if matched_count <= 0 then + value.content = value.content:sub(chars_left + 1) + break end - end) + + value.content = '' + value.is_active = false + end + + local attributes = matched.attributes + if attributes == nil or next(attributes) == nil then + attributes = nil + end + + return { + url = matched.url or "", + title = matched.title or "", + attributes = attributes + } + end + +% \end{macrocode} +% \begin{markdown} +% +% Resolve an inline link [a](b "c") from the delimiters at `opening_index` and `closing_index` +% within a delimiter table `t`. Here, compared to other types of links, no reference definition is needed. +% +% \end{markdown} +% \begin{macrocode} + local function resolve_inline_link(t, opening_index, closing_index) + local inline_content = resolve_inline_following_content(t, closing_index, true, t.match_link_attributes) + render_link_or_image(t, opening_index, closing_index, closing_index, inline_content) + end + +% \end{macrocode} +% \begin{markdown} +% +% Resolve a shortcut link [a] from the delimiters at `opening_index` and `closing_index` within a delimiter table `t`. +% Continue if a tag `a` is not found in the references. +% +% \end{markdown} +% \begin{macrocode} + local function resolve_shortcut_link(t, opening_index, closing_index) + local content = collect_link_content(t, opening_index + 1, closing_index - 1) + local r = self.lookup_reference(content) + + if r then + local inline_content = resolve_inline_following_content(t, closing_index, false, t.match_link_attributes) + r.attributes = join_attributes(r.attributes, inline_content.attributes) + render_link_or_image(t, opening_index, closing_index, closing_index, r) + end + end + +% \end{macrocode} +% \begin{markdown} +% +% Resolve a full link [a][b] from the delimiters at `opening_index` and `closing_index` within a delimiter table `t`. +% Continue if a tag `b` is not found in the references. +% +% \end{markdown} +% \begin{macrocode} + local function resolve_full_link(t, opening_index, closing_index) + local next_link_closing_index = find_next_link_closing_index(t, closing_index + 4) + local next_link_content = collect_link_content(t, closing_index + 3, next_link_closing_index - 1) + local r = self.lookup_reference(next_link_content) + + if r then + local inline_content = resolve_inline_following_content(t, next_link_closing_index, false, + t.match_link_attributes) + r.attributes = join_attributes(r.attributes, inline_content.attributes) + render_link_or_image(t, opening_index, next_link_closing_index, closing_index, r) + end + end + +% \end{macrocode} +% \begin{markdown} +% +% Resolve a collapsed link [a][] from the delimiters at `opening_index` and `closing_index` +% within a delimiter table `t`. +% Continue if a tag `a` is not found in the references. +% +% \end{markdown} +% \begin{macrocode} + local function resolve_collapsed_link(t, opening_index, closing_index) + local next_link_closing_index = find_next_link_closing_index(t, closing_index + 4) + local content = collect_link_content(t, opening_index + 1, closing_index - 1) + local r = self.lookup_reference(content) + + if r then + local inline_content = resolve_inline_following_content(t, closing_index, false, t.match_link_attributes) + r.attributes = join_attributes(r.attributes, inline_content.attributes) + render_link_or_image(t, opening_index, next_link_closing_index, closing_index, r) + end end - parsers.direct_link_tail = parsers.spnl - * parsers.lparent - * (parsers.url + Cc("")) -- link can be empty [foo]() - * parsers.optionaltitle - * parsers.rparent +% \end{macrocode} +% \begin{markdown} +% +% Parse a table of link and emphasis delimiters `t`. +% First, iterate over the link delimiters and produce either link or image macros. +% Then run `process_emphasis` over the entire delimiter table, resolving emphasis and strong +% emphasis and parsing any content outside of closed delimiters. +% +% \end{markdown} +% \begin{macrocode} + local function process_links_and_emphasis(t) + for _,value in ipairs(t) do + value.is_active = true + end + + for i,value in ipairs(t) do + if not value.is_closing or + value.type ~= "delimiter" or + not (value.element == "link" or value.element == "image") then + goto continue + end + + local opener_position = find_link_opener(t, 1, i - 1) + if (opener_position == nil) then + goto continue + end + + local opening_delimiter = t[opener_position] + opening_delimiter.removed = true + + local link_type = opening_delimiter.link_type + + if (link_type == "inline") then + resolve_inline_link(t, opener_position, i) + end + if (link_type == "shortcut") then + resolve_shortcut_link(t, opener_position, i) + end + if (link_type == "full") then + resolve_full_link(t, opener_position, i) + end + if (link_type == "collapsed") then + resolve_collapsed_link(t, opener_position, i) + end + + ::continue:: + end - parsers.direct_link = (parsers.tag / self.parser_functions.parse_inlines_no_link) - * parsers.direct_link_tail + t[#t].content = t[#t].content:gsub("%s*$","") + + process_emphasis(t, 1, #t) + local final_result = collect_emphasis_content(t, 1, #t) + return final_result + end + + function self.defer_link_and_emphasis_processing(delimiter_table) + return writer.defer_call(function() + return process_links_and_emphasis(delimiter_table) + end) + end - parsers.direct_image = parsers.exclamation - * (parsers.tag / self.parser_functions.parse_inlines) - * parsers.direct_link_tail % \end{macrocode} % \par % \begin{markdown} @@ -24942,7 +28681,7 @@ function M.reader.new(writer, options) parsers.Str = (parsers.normalchar * (parsers.normalchar + parsers.at)^0) / writer.string - parsers.Symbol = (V("SpecialChar") - parsers.tightblocksep) + parsers.Symbol = (parsers.backtick^1 + V("SpecialChar")) / writer.string parsers.Ellipsis = P("...") / writer.ellipsis @@ -24954,83 +28693,112 @@ function M.reader.new(writer, options) if options.blankBeforeBlockquote then parsers.bqstart = parsers.fail else - parsers.bqstart = parsers.more + parsers.bqstart = parsers.blockquote_start end if options.blankBeforeHeading then parsers.headerstart = parsers.fail else - parsers.headerstart = parsers.hash - + (parsers.line * (parsers.equal^1 + parsers.dash^1) - * parsers.optionalspace * parsers.newline) + parsers.headerstart = parsers.atx_heading + end + + if options.blankBeforeList then + parsers.interrupting_bullets = parsers.fail + parsers.interrupting_enumerators = parsers.fail + else + parsers.interrupting_bullets = parsers.bullet(parsers.dash, true) + + parsers.bullet(parsers.asterisk, true) + + parsers.bullet(parsers.plus, true) + + parsers.interrupting_enumerators = parsers.enumerator(parsers.period, true) + + parsers.enumerator(parsers.rparent, true) + end + + if options.html then + parsers.html_interrupting = parsers.check_trail + * ( parsers.html_incomplete_open_tag + + parsers.html_incomplete_close_tag + + parsers.html_incomplete_open_special_tag + + parsers.html_comment_start + + parsers.html_cdatasection_start + + parsers.html_declaration_start + + parsers.html_instruction_start + - parsers.html_close_special_tag + - parsers.html_empty_special_tag) + else + parsers.html_interrupting = parsers.fail end parsers.EndlineExceptions = parsers.blankline -- paragraph break - + parsers.tightblocksep -- nested list + parsers.eof -- end of document + parsers.bqstart + + parsers.thematic_break_lines + + parsers.interrupting_bullets + + parsers.interrupting_enumerators + parsers.headerstart + + parsers.html_interrupting - parsers.Endline = parsers.newline - * -V("EndlineExceptions") - * parsers.spacechar^0 - / (options.hardLineBreaks and writer.hard_line_break - or writer.space) + parsers.NoSoftLineBreakEndlineExceptions = parsers.EndlineExceptions + parsers.endline = parsers.newline + * (parsers.check_minimal_indent + * -V("EndlineExceptions") + + parsers.check_optional_indent + * -V("EndlineExceptions") + * -parsers.starter) + * parsers.spacechar^0 + + parsers.Endline = parsers.endline + / writer.soft_line_break + + parsers.EndlineNoSub = parsers.endline + + parsers.NoSoftLineBreakEndline + = parsers.newline + * (parsers.check_minimal_indent + * -V("NoSoftLineBreakEndlineExceptions") + + parsers.check_optional_indent + * -V("NoSoftLineBreakEndlineExceptions") + * -parsers.starter) + * parsers.spacechar^0 + / writer.space + + parsers.EndlineBreak = parsers.backslash * parsers.Endline + / writer.hard_line_break + parsers.OptionalIndent = parsers.spacechar^1 / writer.space - parsers.Space = parsers.spacechar^2 * parsers.Endline / writer.hard_line_break - + parsers.spacechar^1 * parsers.Endline^-1 * parsers.eof / "" + parsers.Space = parsers.spacechar^2 * parsers.Endline + / writer.hard_line_break + + parsers.spacechar^1 * parsers.Endline^-1 * parsers.eof / self.expandtabs + + parsers.spacechar^1 * parsers.Endline + / writer.soft_line_break + + parsers.spacechar^1 * -parsers.newline / self.expandtabs + + parsers.NoSoftLineBreakSpace + = parsers.spacechar^2 * parsers.Endline + / writer.hard_line_break + + parsers.spacechar^1 * parsers.Endline^-1 * parsers.eof / self.expandtabs + parsers.spacechar^1 * parsers.Endline - * parsers.optionalspace - / (options.hardLineBreaks - and writer.hard_line_break - or writer.space) - + parsers.spacechar^1 * parsers.optionalspace - / writer.space + / writer.soft_line_break + + parsers.spacechar^1 * -parsers.newline / self.expandtabs parsers.NonbreakingEndline - = parsers.newline - * -V("EndlineExceptions") - * parsers.spacechar^0 - / (options.hardLineBreaks and writer.hard_line_break - or writer.nbsp) + = parsers.endline + / writer.soft_line_break parsers.NonbreakingSpace - = parsers.spacechar^2 * parsers.Endline / writer.hard_line_break + = parsers.spacechar^2 * parsers.Endline + / writer.hard_line_break + parsers.spacechar^1 * parsers.Endline^-1 * parsers.eof / "" + parsers.spacechar^1 * parsers.Endline * parsers.optionalspace - / (options.hardLineBreaks - and writer.hard_line_break - or writer.nbsp) + / writer.soft_line_break + parsers.spacechar^1 * parsers.optionalspace / writer.nbsp - if options.underscores then - parsers.Strong = ( parsers.between(parsers.Inline, parsers.doubleasterisks, - parsers.doubleasterisks) - + parsers.between(parsers.Inline, parsers.doubleunderscores, - parsers.doubleunderscores) - ) / writer.strong - - parsers.Emph = ( parsers.between(parsers.Inline, parsers.asterisk, - parsers.asterisk) - + parsers.between(parsers.Inline, parsers.underscore, - parsers.underscore) - ) / writer.emphasis - else - parsers.Strong = ( parsers.between(parsers.Inline, parsers.doubleasterisks, - parsers.doubleasterisks) - ) / writer.strong - - parsers.Emph = ( parsers.between(parsers.Inline, parsers.asterisk, - parsers.asterisk) - ) / writer.emphasis - end - % \end{macrocode} % \par % \begin{markdown} @@ -25046,7 +28814,6 @@ function self.auto_link_url(url, attributes) return writer.link(writer.escape(url), url, nil, attributes) end - % \end{macrocode} % \par % \begin{markdown} @@ -25074,39 +28841,21 @@ end = parsers.auto_link_relative_reference / self.auto_link_url - parsers.DirectLink = parsers.direct_link - / writer.link - - parsers.IndirectLink = parsers.indirect_link - / indirect_link - - -- parse a link or image (direct or indirect) - parsers.Link = parsers.DirectLink + parsers.IndirectLink - - parsers.DirectImage = parsers.direct_image - / writer.image - - parsers.IndirectImage = parsers.indirect_image - / indirect_image - - parsers.Image = parsers.DirectImage + parsers.IndirectImage - - -- avoid parsing long strings of * or _ as emph/strong - parsers.UlOrStarLine = parsers.asterisk^4 + parsers.underscore^4 - / writer.string + parsers.LinkAndEmph = Ct(parsers.link_and_emph_table) + / self.defer_link_and_emphasis_processing parsers.EscapedChar = parsers.backslash * C(parsers.escapable) / writer.string - parsers.InlineHtml = parsers.emptyelt_any / writer.inline_html_tag - + (parsers.htmlcomment / self.parser_functions.parse_inlines_no_html) - / writer.inline_html_comment - + parsers.htmlinstruction - + parsers.openelt_any / writer.inline_html_tag - + parsers.closeelt_any / writer.inline_html_tag + parsers.InlineHtml = Cs(parsers.html_inline_comment) / writer.inline_html_comment + + Cs(parsers.html_any_empty_inline_tag + + parsers.html_inline_instruction + + parsers.html_inline_cdatasection + + parsers.html_inline_declaration + + parsers.html_any_open_inline_tag + + parsers.html_any_close_tag) + / writer.inline_html_tag - parsers.HtmlEntity = parsers.hexentity / entities.hex_entity / writer.string - + parsers.decentity / entities.dec_entity / writer.string - + parsers.tagentity / entities.char_entity / writer.string + parsers.HtmlEntity = parsers.html_entities / writer.string % \end{macrocode} % \par % \begin{markdown} @@ -25115,40 +28864,40 @@ end % % \end{markdown} % \begin{macrocode} - parsers.DisplayHtml = (parsers.htmlcomment / self.parser_functions.parse_blocks_nested) - / writer.block_html_comment - + parsers.emptyelt_block / writer.block_html_element - + parsers.openelt_exact("hr") / writer.block_html_element - + parsers.in_matched_block_tags / writer.block_html_element - + parsers.htmlinstruction + parsers.DisplayHtml = Cs(parsers.check_trail + * ( parsers.html_comment + + parsers.html_special_block + + parsers.html_block + + parsers.html_any_block + + parsers.html_instruction + + parsers.html_cdatasection + + parsers.html_declaration)) + / writer.block_html_element - parsers.Verbatim = Cs( (parsers.blanklines - * ((parsers.indentedline - parsers.blankline))^1)^1 - ) / self.expandtabs / writer.verbatim + parsers.indented_non_blank_line = parsers.indentedline - parsers.blankline - parsers.BlockquoteExceptions = parsers.leader * parsers.more - + parsers.blankline + parsers.Verbatim = Cs( + parsers.check_code_trail + * (parsers.line - parsers.blankline) + * ((parsers.check_minimal_blank_indent_and_full_code_trail * parsers.blankline)^0 + * ((parsers.check_minimal_indent / "") * parsers.check_code_trail + * (parsers.line - parsers.blankline))^1)^0 + ) / self.expandtabs / writer.verbatim - parsers.Blockquote = Cs(parsers.blockquote_body^1) - / self.parser_functions.parse_blocks_nested + parsers.Blockquote = parsers.blockquote_body / writer.blockquote - parsers.ThematicBreak = ( parsers.lineof(parsers.asterisk) - + parsers.lineof(parsers.dash) - + parsers.lineof(parsers.underscore) - ) / writer.thematic_break + parsers.ThematicBreak = parsers.thematic_break_lines + / writer.thematic_break parsers.Reference = parsers.define_reference_parser - * parsers.blankline^1 / self.register_link - parsers.Paragraph = parsers.nonindentspace * Ct(parsers.Inline^1) - * ( parsers.newline - * ( parsers.blankline^1 - + #V("EndlineExceptions") - ) - + parsers.eof) - / writer.paragraph + parsers.Paragraph = parsers.freeze_trail + * (Ct((parsers.Inline)^1) + * (parsers.newline + parsers.eof) + * parsers.unfreeze_trail + / writer.paragraph) parsers.Plain = parsers.nonindentspace * Ct(parsers.Inline^1) / writer.plain @@ -25160,7 +28909,6 @@ end % % \end{markdown} % \begin{macrocode} - parsers.starter = parsers.bullet + parsers.enumerator if options.taskLists then parsers.tickbox = ( parsers.ticked_box @@ -25171,43 +28919,117 @@ end parsers.tickbox = parsers.fail end - -- we use \001 as a separator between a tight list item and a - -- nested list under it. - parsers.NestedList = Cs((parsers.optionallyindentedline - - parsers.starter)^1) - / function(a) return "\001"..a end - - parsers.ListBlockLine = parsers.optionallyindentedline - - parsers.blankline - (parsers.indent^-1 - * parsers.starter) - - parsers.ListBlock = parsers.line * parsers.ListBlockLine^0 - - parsers.ListContinuationBlock = parsers.blanklines * (parsers.indent / "") - * parsers.ListBlock + parsers.list_blank = parsers.conditionally_indented_blankline + + parsers.ref_or_block_list_separated = parsers.sep_group_no_output(parsers.list_blank) + * parsers.minimally_indented_ref + + parsers.block_sep_group(parsers.list_blank) + * parsers.minimally_indented_block + + parsers.ref_or_block_non_separated = parsers.minimally_indented_ref + + (parsers.succeed / writer.interblocksep) + * parsers.minimally_indented_block + - parsers.minimally_indented_blankline + + parsers.tight_list_loop_body_pair = + parsers.create_loop_body_pair(parsers.ref_or_block_non_separated, + parsers.minimally_indented_par_or_plain_no_blank, + (parsers.succeed / writer.interblocksep), + (parsers.succeed / writer.paragraphsep)) + + parsers.loose_list_loop_body_pair = + parsers.create_loop_body_pair(parsers.ref_or_block_list_separated, + parsers.minimally_indented_par_or_plain, + parsers.block_sep_group(parsers.list_blank), + parsers.par_sep_group(parsers.list_blank)) + + parsers.tight_list_content_loop = V("Block") + * parsers.tight_list_loop_body_pair.block^0 + + (V("Paragraph") + V("Plain")) + * parsers.ref_or_block_non_separated + * parsers.tight_list_loop_body_pair.block^0 + + (V("Paragraph") + V("Plain")) + * parsers.tight_list_loop_body_pair.par^0 + + parsers.loose_list_content_loop = V("Block") + * parsers.loose_list_loop_body_pair.block^0 + + (V("Paragraph") + V("Plain")) + * parsers.ref_or_block_list_separated + * parsers.loose_list_loop_body_pair.block^0 + + (V("Paragraph") + V("Plain")) + * parsers.loose_list_loop_body_pair.par^0 + + parsers.list_item_tightness_condition = -#( parsers.list_blank^0 + * parsers.minimally_indented_ref_or_block_or_par) + * remove_indent("li") + + remove_indent("li") + * parsers.fail + + parsers.indented_content_tight = Ct( (parsers.blankline / "") + * #parsers.list_blank + * remove_indent("li") + + ( (V("Reference") + (parsers.blankline / "")) + * parsers.check_minimal_indent + * parsers.tight_list_content_loop + + (V("Reference") + (parsers.blankline / "")) + + (parsers.tickbox^-1 / writer.escape) + * parsers.tight_list_content_loop + ) + * parsers.list_item_tightness_condition + ) + + parsers.indented_content_loose = Ct( (parsers.blankline / "") + * #parsers.list_blank + + ( (V("Reference") + (parsers.blankline / "")) + * parsers.check_minimal_indent + * parsers.loose_list_content_loop + + (V("Reference") + (parsers.blankline / "")) + + (parsers.tickbox^-1 / writer.escape) + * parsers.loose_list_content_loop + ) + ) parsers.TightListItem = function(starter) - return -parsers.ThematicBreak - * (Cs(starter / "" * parsers.tickbox^-1 * parsers.ListBlock * parsers.NestedList^-1) - / self.parser_functions.parse_blocks_nested) - * -(parsers.blanklines * parsers.indent) + return -parsers.ThematicBreak + * parsers.add_indent(starter, "li") + * parsers.indented_content_tight end parsers.LooseListItem = function(starter) - return -parsers.ThematicBreak - * Cs( starter / "" * parsers.tickbox^-1 * parsers.ListBlock * Cc("\n") - * (parsers.NestedList + parsers.ListContinuationBlock^0) - * (parsers.blanklines / "\n\n") - ) / self.parser_functions.parse_blocks_nested + return -parsers.ThematicBreak + * parsers.add_indent(starter, "li") + * parsers.indented_content_loose + * remove_indent("li") end - parsers.BulletList = ( Ct(parsers.TightListItem(parsers.bullet)^1) * Cc(true) - * parsers.skipblanklines * -parsers.bullet - + Ct(parsers.LooseListItem(parsers.bullet)^1) * Cc(false) - * parsers.skipblanklines ) - / writer.bulletlist + parsers.BulletListOfType = function(bullet_type) + local bullet = parsers.bullet(bullet_type) + return ( Ct( parsers.TightListItem(bullet) + * ( (parsers.check_minimal_indent / "") + * parsers.TightListItem(bullet) + )^0 + ) + * Cc(true) + * -#( (parsers.list_blank^0 / "") + * parsers.check_minimal_indent + * (bullet - parsers.ThematicBreak) + ) + + Ct( parsers.LooseListItem(bullet) + * ( (parsers.list_blank^0 / "") + * (parsers.check_minimal_indent / "") + * parsers.LooseListItem(bullet) + )^0 + ) + * Cc(false) + ) / writer.bulletlist + end + + parsers.BulletList = parsers.BulletListOfType(parsers.dash) + + parsers.BulletListOfType(parsers.asterisk) + + parsers.BulletListOfType(parsers.plus) - local function ordered_list(items,tight,startnum) + local function ordered_list(items,tight,starter) + local startnum = starter[2][1] if options.startNumber then startnum = tonumber(startnum) or 1 -- fallback for '#' if startnum ~= nil then @@ -25219,14 +29041,23 @@ end return writer.orderedlist(items,tight,startnum) end - parsers.OrderedList = Cg(parsers.enumerator, "listtype") * - ( Ct(parsers.TightListItem(Cb("listtype")) - * parsers.TightListItem(parsers.enumerator)^0) - * Cc(true) * parsers.skipblanklines * -parsers.enumerator - + Ct(parsers.LooseListItem(Cb("listtype")) - * parsers.LooseListItem(parsers.enumerator)^0) - * Cc(false) * parsers.skipblanklines - ) * Cb("listtype") / ordered_list + parsers.OrderedListOfType = function(delimiter_type) + local enumerator = parsers.enumerator(delimiter_type) + return Cg(enumerator, "listtype") + * (Ct( parsers.TightListItem(Cb("listtype")) + * ((parsers.check_minimal_indent / "") * parsers.TightListItem(enumerator))^0) + * Cc(true) + * -#((parsers.list_blank^0 / "") + * parsers.check_minimal_indent * enumerator) + + Ct( parsers.LooseListItem(Cb("listtype")) + * ((parsers.list_blank^0 / "") + * (parsers.check_minimal_indent / "") * parsers.LooseListItem(enumerator))^0) + * Cc(false) + ) * Ct(Cb("listtype")) / ordered_list + end + + parsers.OrderedList = parsers.OrderedListOfType(parsers.period) + + parsers.OrderedListOfType(parsers.rparent) % \end{macrocode} % \par % \begin{markdown} @@ -25237,7 +29068,6 @@ end % \begin{macrocode} parsers.Blank = parsers.blankline / "" + V("Reference") - + (parsers.tightblocksep / "\n") % \end{macrocode} % \par % \begin{markdown} @@ -25246,22 +29076,45 @@ end % % \end{markdown} % \begin{macrocode} + function parsers.parse_heading_text(s) + local inlines = self.parser_functions.parse_inlines(s) + local flatten_inlines = self.writer.flatten_inlines + self.writer.flatten_inlines = true + local flat_text = self.parser_functions.parse_inlines(s) + flat_text = util.rope_to_string(flat_text) + self.writer.flatten_inlines = flatten_inlines + return {flat_text, inlines} + end + -- parse atx header - parsers.AtxHeading = Cg(parsers.heading_start, "level") - * parsers.optionalspace - * (C(parsers.line) + parsers.AtxHeading = parsers.check_trail_no_rem + * Cg(parsers.heading_start, "level") + * ((C( parsers.optionalspace + * parsers.hash^0 + * parsers.optionalspace + * parsers.newline) + + parsers.spacechar^1 + * C(parsers.line)) / strip_atx_end - / self.parser_functions.parse_inlines) + / parsers.parse_heading_text) * Cb("level") / writer.heading - parsers.SetextHeading = #(parsers.line * S("=-")) - * Ct(parsers.linechar^1 - / self.parser_functions.parse_inlines) - * parsers.newline - * parsers.heading_level - * parsers.optionalspace + parsers.heading_line = parsers.linechar^1 + - parsers.thematic_break_lines + + parsers.heading_text = parsers.heading_line + * ((V("Endline") / "\n") * (parsers.heading_line - parsers.heading_level))^0 + * parsers.newline^-1 + + parsers.SetextHeading = parsers.freeze_trail * parsers.check_trail_no_rem + * #(parsers.heading_text + * parsers.check_minimal_indent * parsers.check_trail * parsers.heading_level) + * Cs(parsers.heading_text) + / parsers.parse_heading_text + * parsers.check_minimal_indent_and_trail * parsers.heading_level * parsers.newline + * parsers.unfreeze_trail / writer.heading parsers.Heading = parsers.AtxHeading + parsers.SetextHeading @@ -25364,12 +29217,42 @@ end Blocks = V("InitializeState") * ( V("ExpectedJekyllData") - * (V("Blank")^0 / writer.interblocksep))^-1 + * (V("Blank")^0 / writer.interblocksep) + )^-1 * V("Blank")^0 - * V("Block")^-1 - * ( V("Blank")^0 / writer.interblocksep - * V("Block"))^0 - * V("Blank")^0 * parsers.eof, +% \end{macrocode} +% \par +% \begin{markdown} +% +% Only create interblock separators between pairs of blocks that are not +% both paragraphs. Between a pair of paragraphs, any number of blank +% lines will always produce a paragraph separator. +% +% \end{markdown} +% \begin{macrocode} + * ( V("Block") + * ( V("Blank")^0 * parsers.eof + + ( V("Blank")^2 / writer.paragraphsep + + V("Blank")^0 / writer.interblocksep + ) + ) + + ( V("Paragraph") + V("Plain") ) + * ( V("Blank")^0 * parsers.eof + + ( V("Blank")^2 / writer.paragraphsep + + V("Blank")^0 / writer.interblocksep + ) + ) + * V("Block") + * ( V("Blank")^0 * parsers.eof + + ( V("Blank")^2 / writer.paragraphsep + + V("Blank")^0 / writer.interblocksep + ) + ) + + ( V("Paragraph") + V("Plain") ) + * ( V("Blank")^0 * parsers.eof + + V("Blank")^0 / writer.paragraphsep + ) + )^0, ExpectedJekyllData = parsers.fail, @@ -25381,23 +29264,25 @@ end ThematicBreak = parsers.ThematicBreak, BulletList = parsers.BulletList, OrderedList = parsers.OrderedList, - Heading = parsers.Heading, DisplayHtml = parsers.DisplayHtml, + Heading = parsers.Heading, Paragraph = parsers.Paragraph, Plain = parsers.Plain, EndlineExceptions = parsers.EndlineExceptions, - BlockquoteExceptions = parsers.BlockquoteExceptions, + NoSoftLineBreakEndlineExceptions + = parsers.NoSoftLineBreakEndlineExceptions, Str = parsers.Str, Space = parsers.Space, + NoSoftLineBreakSpace = parsers.NoSoftLineBreakSpace, OptionalIndent = parsers.OptionalIndent, Endline = parsers.Endline, - UlOrStarLine = parsers.UlOrStarLine, - Strong = parsers.Strong, - Emph = parsers.Emph, - Link = parsers.Link, - Image = parsers.Image, + EndlineNoSub = parsers.EndlineNoSub, + NoSoftLineBreakEndline + = parsers.NoSoftLineBreakEndline, + EndlineBreak = parsers.EndlineBreak, + LinkAndEmph = parsers.LinkAndEmph, Code = parsers.Code, AutoLinkUrl = parsers.AutoLinkUrl, AutoLinkEmail = parsers.AutoLinkEmail, @@ -25500,13 +29385,26 @@ end % \end{markdown} % \begin{macrocode} self.initialize_named_group = function(name, value) + local pattern = Ct("") + if value ~= nil then + pattern = pattern / value + end syntax.InitializeState = syntax.InitializeState - * Cg(Ct("") / value, name) + * Cg(pattern, name) end % \end{macrocode} % \par % \begin{markdown} % +% Add a named group for indentation. +% +% \end{markdown} +% \begin{macrocode} + self.initialize_named_group("indent_info") +% \end{macrocode} +% \par +% \begin{markdown} +% % Apply syntax extensions. % % \end{markdown} @@ -25578,20 +29476,6 @@ end % \par % \begin{markdown} % -% Duplicate the `Inline` rule as `IndentedInline` with the right-hand-side -% terminal symbol `Space` replaced with `OptionalIndent`. -% -% \end{markdown} -% \begin{macrocode} - walkable_syntax["IndentedInline"] = util.table_copy( - walkable_syntax["Inline"]) - self.insert_pattern( - "IndentedInline instead of Space", - "OptionalIndent") -% \end{macrocode} -% \par -% \begin{markdown} -% % Materialize \luamref{walkable_syntax} and merge it into \luamref{syntax} to % produce the complete \acro{peg} grammar of markdown. Whenever a rule exists % in both \luamref{walkable_syntax} and \luamref{syntax}, the rule from @@ -25607,7 +29491,7 @@ end % \begin{markdown} % % Although the interface of the \luamref{reader->insert_pattern} method does -% document this (see Section <#sec:lua-user-extensions>), we allow the +% not document this (see Section <#sec:lua-user-extensions>), we allow the % \luamref{reader->insert_pattern} and \luamref{reader->update_rule} % methods to insert not just \acro{peg} patterns, but also rule names that % reference the \acro{peg} grammar of Markdown. @@ -25667,6 +29551,15 @@ end syntax.AutoLinkRelativeReference = parsers.fail end + if options.contentLevel == "inline" then + syntax[1] = "Inlines" + syntax.Inlines = V("InitializeState") + * parsers.Inline^0 + * ( parsers.spacing^0 + * parsers.eof / "") + syntax.Space = parsers.Space + parsers.blankline / writer.space + end + local blocks_nested_t = util.table_copy(syntax) blocks_nested_t.ExpectedJekyllData = parsers.fail parsers.blocks_nested = Ct(blocks_nested_t) @@ -25681,10 +29574,6 @@ end * parsers.eof / "") parsers.inlines = Ct(inlines_t) - local inlines_no_link_t = util.table_copy(inlines_t) - inlines_no_link_t.Link = parsers.fail - parsers.inlines_no_link = Ct(inlines_no_link_t) - local inlines_no_inline_note_t = util.table_copy(inlines_t) inlines_no_inline_note_t.InlineNote = parsers.fail parsers.inlines_no_inline_note = Ct(inlines_no_inline_note_t) @@ -25699,6 +29588,11 @@ end inlines_nbsp_t.Endline = parsers.NonbreakingEndline inlines_nbsp_t.Space = parsers.NonbreakingSpace parsers.inlines_nbsp = Ct(inlines_nbsp_t) + + local inlines_no_link_or_emphasis_t = util.table_copy(inlines_t) + inlines_no_link_or_emphasis_t.LinkAndEmph = parsers.fail + inlines_no_link_or_emphasis_t.EndlineExceptions = parsers.EndlineExceptions - parsers.eof + parsers.inlines_no_link_or_emphasis = Ct(inlines_no_link_or_emphasis_t) % \end{macrocode} % \par % \begin{markdown} @@ -25831,6 +29725,7 @@ M.extensions.bracketed_spans = function() % \end{markdown} % \begin{macrocode} function self.span(s, attr) + if self.flatten_inlines then return s end return {"\\markdownRendererBracketedSpanAttributeContextBegin", self.attributes(attr), s, @@ -25840,13 +29735,25 @@ M.extensions.bracketed_spans = function() local parsers = self.parsers local writer = self.writer - local Span = parsers.between(parsers.Inline, - parsers.lbracket, - parsers.rbracket) + local span_label = parsers.lbracket + * (Cs((parsers.alphanumeric^1 + + parsers.inticks + + parsers.autolink + + V("InlineHtml") + + ( parsers.backslash * parsers.backslash) + + ( parsers.backslash * (parsers.lbracket + parsers.rbracket) + + V("Space") + V("Endline") + + (parsers.any + - (parsers.newline + parsers.lbracket + parsers.rbracket + + parsers.blankline^2))))^1) + / self.parser_functions.parse_inlines) + * parsers.rbracket + + local Span = span_label * Ct(parsers.attributes) / writer.span - self.insert_pattern("Inline after Emph", + self.insert_pattern("Inline before LinkAndEmph", Span, "Span") end } @@ -25888,11 +29795,24 @@ M.extensions.citations = function(citation_nbsps) % \end{markdown} % \begin{macrocode} function self.citations(text_cites, cites) - local buffer = {"\\markdownRenderer", text_cites and "TextCite" or "Cite", - "{", #cites, "}"} - for _,cite in ipairs(cites) do - buffer[#buffer+1] = {cite.suppress_author and "-" or "+", "{", - cite.prenote or "", "}{", cite.postnote or "", "}{", cite.name, "}"} + local buffer = {} + if self.flatten_inlines then + for _,cite in ipairs(cites) do + if cite.prenote then + table.insert(buffer, {cite.prenote, " "}) + end + table.insert(buffer, cite.name) + if cite.postnote then + table.insert(buffer, {" ", cite.postnote}) + end + end + else + table.insert(buffer, {"\\markdownRenderer", text_cites and "TextCite" or "Cite", + "{", #cites, "}"}) + for _,cite in ipairs(cites) do + table.insert(buffer, {cite.suppress_author and "-" or "+", "{", + cite.prenote or "", "}{", cite.postnote or "", "}{", cite.name, "}"}) + end end return buffer end @@ -25919,42 +29839,51 @@ M.extensions.citations = function(citation_nbsps) = Cs((parsers.alphanumeric^1 + parsers.bracketed + parsers.inticks + + parsers.autolink + + V("InlineHtml") + + V("Space") + V("Endline") + (parsers.anyescaped - - (parsers.rbracket + parsers.blankline^2)) + - (parsers.newline + parsers.rbracket + parsers.blankline^2)) - (parsers.spnl * parsers.dash^-1 * parsers.at))^0) local citation_body_postnote = Cs((parsers.alphanumeric^1 + parsers.bracketed + parsers.inticks + + parsers.autolink + + V("InlineHtml") + + V("Space") + V("Endline") + (parsers.anyescaped - - (parsers.rbracket + parsers.semicolon + - (parsers.newline + parsers.rbracket + parsers.semicolon + parsers.blankline^2)) - (parsers.spnl * parsers.rbracket))^0) local citation_body_chunk = citation_body_prenote - * parsers.spnl * citation_name + * parsers.spnlc * citation_name * (parsers.internal_punctuation - parsers.semicolon)^-1 - * parsers.spnl * citation_body_postnote + * parsers.spnlc * citation_body_postnote local citation_body = citation_body_chunk - * (parsers.semicolon * parsers.spnl + * (parsers.semicolon * parsers.spnlc * citation_body_chunk)^0 local citation_headless_body_postnote = Cs((parsers.alphanumeric^1 + parsers.bracketed + parsers.inticks + + parsers.autolink + + V("InlineHtml") + + V("Space") + V("Endline") + (parsers.anyescaped - - (parsers.rbracket + parsers.at + - (parsers.newline + parsers.rbracket + parsers.at + parsers.semicolon + parsers.blankline^2)) - (parsers.spnl * parsers.rbracket))^0) local citation_headless_body = citation_headless_body_postnote - * (parsers.sp * parsers.semicolon * parsers.spnl + * (parsers.sp * parsers.semicolon * parsers.spnlc * citation_body_chunk)^0 local citations @@ -25983,10 +29912,10 @@ M.extensions.citations = function(citation_nbsps) end local TextCitations - = Ct((parsers.spnl + = Ct((parsers.spnlc * Cc("") * citation_name - * ((parsers.spnl + * ((parsers.spnlc * parsers.lbracket * citation_headless_body * parsers.rbracket) + Cc("")))^1) @@ -25995,7 +29924,7 @@ M.extensions.citations = function(citation_nbsps) end local ParenthesizedCitations - = Ct((parsers.spnl + = Ct((parsers.spnlc * parsers.lbracket * citation_body * parsers.rbracket)^1) @@ -26005,7 +29934,7 @@ M.extensions.citations = function(citation_nbsps) local Citations = TextCitations + ParenthesizedCitations - self.insert_pattern("Inline after Emph", + self.insert_pattern("Inline before LinkAndEmph", Citations, "Citations") self.add_special_character("@") @@ -26018,7 +29947,7 @@ end % %#### Content Blocks % -% The \luamdef{extensions.content_blocks} function implements the iA\,Writer +% The \luamdef{extensions.content_blocks} function implements the iA\\,Writer % content blocks syntax extension. The `language_map` parameter specifies % the filename of the \acro{JSON} file that maps filename extensions to % programming language names. @@ -26068,7 +29997,7 @@ M.extensions.content_blocks = function(language_map) % \begin{markdown} % % Define \luamdef{writer->contentblock} as a function that will transform an -% input iA\,Writer content block to the output format, where `src` +% input iA\\,Writer content block to the output format, where `src` % corresponds to the \acro{uri} prefix, `suf` to the \acro{uri} extension, % `type` to the type of the content block (`localfile` or `onlineimage`), % and `tit` to the title of the content block. @@ -26135,6 +30064,7 @@ M.extensions.content_blocks = function(language_map) = (parsers.less * Cs((parsers.anyescaped - parsers.more + - parsers.spacing - #(parsers.period * onlineimagesuffix * parsers.more @@ -26167,7 +30097,7 @@ M.extensions.content_blocks = function(language_map) * Cc("localfile") local ContentBlock - = parsers.leader + = parsers.check_trail_no_rem * (localfilepath + onlineimageurl) * contentblock_tail / writer.contentblock @@ -26234,18 +30164,26 @@ M.extensions.definition_lists = function(tight_lists) local defstartchar = S("~:") - local defstart = ( defstartchar * #parsers.spacing + local defstart = parsers.check_trail_length(0) * defstartchar * #parsers.spacing * (parsers.tab + parsers.space^-3) - + parsers.space * defstartchar * #parsers.spacing + + parsers.check_trail_length(1) * defstartchar * #parsers.spacing * (parsers.tab + parsers.space^-2) - + parsers.space * parsers.space * defstartchar - * #parsers.spacing + + parsers.check_trail_length(2) * defstartchar * #parsers.spacing * (parsers.tab + parsers.space^-1) - + parsers.space * parsers.space * parsers.space - * defstartchar * #parsers.spacing - ) + + parsers.check_trail_length(3) * defstartchar * #parsers.spacing + + local indented_line = (parsers.check_minimal_indent / "") * parsers.check_code_trail * parsers.line - local dlchunk = Cs(parsers.line * (parsers.indentedline - parsers.blankline)^0) + local blank = parsers.check_minimal_blank_indent_and_any_trail * parsers.optionalspace * parsers.newline + + local dlchunk = Cs(parsers.line * (indented_line - blank)^0) + + local indented_blocks = function(bl) + return Cs( bl + * (blank^1 * (parsers.check_minimal_indent / "") + * parsers.check_code_trail * -parsers.blankline * bl)^0 + * (blank^1 + parsers.eof)) + end local function definition_list_item(term, defs, _) return { term = self.parser_functions.parse_inlines(term), @@ -26253,22 +30191,22 @@ M.extensions.definition_lists = function(tight_lists) end local DefinitionListItemLoose - = C(parsers.line) * parsers.skipblanklines - * Ct((defstart - * parsers.indented_blocks(dlchunk) - / self.parser_functions.parse_blocks_nested)^1) + = C(parsers.line) * blank^0 + * Ct((parsers.check_minimal_indent * (defstart + * indented_blocks(dlchunk) + / self.parser_functions.parse_blocks_nested))^1) * Cc(false) / definition_list_item local DefinitionListItemTight = C(parsers.line) - * Ct((defstart * dlchunk - / self.parser_functions.parse_blocks_nested)^1) + * Ct((parsers.check_minimal_indent * (defstart * dlchunk + / self.parser_functions.parse_blocks_nested))^1) * Cc(true) / definition_list_item local DefinitionList = ( Ct(DefinitionListItemLoose^1) * Cc(false) + Ct(DefinitionListItemTight^1) - * (parsers.skipblanklines + * (blank^0 * -DefinitionListItemLoose * Cc(true)) ) / writer.definitionlist @@ -26322,8 +30260,10 @@ M.extensions.fancy_lists = function() local buffer = {} local num = startnum for _,item in ipairs(items) do - buffer[#buffer + 1] = self.fancyitem(item,num) - if num ~= nil then + if item ~= "" then + buffer[#buffer + 1] = self.fancyitem(item,num) + end + if num ~= nil and item ~= "" then num = num + 1 end end @@ -26361,52 +30301,101 @@ M.extensions.fancy_lists = function() local options = self.options local writer = self.writer - local label = parsers.dig + parsers.letter - local numdelim = parsers.period + parsers.rparent - local enumerator = C(label^3 * numdelim) * #parsers.spacing - + C(label^2 * numdelim) * #parsers.spacing - * (parsers.tab + parsers.space^1) - + C(label * numdelim) * #parsers.spacing - * (parsers.tab + parsers.space^-2) - + parsers.space * C(label^2 * numdelim) - * #parsers.spacing - + parsers.space * C(label * numdelim) - * #parsers.spacing - * (parsers.tab + parsers.space^-1) - + parsers.space * parsers.space * C(label^1 - * numdelim) * #parsers.spacing - local starter = parsers.bullet + enumerator + local function combine_markers_and_delims(markers, delims) + local markers_table = {} + for _,marker in ipairs(markers) do + local start_marker + local continuation_marker + if type(marker) == "table" then + start_marker = marker[1] + continuation_marker = marker[2] + else + start_marker = marker + continuation_marker = marker + end + for _,delim in ipairs(delims) do + table.insert(markers_table, {start_marker, continuation_marker, delim}) + end + end + return markers_table + end + + local function join_table_with_func(func, markers_table) + local pattern = func(table.unpack(markers_table[1])) + for i = 2, #markers_table do + pattern = pattern + func(table.unpack(markers_table[i])) + end + return pattern + end - local NestedList = Cs((parsers.optionallyindentedline - - starter)^1) - / function(a) return "\001"..a end + local lowercase_letter_marker = R("az") + local uppercase_letter_marker = R("AZ") - local ListBlockLine = parsers.optionallyindentedline - - parsers.blankline - (parsers.indent^-1 - * starter) + local roman_marker = function(chars) + local m, d, c = P(chars[1]), P(chars[2]), P(chars[3]) + local l, x, v, i = P(chars[4]), P(chars[5]), P(chars[6]), P(chars[7]) + return m^-3 + * (c*m + c*d + d^-1 * c^-3) + * (x*c + x*l + l^-1 * x^-3) + * (i*x + i*v + v^-1 * i^-3) + end + + local lowercase_roman_marker = roman_marker({"m", "d", "c", "l", "x", "v", "i"}) + local uppercase_roman_marker = roman_marker({"M", "D", "C", "L", "X", "V", "I"}) + + local lowercase_opening_roman_marker = P("i") + local uppercase_opening_roman_marker = P("I") + + local digit_marker = parsers.dig * parsers.dig^-8 - local ListBlock = parsers.line * ListBlockLine^0 + local markers = { + {lowercase_opening_roman_marker, lowercase_roman_marker}, + {uppercase_opening_roman_marker, uppercase_roman_marker}, + lowercase_letter_marker, + uppercase_letter_marker, + lowercase_roman_marker, + uppercase_roman_marker, + digit_marker + } + + local delims = { + parsers.period, + parsers.rparent + } - local ListContinuationBlock = parsers.blanklines * (parsers.indent / "") - * ListBlock + local markers_table = combine_markers_and_delims(markers, delims) + + local function enumerator(start_marker, _, delimiter_type, interrupting) + local delimiter_range + local allowed_end + if interrupting then + delimiter_range = P("1") + allowed_end = C(parsers.spacechar^1) * #parsers.linechar + else + delimiter_range = start_marker + allowed_end = C(parsers.spacechar^1) + #(parsers.newline + parsers.eof) + end + + return parsers.check_trail + * Ct(C(delimiter_range) * C(delimiter_type)) + * allowed_end + end + + local starter = join_table_with_func(enumerator, markers_table) local TightListItem = function(starter) - return -parsers.ThematicBreak - * (Cs(starter / "" * parsers.tickbox^-1 * ListBlock * NestedList^-1) - / self.parser_functions.parse_blocks_nested) - * -(parsers.blanklines * parsers.indent) + return parsers.add_indent(starter, "li") + * parsers.indented_content_tight end local LooseListItem = function(starter) - return -parsers.ThematicBreak - * Cs( starter / "" * parsers.tickbox^-1 * ListBlock * Cc("\n") - * (NestedList + ListContinuationBlock^0) - * (parsers.blanklines / "\n\n") - ) / self.parser_functions.parse_blocks_nested + return parsers.add_indent(starter, "li") + * parsers.indented_content_loose + * remove_indent("li") end local function roman2number(roman) - local romans = { ["L"] = 50, ["X"] = 10, ["V"] = 5, ["I"] = 1 } + local romans = { ["M"] = 1000, ["D"] = 500, ["C"] = 100, ["L"] = 50, ["X"] = 10, ["V"] = 5, ["I"] = 1 } local numeral = 0 local i = 1 @@ -26425,8 +30414,7 @@ M.extensions.fancy_lists = function() return numeral end - local function sniffstyle(itemprefix) - local numstr, delimend = itemprefix:match("^([A-Za-z0-9]*)([.)]*)") + local function sniffstyle(numstr, delimend) local numdelim if delimend == ")" then numdelim = "OneParen" @@ -26435,46 +30423,72 @@ M.extensions.fancy_lists = function() else numdelim = "Default" end - numstr = numstr or itemprefix local num - num = numstr:match("^([IVXL]+)") + num = numstr:match("^([I])$") if num then return roman2number(num), "UpperRoman", numdelim end - num = numstr:match("^([ivxl]+)") + num = numstr:match("^([i])$") if num then return roman2number(string.upper(num)), "LowerRoman", numdelim end - num = numstr:match("^([A-Z])") + num = numstr:match("^([A-Z])$") if num then return string.byte(num) - string.byte("A") + 1, "UpperAlpha", numdelim end - num = numstr:match("^([a-z])") + num = numstr:match("^([a-z])$") if num then return string.byte(num) - string.byte("a") + 1, "LowerAlpha", numdelim end + num = numstr:match("^([IVXLCDM]+)") + if num then + return roman2number(num), "UpperRoman", numdelim + end + num = numstr:match("^([ivxlcdm]+)") + if num then + return roman2number(string.upper(num)), "LowerRoman", numdelim + end return math.floor(tonumber(numstr) or 1), "Decimal", numdelim end local function fancylist(items,tight,start) - local startnum, numstyle, numdelim = sniffstyle(start) + local startnum, numstyle, numdelim = sniffstyle(start[2][1], start[2][2]) return writer.fancylist(items,tight, - options.startNumber and startnum, + options.startNumber and startnum or 1, numstyle or "Decimal", numdelim or "Default") end - local FancyList = Cg(enumerator, "listtype") * - ( Ct(TightListItem(Cb("listtype")) - * TightListItem(enumerator)^0) - * Cc(true) * parsers.skipblanklines * -enumerator - + Ct(LooseListItem(Cb("listtype")) - * LooseListItem(enumerator)^0) - * Cc(false) * parsers.skipblanklines - ) * Cb("listtype") / fancylist + local FancyListOfType = function(start_marker, continuation_marker, delimiter_type) + local enumerator_start = enumerator(start_marker, continuation_marker, delimiter_type) + local enumerator_cont = enumerator(continuation_marker, continuation_marker, delimiter_type) + return Cg(enumerator_start, "listtype") + * (Ct( TightListItem(Cb("listtype")) + * ((parsers.check_minimal_indent / "") * TightListItem(enumerator_cont))^0) + * Cc(true) + * -#((parsers.conditionally_indented_blankline^0 / "") + * parsers.check_minimal_indent * enumerator_cont) + + Ct( LooseListItem(Cb("listtype")) + * ((parsers.conditionally_indented_blankline^0 / "") + * (parsers.check_minimal_indent / "") * LooseListItem(enumerator_cont))^0) + * Cc(false) + ) * Ct(Cb("listtype")) / fancylist + end + + local FancyList = join_table_with_func(FancyListOfType, markers_table) + + local Endline = parsers.newline + * (parsers.check_minimal_indent + * -parsers.EndlineExceptions + + parsers.check_optional_indent + * -parsers.EndlineExceptions + * -starter) + * parsers.spacechar^0 + / writer.soft_line_break self.update_rule("OrderedList", FancyList) + self.update_rule("Endline", Endline) end } end @@ -26523,7 +30537,7 @@ M.extensions.fenced_code = function(blank_before_code_fence, end local name = util.cache_verbatim(options.cacheDir, s) table.insert(buf, {"\\markdownRendererInputFencedCode{", - name,"}{",self.string(i),"}"}) + name,"}{",self.string(i),"}{",self.infostring(i),"}"}) if attr ~= nil then table.insert(buf, "\\markdownRendererFencedCodeAttributeContextEnd") end @@ -26556,18 +30570,52 @@ M.extensions.fenced_code = function(blank_before_code_fence, return #a >= #b and i end - local tilde_infostring - = C((parsers.linechar - - (parsers.spacechar^1 * parsers.newline))^0) + local function strip_enclosing_whitespaces(str) + return str:gsub("^%s*(.-)%s*$", "%1") + end + + local tilde_infostring = Cs(Cs((V("HtmlEntity") + + parsers.anyescaped + - parsers.newline)^0) + / strip_enclosing_whitespaces) - local backtick_infostring - = C((parsers.linechar - - (parsers.backtick - + parsers.spacechar^1 * parsers.newline))^0) + local backtick_infostring = Cs(Cs((V("HtmlEntity") + + (-#(parsers.backslash * parsers.backtick) * parsers.anyescaped) + - parsers.newline + - parsers.backtick)^0) + / strip_enclosing_whitespaces) local fenceindent + + local function has_trail(indent_table) + return indent_table ~= nil and + indent_table.trail ~= nil and + next(indent_table.trail) ~= nil + end + + local function has_indents(indent_table) + return indent_table ~= nil and + indent_table.indents ~= nil and + next(indent_table.indents) ~= nil + end + + local function get_last_indent_name(indent_table) + if has_indents(indent_table) then + return indent_table.indents[#indent_table.indents].name + end + end + + local function count_fenced_start_indent(_, _, indent_table, trail) + local last_indent_name = get_last_indent_name(indent_table) + fenceindent = 0 + if last_indent_name ~= "li" then + fenceindent = #trail + end + return true + end + local fencehead = function(char, infostring) - return C(parsers.nonindentspace) / function(s) fenceindent = #s end + return Cmt(Cb("indent_info") * parsers.check_trail, count_fenced_start_indent) * Cg(char^3, "fencelength") * parsers.optionalspace * infostring @@ -26575,52 +30623,69 @@ M.extensions.fenced_code = function(blank_before_code_fence, end local fencetail = function(char) - return parsers.nonindentspace + return parsers.check_trail_no_rem * Cmt(C(char^3) * Cb("fencelength"), captures_geq_length) * parsers.optionalspace * (parsers.newline + parsers.eof) + parsers.eof end - local fencedline = function(char) - return C(parsers.line - fencetail(char)) - / function(s) - local i = 1 - local remaining = fenceindent - while true do - local c = s:sub(i, i) - if c == " " and remaining > 0 then - remaining = remaining - 1 - i = i + 1 - elseif c == "\t" and remaining > 3 then - remaining = remaining - 4 - i = i + 1 - else - break - end - end - return s:sub(i) - end + local function process_fenced_line(s, i, indent_table, line_content, is_blank) -- luacheck: ignore s i + local remainder = "" + if has_trail(indent_table) then + remainder = indent_table.trail.internal_remainder + end + + if is_blank and get_last_indent_name(indent_table) == "li" then + remainder = "" + end + + local str = remainder .. line_content + local index = 1 + local remaining = fenceindent + + while true do + local c = str:sub(index, index) + if c == " " and remaining > 0 then + remaining = remaining - 1 + index = index + 1 + elseif c == "\t" and remaining > 3 then + remaining = remaining - 4 + index = index + 1 + else + break + end + end + + return true, str:sub(index) end + local fencedline = function(char) + return Cmt(Cb("indent_info") * C(parsers.line - fencetail(char)) * Cc(false), process_fenced_line) + end + + local blankfencedline = Cmt(Cb("indent_info") * C(parsers.blankline) * Cc(true), process_fenced_line) + local TildeFencedCode = fencehead(parsers.tilde, tilde_infostring) - * Cs(fencedline(parsers.tilde)^0) - * fencetail(parsers.tilde) + * Cs(((parsers.check_minimal_blank_indent / "") * blankfencedline + + (parsers.check_minimal_indent / "") * fencedline(parsers.tilde))^0) + * ((parsers.check_minimal_indent / "") * fencetail(parsers.tilde) + parsers.succeed) local BacktickFencedCode = fencehead(parsers.backtick, backtick_infostring) - * Cs(fencedline(parsers.backtick)^0) - * fencetail(parsers.backtick) + * Cs(((parsers.check_minimal_blank_indent / "") * blankfencedline + + (parsers.check_minimal_indent / "") * fencedline(parsers.backtick))^0) + * ((parsers.check_minimal_indent / "") * fencetail(parsers.backtick) + parsers.succeed) - local infostring_with_attributes - = Ct(C((parsers.linechar - - ( parsers.optionalspace - * parsers.attributes))^0) - * parsers.optionalspace - * Ct(parsers.attributes)) + local infostring_with_attributes + = Ct(C((parsers.linechar + - ( parsers.optionalspace + * parsers.attributes))^0) + * parsers.optionalspace + * Ct(parsers.attributes)) local FencedCode - = (TildeFencedCode + BacktickFencedCode) + = ((TildeFencedCode + BacktickFencedCode) / function(infostring, code) local expanded_code = self.expandtabs(code) @@ -26641,7 +30706,7 @@ M.extensions.fenced_code = function(blank_before_code_fence, end end return writer.fencedCode(expanded_code, infostring, attr) - end + end) self.insert_pattern("Block after Verbatim", FencedCode, "FencedCode") @@ -26695,7 +30760,7 @@ M.extensions.fenced_divs = function(blank_before_div_fence) function self.div_begin(attributes) local start_output = {"\\markdownRendererFencedDivAttributeContextBegin\n", self.attributes(attributes)} - local end_output = {"\n\\markdownRendererFencedDivAttributeContextEnd "} + local end_output = {"\\markdownRendererFencedDivAttributeContextEnd "} return self.push_attributes("div", attributes, start_output, end_output) end % \end{macrocode} @@ -26760,6 +30825,31 @@ M.extensions.fenced_divs = function(blank_before_div_fence) return Cg( Cmt(Cb("div_level"), update_div_level) , "div_level") end + + local non_fenced_div_block = parsers.check_minimal_indent * V("Block") + - parsers.check_minimal_indent_and_trail * fenced_div_end + + local non_fenced_div_paragraph = parsers.check_minimal_indent * V("Paragraph") + - parsers.check_minimal_indent_and_trail * fenced_div_end + + local blank = parsers.minimally_indented_blank + + local block_separated = parsers.block_sep_group(blank) + * non_fenced_div_block + + local loop_body_pair = parsers.create_loop_body_pair(block_separated, + non_fenced_div_paragraph, + parsers.block_sep_group(blank), + parsers.par_sep_group(blank)) + + local content_loop = ( non_fenced_div_block + * loop_body_pair.block^0 + + non_fenced_div_paragraph + * block_separated + * loop_body_pair.block^0 + + non_fenced_div_paragraph + * loop_body_pair.par^0) + * blank^0 local FencedDiv = fenced_div_begin / function (infostring) @@ -26772,14 +30862,9 @@ M.extensions.fenced_divs = function(blank_before_div_fence) / writer.div_begin * increment_div_level(1) * parsers.skipblanklines - * Ct( (V("Block") - fenced_div_end)^-1 - * ( parsers.blanklines - / function() - return writer.interblocksep - end - * (V("Block") - fenced_div_end))^0) - * parsers.skipblanklines - * fenced_div_end * increment_div_level(-1) + * Ct(content_loop) + * parsers.minimally_indented_blank^0 + * parsers.check_minimal_indent_and_trail * fenced_div_end * increment_div_level(-1) * (Cc("") / writer.div_end) self.insert_pattern("Block after Verbatim", @@ -26791,8 +30876,9 @@ M.extensions.fenced_divs = function(blank_before_div_fence) % \par % \begin{markdown} % -% Patch blockquotes, so that they allow the end of a fenced div immediately -% afterwards. +% If the `blank_before_div_fence` parameter is `false`, we will have the +% closing div at the beginning of a line break the current paragraph if +% we are currently nested in a div. % % \end{markdown} % \begin{macrocode} @@ -26804,23 +30890,6 @@ M.extensions.fenced_divs = function(blank_before_div_fence) local is_inside_div = Cmt(Cb("div_level"), check_div_level) local fencestart = is_inside_div * fenced_div_end - self.update_rule("BlockquoteExceptions", function(previous_pattern) - if previous_pattern == nil then - previous_pattern = parsers.BlockquoteExceptions - end - return previous_pattern + fencestart - end) - -% \end{macrocode} -% \par -% \begin{markdown} -% -% If the `blank_before_div_fence` parameter is `false`, we will have the -% closing div at the beginning of a line break the current paragraph if -% we are currently nested in a div. -% -% \end{markdown} -% \begin{macrocode} if not blank_before_div_fence then self.update_rule("EndlineExceptions", function(previous_pattern) if previous_pattern == nil then @@ -26850,47 +30919,58 @@ M.extensions.header_attributes = function() local parsers = self.parsers local writer = self.writer + local function strip_atx_end(s) + return s:gsub("%s+#*%s*$","") + end + local AtxHeading = Cg(parsers.heading_start, "level") * parsers.optionalspace * (C(((parsers.linechar - - ((parsers.hash^1 + - (parsers.attributes * parsers.optionalspace - * parsers.attributes^-1 - + parsers.attributes) - * parsers.optionalspace - * parsers.newline)) - * (parsers.linechar - - parsers.hash - - parsers.lbrace)^0)^1) - / self.parser_functions.parse_inlines) + * parsers.newline)) + * (parsers.linechar + - parsers.lbrace)^0)^1) + / strip_atx_end + / parsers.parse_heading_text) * Cg(Ct(parsers.newline - + (parsers.hash^1 + + (parsers.attributes * parsers.optionalspace - * parsers.attributes^-1 - + parsers.attributes) - * parsers.optionalspace - * parsers.newline), "attributes") + * parsers.newline)), "attributes") * Cb("level") * Cb("attributes") / writer.heading - local SetextHeading = #(parsers.line * S("=-")) - * (C(((parsers.linechar - - (parsers.attributes - * parsers.optionalspace - * parsers.newline)) - * (parsers.linechar - - parsers.lbrace)^0)^1) - / self.parser_functions.parse_inlines) - * Cg(Ct(parsers.newline - + (parsers.attributes - * parsers.optionalspace - * parsers.newline)), "attributes") - * parsers.heading_level - * Cb("attributes") - * parsers.optionalspace - * parsers.newline - / writer.heading + local function strip_trailing_spaces(s) + return s:gsub("%s*$","") + end + + local heading_line = (parsers.linechar + - (parsers.attributes + * parsers.optionalspace + * parsers.newline))^1 + - parsers.thematic_break_lines + + local heading_text = heading_line + * ((V("Endline") / "\n") * (heading_line - parsers.heading_level))^0 + * parsers.newline^-1 + + local SetextHeading = parsers.freeze_trail * parsers.check_trail_no_rem + * #(heading_text + * (parsers.attributes + * parsers.optionalspace + * parsers.newline)^-1 + * parsers.check_minimal_indent * parsers.check_trail * parsers.heading_level) + * Cs(heading_text) / strip_trailing_spaces + / parsers.parse_heading_text + * Cg(Ct((parsers.attributes + * parsers.optionalspace + * parsers.newline)^-1), "attributes") + * parsers.check_minimal_indent_and_trail * parsers.heading_level + * Cb("attributes") + * parsers.newline + * parsers.unfreeze_trail + / writer.heading local Heading = AtxHeading + SetextHeading self.update_rule("Heading", Heading) @@ -26985,6 +31065,48 @@ end % \end{macrocode} % \begin{markdown} % +%#### Marked text +% +% The \luamdef{extensions.mark} function implements the Pandoc mark syntax +% extension. +% +% \end{markdown} +% \begin{macrocode} +M.extensions.mark = function() + return { + name = "built-in mark syntax extension", + extend_writer = function(self) +% \end{macrocode} +% \par +% \begin{markdown} +% +% Define \luamdef{writer->mark} as a function that will transform an input +% marked text `s` to the output format. +% +% \end{markdown} +% \begin{macrocode} + function self.mark(s) + if self.flatten_inlines then return s end + return {"\\markdownRendererMark{", s, "}"} + end + end, extend_reader = function(self) + local parsers = self.parsers + local writer = self.writer + + local doubleequals = P("==") + + local Mark = parsers.between(V("Inline"), doubleequals, doubleequals) + / function (inlines) return writer.mark(inlines) end + + self.add_special_character("=") + self.insert_pattern("Inline before LinkAndEmph", + Mark, "Mark") + end + } +end +% \end{macrocode} +% \begin{markdown} +% %#### Link Attributes % % The \luamdef{extensions.link_attributes} function implements the Pandoc @@ -26998,7 +31120,6 @@ M.extensions.link_attributes = function() extend_writer = function() end, extend_reader = function(self) local parsers = self.parsers - local writer = self.writer local options = self.options % \end{macrocode} @@ -27008,13 +31129,15 @@ M.extensions.link_attributes = function() % % \end{markdown} % \begin{macrocode} - - local define_reference_parser = parsers.define_reference_parser - * ( parsers.spnl - * Ct(parsers.attributes))^-1 + local define_reference_parser = (parsers.check_trail / "") * parsers.link_label * parsers.colon + * parsers.spnlc * parsers.url + * ( parsers.spnlc_sep * parsers.title * (parsers.spnlc * Ct(parsers.attributes)) + * parsers.only_blank + + parsers.spnlc_sep * parsers.title * parsers.only_blank + + Cc("") * (parsers.spnlc * Ct(parsers.attributes)) * parsers.only_blank + + Cc("") * parsers.only_blank) local ReferenceWithAttributes = define_reference_parser - * parsers.blankline^1 / self.register_link self.update_rule("Reference", ReferenceWithAttributes) @@ -27027,93 +31150,10 @@ M.extensions.link_attributes = function() % \end{markdown} % \begin{macrocode} - local function indirect_link(label, sps, tag, - attribute_text, - attributes) - return writer.defer_call(function() - local r, fallback = self.lookup_reference(label, sps, tag, - attributes) - if r then - return writer.link( - self.parser_functions.parse_inlines_no_link(label), - r.url, r.title, r.attributes) - else - local buf = {fallback} - if attributes then - table.insert(buf, writer.string(attribute_text)) - end - return buf - end - end) - end - - local DirectLinkWithAttributes = parsers.direct_link - * (Ct(parsers.attributes))^-1 - / writer.link - - local IndirectLinkWithAttributes = parsers.indirect_link - * (C(Ct(parsers.attributes)))^-1 - / indirect_link + local LinkWithAttributesAndEmph = Ct(parsers.link_and_emph_table * Cg(Cc(true), "match_link_attributes")) + / self.defer_link_and_emphasis_processing - local LinkWithAttributes = DirectLinkWithAttributes - + IndirectLinkWithAttributes - -% \end{macrocode} -% \begin{markdown} -% -% Here, we directly update the `Link` grammar rule to keep the -% method \luamref{reader->parser_functions.parse_inlines_no_link} -% aware of `LinkWithAttributes` and prevent nested links. -% -% If we used \luamref{reader->insert_pattern} instead of -% \luamref{reader->update_rule}, this correspondence would have -% been lost and link text would be able to contain nested links. -% -% \end{markdown} -% \begin{macrocode} - self.update_rule("Link", LinkWithAttributes) - -% \end{macrocode} -% \begin{markdown} -% -% The following patterns define direct and indirect images with attributes. -% -% \end{markdown} -% \begin{macrocode} - - local function indirect_image(label, sps, tag, - attribute_text, - attributes) - return writer.defer_call(function() - local r, fallback = self.lookup_reference(label, sps, tag, - attributes) - if r then - return writer.image(writer.string(label), - r.url, r.title, r.attributes) - else - local buf = {"!", fallback} - if attributes then - table.insert(buf, writer.string(attribute_text)) - end - return buf - end - end) - end - - local DirectImageWithAttributes = parsers.direct_image - * Ct(parsers.attributes) - / writer.image - - local IndirectImageWithAttributes = parsers.indirect_image - * C(Ct(parsers.attributes)) - / indirect_image - - local ImageWithAttributes = DirectImageWithAttributes - + IndirectImageWithAttributes - - self.insert_pattern("Inline before Image", - ImageWithAttributes, - "ImageWithAttributes") + self.update_rule("LinkAndEmph", LinkWithAttributesAndEmph) % \end{macrocode} % \begin{markdown} @@ -27122,7 +31162,6 @@ M.extensions.link_attributes = function() % % \end{markdown} % \begin{macrocode} - local AutoLinkUrlWithAttributes = parsers.auto_link_url * Ct(parsers.attributes) @@ -27186,6 +31225,7 @@ M.extensions.notes = function(notes, inline_notes) % \end{markdown} % \begin{macrocode} function self.note(s) + if self.flatten_inlines then return "" end return {"\\markdownRendererNote{",s,"}"} end end, extend_reader = function(self) @@ -27195,10 +31235,10 @@ M.extensions.notes = function(notes, inline_notes) if inline_notes then local InlineNote = parsers.circumflex - * (parsers.tag / self.parser_functions.parse_inlines_no_inline_note) + * (parsers.link_label / self.parser_functions.parse_inlines_no_inline_note) / writer.note - self.insert_pattern("Inline after Emph", + self.insert_pattern("Inline after LinkAndEmph", InlineNote, "InlineNote") end if notes then @@ -27208,7 +31248,7 @@ M.extensions.notes = function(notes, inline_notes) local RawNoteRef = #(parsers.lbracket * parsers.circumflex) - * parsers.tag / strip_first_char + * parsers.link_label / strip_first_char local rawnotes = {} @@ -27227,21 +31267,36 @@ M.extensions.notes = function(notes, inline_notes) end local function register_note(ref,rawnote) - rawnotes[self.normalize_tag(ref)] = rawnote + local normalized_tag = self.normalize_tag(ref) + if rawnotes[normalized_tag] == nil then + rawnotes[normalized_tag] = rawnote + end return "" end local NoteRef = RawNoteRef / lookup_note + local optionally_indented_line = parsers.check_optional_indent_and_any_trail * parsers.line + + local blank = parsers.check_optional_blank_indent_and_any_trail * parsers.optionalspace * parsers.newline + + local chunk = Cs(parsers.line * (optionally_indented_line - blank)^0) + + local indented_blocks = function(bl) + return Cs( bl + * (blank^1 * (parsers.check_optional_indent / "") + * parsers.check_code_trail * -parsers.blankline * bl)^0) + end + local NoteBlock - = parsers.leader * RawNoteRef * parsers.colon - * parsers.spnl * parsers.indented_blocks(parsers.chunk) + = parsers.check_trail_no_rem * RawNoteRef * parsers.colon + * parsers.spnlc * indented_blocks(chunk) / register_note - local Blank = NoteBlock + parsers.Blank - self.update_rule("Blank", Blank) + local Reference = NoteBlock + parsers.Reference - self.insert_pattern("Inline after Emph", + self.update_rule("Reference", Reference) + self.insert_pattern("Inline before LinkAndEmph", NoteRef, "NoteRef") end @@ -27257,11 +31312,13 @@ end % The \luamdef{extensions.pipe_table} function implements the \acro{PHP} % Markdown table syntax extension (also known as pipe tables in Pandoc). When % the `table_captions` parameter is `true`, the function also implements the -% Pandoc table caption syntax extension for table captions. +% Pandoc table caption syntax extension for table captions. When the +% `table_attributes` parameter is also `true`, the function also +% allows attributes to be attached to the (possibly empty) table captions. % % \end{markdown} % \begin{macrocode} -M.extensions.pipe_tables = function(table_captions) +M.extensions.pipe_tables = function(table_captions, table_attributes) local function make_pipe_table_rectangular(rows) local num_columns = #rows[2] @@ -27329,10 +31386,18 @@ M.extensions.pipe_tables = function(table_captions) % % \end{markdown} % \begin{macrocode} - function self.table(rows, caption) + function self.table(rows, caption, attributes) if not self.is_writing then return "" end - local buffer = {"\\markdownRendererTable{", - caption or "", "}{", #rows - 1, "}{", #rows[1], "}"} + local buffer = {} + if attributes ~= nil then + table.insert(buffer, + "\\markdownRendererTableAttributeContextBegin\n") + table.insert(buffer, self.attributes(attributes)) + end + table.insert(buffer, + {"\\markdownRendererTable{", + caption or "", "}{", #rows - 1, "}{", + #rows[1], "}"}) local temp = rows[2] -- put alignments on the first row rows[2] = rows[1] rows[1] = temp @@ -27349,6 +31414,10 @@ M.extensions.pipe_tables = function(table_captions) end table.insert(buffer, "}") end + if attributes ~= nil then + table.insert(buffer, + "\\markdownRendererTableAttributeContextEnd{}") + end return buffer end end, extend_reader = function(self) @@ -27378,31 +31447,65 @@ M.extensions.pipe_tables = function(table_captions) , table_hline_separator , table_hline_column) - local table_caption_beginning = parsers.skipblanklines - * parsers.nonindentspace + local table_caption_beginning = (parsers.check_minimal_blank_indent_and_any_trail_no_rem + * parsers.optionalspace * parsers.newline)^0 + * parsers.check_minimal_indent_and_trail * (P("Table")^-1 * parsers.colon) * parsers.optionalspace + local function strip_trailing_spaces(s) + return s:gsub("%s*$","") + end + local table_row = pipe_table_row(true , (C((parsers.linechar - parsers.pipe)^1) + / strip_trailing_spaces / self.parser_functions.parse_inlines) , parsers.pipe , (C((parsers.linechar - parsers.pipe)^0) + / strip_trailing_spaces / self.parser_functions.parse_inlines)) local table_caption if table_captions then table_caption = #table_caption_beginning * table_caption_beginning - * Ct(parsers.IndentedInline^1) - * parsers.newline + if table_attributes then + table_caption = table_caption + * (C(((( parsers.linechar + - (parsers.attributes + * parsers.optionalspace + * parsers.newline + * -#( parsers.optionalspace + * parsers.linechar))) + + ( parsers.newline + * #( parsers.optionalspace + * parsers.linechar) + * C(parsers.optionalspace) / writer.space)) + * (parsers.linechar + - parsers.lbrace)^0)^1) + / self.parser_functions.parse_inlines) + * (parsers.newline + + ( Ct(parsers.attributes) + * parsers.optionalspace + * parsers.newline)) + else + table_caption = table_caption + * C(( parsers.linechar + + ( parsers.newline + * #( parsers.optionalspace + * parsers.linechar) + * C(parsers.optionalspace) / writer.space))^1) + / self.parser_functions.parse_inlines + * parsers.newline + end else table_caption = parsers.fail end - local PipeTable = Ct(table_row * parsers.newline - * table_hline - * (parsers.newline * table_row)^0) + local PipeTable = Ct(table_row * parsers.newline * (parsers.check_minimal_indent_and_trail / {}) + * table_hline * parsers.newline + * ((parsers.check_minimal_indent / {}) * table_row * parsers.newline)^0) / make_pipe_table_rectangular * table_caption^-1 / writer.table @@ -27439,6 +31542,7 @@ M.extensions.raw_inline = function() % \begin{macrocode} function self.rawInline(s, attr) if not self.is_writing then return "" end + if self.flatten_inlines then return s end local name = util.cache_verbatim(options.cacheDir, s) return {"\\markdownRendererInputRawInline{", name,"}{", self.string(attr),"}"} @@ -27479,6 +31583,7 @@ M.extensions.strike_through = function() % \end{markdown} % \begin{macrocode} function self.strike_through(s) + if self.flatten_inlines then return s end return {"\\markdownRendererStrikeThrough{",s,"}"} end end, extend_reader = function(self) @@ -27490,7 +31595,7 @@ M.extensions.strike_through = function() parsers.doubletildes) ) / writer.strike_through - self.insert_pattern("Inline after Emph", + self.insert_pattern("Inline after LinkAndEmph", StrikeThrough, "StrikeThrough") self.add_special_character("~") @@ -27521,6 +31626,7 @@ M.extensions.subscripts = function() % \end{markdown} % \begin{macrocode} function self.subscript(s) + if self.flatten_inlines then return s end return {"\\markdownRendererSubscript{",s,"}"} end end, extend_reader = function(self) @@ -27531,7 +31637,7 @@ M.extensions.subscripts = function() parsers.between(parsers.Str, parsers.tilde, parsers.tilde) ) / writer.subscript - self.insert_pattern("Inline after Emph", + self.insert_pattern("Inline after LinkAndEmph", Subscript, "Subscript") self.add_special_character("~") @@ -27562,6 +31668,7 @@ M.extensions.superscripts = function() % \end{markdown} % \begin{macrocode} function self.superscript(s) + if self.flatten_inlines then return s end return {"\\markdownRendererSuperscript{",s,"}"} end end, extend_reader = function(self) @@ -27572,7 +31679,7 @@ M.extensions.superscripts = function() parsers.between(parsers.Str, parsers.circumflex, parsers.circumflex) ) / writer.superscript - self.insert_pattern("Inline after Emph", + self.insert_pattern("Inline after LinkAndEmph", Superscript, "Superscript") self.add_special_character("^") @@ -27582,7 +31689,7 @@ end % \end{macrocode} % \begin{markdown} % -%#### Tex Math +%#### \TeX{} Math % % The \luamdef{extensions.tex_math} function implements the Pandoc math % syntax extensions. @@ -27605,7 +31712,7 @@ M.extensions.tex_math = function(tex_math_dollars, % \end{markdown} % \begin{macrocode} function self.display_math(s) - if not self.is_writing then return "" end + if self.flatten_inlines then return s end return {"\\markdownRendererDisplayMath{",self.math(s),"}"} end % \end{macrocode} @@ -27617,7 +31724,7 @@ M.extensions.tex_math = function(tex_math_dollars, % \end{markdown} % \begin{macrocode} function self.inline_math(s) - if not self.is_writing then return "" end + if self.flatten_inlines then return s end return {"\\markdownRendererInlineMath{",self.math(s),"}"} end end, extend_reader = function(self) @@ -27625,11 +31732,19 @@ M.extensions.tex_math = function(tex_math_dollars, local writer = self.writer local function between(p, starter, ender) - return (starter * C(p * (p - ender)^0) * ender) + return (starter * Cs(p * (p - ender)^0) * ender) + end + + local function strip_preceding_whitespaces(str) + return str:gsub("^%s*(.-)$", "%1") end local allowed_before_closing = B( parsers.backslash * parsers.any - + parsers.any * (parsers.nonspacechar - parsers.backslash)) + + parsers.any * (parsers.any - parsers.backslash)) + + local allowed_before_closing_no_space = B( parsers.backslash * parsers.any + + parsers.any * (parsers.nonspacechar - parsers.backslash)) + % \end{macrocode} % \begin{markdown} % @@ -27637,19 +31752,20 @@ M.extensions.tex_math = function(tex_math_dollars, % % \end{markdown} % \begin{macrocode} - local dollar_math_content = parsers.backslash^-1 - * parsers.any + local dollar_math_content = (parsers.newline * (parsers.check_optional_indent / "") + + parsers.backslash^-1 + * parsers.linechar) - parsers.blankline^2 - parsers.dollar local inline_math_opening_dollars = parsers.dollar * #(parsers.nonspacechar) - local inline_math_closing_dollars = allowed_before_closing + local inline_math_closing_dollars = allowed_before_closing_no_space * parsers.dollar * -#(parsers.digit) - local inline_math_dollars = between(C( dollar_math_content), + local inline_math_dollars = between(Cs( dollar_math_content), inline_math_opening_dollars, inline_math_closing_dollars) @@ -27659,7 +31775,7 @@ M.extensions.tex_math = function(tex_math_dollars, local display_math_closing_dollars = parsers.dollar * parsers.dollar - local display_math_dollars = between(C( dollar_math_content), + local display_math_dollars = between(Cs( dollar_math_content), display_math_opening_dollars, display_math_closing_dollars) % \end{macrocode} @@ -27670,7 +31786,8 @@ M.extensions.tex_math = function(tex_math_dollars, % % \end{markdown} % \begin{macrocode} - local backslash_math_content = parsers.any + local backslash_math_content = (parsers.newline * (parsers.check_optional_indent / "") + + parsers.linechar) - parsers.blankline^2 % \end{macrocode} % \begin{markdown} @@ -27683,29 +31800,32 @@ M.extensions.tex_math = function(tex_math_dollars, local inline_math_opening_double = parsers.backslash * parsers.backslash * parsers.lparent - * #(parsers.nonspacechar) local inline_math_closing_double = allowed_before_closing + * parsers.spacechar^0 * parsers.backslash * parsers.backslash * parsers.rparent - local inline_math_double = between(C( backslash_math_content), + local inline_math_double = between(Cs( backslash_math_content), inline_math_opening_double, inline_math_closing_double) + / strip_preceding_whitespaces local display_math_opening_double = parsers.backslash * parsers.backslash * parsers.lbracket local display_math_closing_double = allowed_before_closing + * parsers.spacechar^0 * parsers.backslash * parsers.backslash * parsers.rbracket - local display_math_double = between(C( backslash_math_content), + local display_math_double = between(Cs( backslash_math_content), display_math_opening_double, display_math_closing_double) + / strip_preceding_whitespaces % \end{macrocode} % \begin{markdown} % @@ -27716,26 +31836,29 @@ M.extensions.tex_math = function(tex_math_dollars, % \begin{macrocode} local inline_math_opening_single = parsers.backslash * parsers.lparent - * #(parsers.nonspacechar) local inline_math_closing_single = allowed_before_closing + * parsers.spacechar^0 * parsers.backslash * parsers.rparent - local inline_math_single = between(C( backslash_math_content), + local inline_math_single = between(Cs( backslash_math_content), inline_math_opening_single, inline_math_closing_single) + / strip_preceding_whitespaces local display_math_opening_single = parsers.backslash * parsers.lbracket local display_math_closing_single = allowed_before_closing + * parsers.spacechar^0 * parsers.backslash * parsers.rbracket - local display_math_single = between(C( backslash_math_content), + local display_math_single = between(Cs( backslash_math_content), display_math_opening_single, display_math_closing_single) + / strip_preceding_whitespaces local display_math = parsers.fail @@ -27759,7 +31882,7 @@ M.extensions.tex_math = function(tex_math_dollars, local TexMath = display_math / writer.display_math + inline_math / writer.inline_math - self.insert_pattern("Inline after Emph", + self.insert_pattern("Inline after LinkAndEmph", TexMath, "TexMath") if tex_math_dollars then @@ -27961,6 +32084,30 @@ function M.new(options) % \par % \begin{markdown} % +% If the singleton cache contains a conversion function for the same `options`, +% reuse it. +% +% \end{markdown} +% \begin{macrocode} + if options.singletonCache and singletonCache.convert then + for k, v in pairs(defaultOptions) do + if type(v) == "table" then + for i = 1, math.max(#singletonCache.options[k], #options[k]) do + if singletonCache.options[k][i] ~= options[k][i] then + goto miss + end + end + elseif singletonCache.options[k] ~= options[k] then + goto miss + end + end + return singletonCache.convert + end + ::miss:: +% \end{macrocode} +% \par +% \begin{markdown} +% % Apply built-in syntax extensions based on `options`. % % \end{markdown} @@ -28026,9 +32173,14 @@ function M.new(options) table.insert(extensions, line_block_extension) end + if options.mark then + local mark_extension = M.extensions.mark() + table.insert(extensions, mark_extension) + end + if options.pipeTables then local pipe_tables_extension = M.extensions.pipe_tables( - options.tableCaptions) + options.tableCaptions, options.tableAttributes) table.insert(extensions, pipe_tables_extension) end @@ -28062,19 +32214,9 @@ function M.new(options) table.insert(extensions, tex_math_extension) end -% \end{macrocode} -% \begin{markdown} -% -% The footnotes and inlineFootnotes option has been deprecated and will be -% removed in Markdown 3.0.0. -% -% \end{markdown} -% \begin{macrocode} - if options.footnotes or options.inlineFootnotes or - options.notes or options.inlineNotes then + if options.notes or options.inlineNotes then local notes_extension = M.extensions.notes( - options.footnotes or options.notes, - options.inlineFootnotes or options.inlineNotes) + options.notes, options.inlineNotes) table.insert(extensions, notes_extension) end @@ -28187,14 +32329,51 @@ function M.new(options) % \par % \begin{markdown} % -% Produce and return a conversion function from markdown to plain \TeX. +% Produce a conversion function from markdown to plain \TeX. % % \end{markdown} % \begin{macrocode} local writer = M.writer.new(options) local reader = M.reader.new(writer, options) local convert = reader.finalize_grammar(extensions) - +% \end{macrocode} +% \par +% \begin{markdown} +% +% Force garbage collection to reclaim memory for temporary +% objects created in \luamref{writer.new}, \luamref{reader.new}, +% and \luamref{reader->finalize_grammar}. +% +% \end{markdown} +% \begin{macrocode} + collectgarbage("collect") +% \end{macrocode} +% \par +% \begin{markdown} +% +% Update the singleton cache. +% +% \end{markdown} +% \begin{macrocode} + if options.singletonCache then + local singletonCacheOptions = {} + for k, v in pairs(options) do + singletonCacheOptions[k] = v + end + setmetatable(singletonCacheOptions, + { __index = function (_, key) + return defaultOptions[key] end }) + singletonCache.options = singletonCacheOptions + singletonCache.convert = convert + end +% \end{macrocode} +% \par +% \begin{markdown} +% +% Return the conversion function from markdown to plain \TeX. +% +% \end{markdown} +% \begin{macrocode} return convert end @@ -28246,9 +32425,8 @@ local kpse (function() local should_initialize = package.loaded.kpse == nil or tex.initialize ~= nil - local ran_ok - ran_ok, kpse = pcall(require, "kpse") - if ran_ok and should_initialize then + kpse = require("kpse") + if should_initialize then kpse.set_program_name("luatex") end end)() @@ -28276,6 +32454,14 @@ else assert(io.write(output)) end % \end{macrocode} +% \begin{markdown} +% Remove the `options.cacheDir` directory if it is empty. +% \end{markdown} +% \begin{macrocode} +if options.cacheDir then + lfs.rmdir(options["cacheDir"]) +end +% \end{macrocode} % \iffalse %</lua-cli> %<*tex> @@ -28295,23 +32481,218 @@ end % % \end{markdown} % \begin{macrocode} -\ifx\markdownInfo\undefined - \def\markdownInfo#1{% - \immediate\write-1{(l.\the\inputlineno) markdown.tex info: #1.}}% -\fi -\ifx\markdownWarning\undefined - \def\markdownWarning#1{% - \immediate\write16{(l.\the\inputlineno) markdown.tex warning: #1}}% -\fi -\ifx\markdownError\undefined - \def\markdownError#1#2{% - \errhelp{#2.}% - \errmessage{(l.\the\inputlineno) markdown.tex error: #1}}% -\fi +\ExplSyntaxOn +\cs_if_free:NT + \markdownInfo + { + \cs_new:Npn + \markdownInfo #1 + { + \msg_info:nne + { markdown } + { generic-message } + { #1 } + } + } +\cs_if_free:NT + \markdownWarning + { + \cs_new:Npn + \markdownWarning #1 + { + \msg_warning:nne + { markdown } + { generic-message } + { #1 } + } + } +\cs_if_free:NT + \markdownError + { + \cs_new:Npn + \markdownError #1 #2 + { + \msg_error:nnee + { markdown } + { generic-message-with-help-text } + { #1 } + { #2 } + } + } +\msg_new:nnn + { markdown } + { generic-message } + { #1 } +\msg_new:nnnn + { markdown } + { generic-message-with-help-text } + { #1 } + { #2 } +\cs_generate_variant:Nn + \msg_info:nnn + { nne } +\cs_generate_variant:Nn + \msg_warning:nnn + { nne } +\cs_generate_variant:Nn + \msg_error:nnnn + { nnee } +\ExplSyntaxOff +% \end{macrocode} +% \par +% \begin{markdown} +% +%### Themes {#themes-implementation} +% +% This section implements the theme-loading mechanism and the built-in themes +% provided with the Markdown package. Futhermore, this section also implements +% the built-in plain \TeX{} themes provided with the Markdown package. +% +% \end{markdown} +% \begin{macrocode} +\ExplSyntaxOn +\prop_new:N \g_@@_plain_tex_loaded_themes_linenos_prop +\cs_new:Nn + \@@_plain_tex_load_theme:nn + { + \prop_get:NnNTF + \g_@@_plain_tex_loaded_themes_linenos_prop + { #1 } + \l_tmpa_tl + { + \msg_warning:nnnV + { markdown } + { repeatedly-loaded-plain-tex-theme } + { #1 } + \l_tmpa_tl + } + { + \msg_info:nnn + { markdown } + { loading-plain-tex-theme } + { #1 } + \prop_gput:Nnx + \g_@@_plain_tex_loaded_themes_linenos_prop + { #1 } + { \tex_the:D \tex_inputlineno:D } + \file_input:n + { markdown theme #2 } + } + } +\msg_new:nnn + { markdown } + { loading-plain-tex-theme } + { Loading~plain~TeX~Markdown~theme~#1 } +\msg_new:nnn + { markdown } + { repeatedly-loaded-plain-tex-theme } + { + Plain~TeX~Markdown~theme~#1~was~previously~ + loaded~on~line~#2,~not~loading~it~again + } +\cs_generate_variant:Nn + \prop_gput:Nnn + { Nnx } +\cs_gset_eq:NN + \@@_load_theme:nn + \@@_plain_tex_load_theme:nn +\cs_generate_variant:Nn + \@@_load_theme:nn + { nV } +% \end{macrocode} +% \begin{markdown} +% +% Developers can use the \mref{markdownLoadPlainTeXTheme} macro to load a +% corresponding plain \TeX{} theme from within themes for higher-level \TeX{} +% formats such as \LaTeX{} and \Hologo{ConTeXt}. +% +% \end{markdown} +% \begin{macrocode} +\cs_new:Npn + \markdownLoadPlainTeXTheme + { +% \end{macrocode} +% \begin{markdown} +% +% First, we extract the name of the current theme from the +% \mref{g_@@_current_theme_tl} macro. +% +% \end{markdown} +% \begin{macrocode} + \tl_set:NV + \l_tmpa_tl + \g_@@_current_theme_tl + \tl_reverse:N + \l_tmpa_tl + \tl_set:Ne + \l_tmpb_tl + { + \tl_tail:V + \l_tmpa_tl + } + \tl_reverse:N + \l_tmpb_tl +% \end{macrocode} +% \begin{markdown} +% +% Next, we munge the theme name. +% +% \end{markdown} +% \begin{macrocode} + \str_set:NV + \l_tmpa_str + \l_tmpb_tl + \str_replace_all:Nnn + \l_tmpa_str + { / } + { _ } +% \end{macrocode} +% \begin{markdown} +% +% Finally, we load the plain \TeX{} theme. +% +% \end{markdown} +% \begin{macrocode} + \@@_plain_tex_load_theme:VV + \l_tmpb_tl + \l_tmpa_str + } +\cs_generate_variant:Nn + \tl_set:Nn + { Ne } +\cs_generate_variant:Nn + \@@_plain_tex_load_theme:nn + { VV } +\ExplSyntaxOff % \end{macrocode} +% \iffalse +%</tex> +%<*themes-witiko-tilde> +% \fi % \par % \begin{markdown} % +% The `witiko/tilde` theme redefines the tilde token renderer prototype, +% so that it expands to a non-breaking space: +% +% \end{markdown} +% \begin{macrocode} +\markdownSetup { + rendererPrototypes = { + tilde = {~}, + }, +} +% \end{macrocode} +% \iffalse +%</themes-witiko-tilde> +%<*themes-witiko-markdown-defaults-tex> +% \fi +% \begin{markdown} +% +% The `witiko/markdown/defaults` plain \TeX{} theme provides default +% definitions for token renderer prototypes. See Section +% <#sec:tex-token-renderer-prototypes> for the actual definitions. +% %### Token Renderer Prototypes {#tex-token-renderer-prototypes} % % The following definitions should be considered placeholder. @@ -28319,7 +32700,10 @@ end % \end{markdown} % \begin{macrocode} \def\markdownRendererInterblockSeparatorPrototype{\par}% +\def\markdownRendererParagraphSeparatorPrototype{% + \markdownRendererInterblockSeparator}% \def\markdownRendererHardLineBreakPrototype{\hfil\break}% +\def\markdownRendererSoftLineBreakPrototype{ }% \let\markdownRendererEllipsisPrototype\dots \def\markdownRendererNbspPrototype{~}% \def\markdownRendererLeftBracePrototype{\char`\{}% @@ -28340,7 +32724,7 @@ end \def\markdownRendererContentBlockOnlineImagePrototype{% \markdownRendererImage}% \def\markdownRendererContentBlockCodePrototype#1#2#3#4#5{% - \markdownRendererInputFencedCode{#3}{#2}}% + \markdownRendererInputFencedCode{#3}{#2}{#2}}% \def\markdownRendererImagePrototype#1#2#3#4{#2}% \def\markdownRendererUlBeginPrototype{}% \def\markdownRendererUlBeginTightPrototype{}% @@ -28378,7 +32762,7 @@ end \def\markdownRendererLineBlockEndPrototype{\endgroup}% \def\markdownRendererInputVerbatimPrototype#1{% \par{\tt\input#1\relax{}}\par}% -\def\markdownRendererInputFencedCodePrototype#1#2{% +\def\markdownRendererInputFencedCodePrototype#1#2#3{% \markdownRendererInputVerbatim{#1}}% \def\markdownRendererHeadingOnePrototype#1{#1}% \def\markdownRendererHeadingTwoPrototype#1{#1}% @@ -28431,12 +32815,7 @@ end \markdownRendererHeaderAttributeContextEndPrototype \cs_gset:Npn \markdownRendererReplacementCharacterPrototype - { - % TODO: Replace with `\codepoint_generate:nn` in TeX Live 2023 - \sys_if_engine_pdftex:TF - { ^^ef^^bf^^bd } - { ^^^^fffd } - } + { \codepoint_str_generate:n { fffd } } \ExplSyntaxOff \def\markdownRendererSectionBeginPrototype{}% \def\markdownRendererSectionEndPrototype{}% @@ -28492,7 +32871,7 @@ end % \par % \begin{markdown} % -%#### YAML Metadata Renderer Prototypes {#expl3-yaml-metadata-implementation} +%#### YAML Metadata Renderer Prototypes % % To keep track of the current type of structure we inhabit when we are % traversing a \acro{yaml} document, we will maintain the @@ -28727,6 +33106,35 @@ end } \ExplSyntaxOff % \end{macrocode} +% \iffalse +%</themes-witiko-markdown-defaults-tex> +%<*tex> +% \fi +% \begin{markdown} +% +% If plain \TeX{} is the top layer, we load the `witiko/markdown/defaults` +% plain \TeX{} theme with the default definitions for token renderer +% prototypes unless the option `noDefaults` has been enabled (see Section +% <#sec:plain>). +% +% \end{markdown} +% \begin{macrocode} +\ExplSyntaxOn +\str_if_eq:VVT + \c_@@_top_layer_tl + \c_@@_option_layer_plain_tex_tl + { + \ExplSyntaxOff + \@@_if_option:nF + { noDefaults } + { + \@@_setup:n + {theme = witiko/markdown/defaults} + } + \ExplSyntaxOn + } +\ExplSyntaxOff +% \end{macrocode} % \begin{markdown} % %### Lua Snippets @@ -28849,56 +33257,25 @@ end % \par % \begin{markdown} % -%### Buffering Markdown Input {#buffering} -% -% The -% \mdef{markdownIfOption}`{`\meta{name}`}{`\meta{iftrue}`}{`\meta{iffalse}`}` -% macro is provided for testing, whether the value of -% `\markdownOption`\meta{name} is `true`. If the value is `true`, then -% \meta{iftrue} is expanded, otherwise \meta{iffalse} is expanded. +% The \mdef{markdownCleanup} macro contains the Lua code that is executed +% after any conversion from markdown to plain \TeX{}. % % \end{markdown} % \begin{macrocode} -\ExplSyntaxOn -\prg_new_conditional:Nnn - \@@_if_option:n - { TF, T, F } - { - \@@_get_option_type:nN - { #1 } - \l_tmpa_tl - \str_if_eq:NNF - \l_tmpa_tl - \c_@@_option_type_boolean_tl - { - \msg_error:nnxx - { markdown } - { expected-boolean-option } - { #1 } - { \l_tmpa_tl } - } - \@@_get_option_value:nN - { #1 } - \l_tmpa_tl - \str_if_eq:NNTF - \l_tmpa_tl - \c_@@_option_value_true_tl - { \prg_return_true: } - { \prg_return_false: } - } -\msg_new:nnn - { markdown } - { expected-boolean-option } - { - Option~#1~has~type~#2,~ - but~a~boolean~was~expected. - } -\let\markdownIfOption=\@@_if_option:nTF -\ExplSyntaxOff +\def\markdownCleanup{% +% \end{macrocode} +% \begin{markdown} +% Remove the `options.cacheDir` directory if it is empty. +% \end{markdown} +% \begin{macrocode} + lfs.rmdir(cacheDir) +}% % \end{macrocode} % \par % \begin{markdown} % +%### Buffering Markdown Input {#buffering} +% % The macros \mdef{markdownInputFileStream} and \mdef{markdownOutputFileStream} % contain the number of the input and output file streams that will be used for % the IO operations of the package. @@ -29080,266 +33457,64 @@ end % \par % \begin{markdown} % -% The following two sections of the implementation have been deprecated and -% will be removed in Markdown 3.0.0. The code that corresponds to -% \mref{markdownMode} value of `3` will be the only implementation. +% Use the \pkg{lt3luabridge} library to define the \mdef{markdownLuaExecute} +% macro, which takes in a Lua scripts and expands to the standard output +% produced by its execution. % % \end{markdown} % \begin{macrocode} \ExplSyntaxOn -\int_compare:nT - { \markdownMode = 3 } +\cs_new:Npn + \markdownLuaExecute + #1 { - \markdownInfo{Using~mode~3:~The~lt3luabridge~package} - \file_input:n { lt3luabridge.tex } - \cs_new:Npn - \markdownLuaExecute - { \luabridgeExecute } + \int_compare:nNnT + { \g_luabridge_method_int } + = + { \c_luabridge_method_shell_int } + { + \sys_if_shell_unrestricted:F + { + \sys_if_shell:TF + { + \msg_error:nn + { markdown } + { restricted-shell-access } + } + { + \msg_error:nn + { markdown } + { disabled-shell-access } + } + } + } + \luabridge_now:e + { #1 } + } +\cs_generate_variant:Nn + \msg_new:nnnn + { nnnV } +\tl_set:Nn + \l_tmpa_tl + { + You~may~need~to~run~TeX~with~the~--shell-escape~or~the~ + --enable-write18~flag,~or~write~shell_escape=t~in~the~ + texmf.cnf~file. } +\msg_new:nnnV + { markdown } + { restricted-shell-access } + { Shell~escape~is~restricted } + \l_tmpa_tl +\msg_new:nnnV + { markdown } + { disabled-shell-access } + { Shell~escape~is~disabled } + \l_tmpa_tl \ExplSyntaxOff % \end{macrocode} % \begin{markdown} % -%### Lua Shell Escape Bridge {#lua-bridge} -% -% The following \TeX{} code is intended for \TeX{} engines that do not provide -% direct access to Lua, but expose the shell of the operating system. This -% corresponds to the \mref{markdownMode} values of `0` and `1`. -% -% The \mref{markdownLuaExecute} macro defined here and in Section -% <#sec:direct-lua> are meant to be indistinguishable to the remaining code. -% -% The package assumes that although the user is not using the Lua\TeX{} engine, -% their \TeX{} distribution contains it, and uses shell access to produce and -% execute Lua scripts using the \TeX{}Lua interpreter~[@luatex21, Section -% 4.1.1]. -% -% \end{markdown} -% \begin{macrocode} -\ifnum\markdownMode<2\relax -\ifnum\markdownMode=0\relax - \markdownWarning{Using mode 0: Shell escape via write18 - (deprecated, to be removed in Markdown 3.0.0)}% -\else - \markdownWarning{Using mode 1: Shell escape via os.execute - (deprecated, to be removed in Markdown 3.0.0)}% -\fi -% \end{macrocode} -% \par -% \begin{markdown} -% -% The \mdef{markdownExecuteShellEscape} macro contains the numeric value indicating -% whether the shell access is enabled (`1`), disabled (`0`), or restricted -% (`2`). -% -% Inherit the value of the `\pdfshellescape` (Lua\TeX{}, \Hologo{pdfTeX}) -% or the `\shellescape` (\Hologo{XeTeX}) commands. If neither of these -% commands is defined and Lua is available, attempt to access the -% `status.shell_escape` configuration item. -% -% If you cannot detect, whether the shell access is enabled, act as if it were. -% -% \end{markdown} -% \begin{macrocode} -\ifx\pdfshellescape\undefined - \ifx\shellescape\undefined - \ifnum\markdownMode=0\relax - \def\markdownExecuteShellEscape{1}% - \else - \def\markdownExecuteShellEscape{% - \directlua{tex.sprint(status.shell_escape or "1")}}% - \fi - \else - \let\markdownExecuteShellEscape\shellescape - \fi -\else - \let\markdownExecuteShellEscape\pdfshellescape -\fi -% \end{macrocode} -% \par -% \begin{markdown} -% -% The \mdef{markdownExecuteDirect} macro executes the code it has received as -% its first argument by writing it to the output file stream 18, if Lua is -% unavailable, or by using the Lua `os.execute` method otherwise. -% -% \end{markdown} -% \begin{macrocode} -\ifnum\markdownMode=0\relax - \def\markdownExecuteDirect#1{\immediate\write18{#1}}% -\else - \def\markdownExecuteDirect#1{% - \directlua{os.execute("\luaescapestring{#1}")}}% -\fi -% \end{macrocode} -% \par -% \begin{markdown} -% -% The \mdef{markdownExecute} macro is a wrapper on top of -% \mref{markdownExecuteDirect} that checks the value of -% \mref{markdownExecuteShellEscape} and prints an error message if the shell is -% inaccessible. -% -% \end{markdown} -% \begin{macrocode} -\def\markdownExecute#1{% - \ifnum\markdownExecuteShellEscape=1\relax - \markdownExecuteDirect{#1}% - \else - \markdownError{I can not access the shell}{Either run the TeX - compiler with the --shell-escape or the --enable-write18 flag, - or set shell_escape=t in the texmf.cnf file}% - \fi}% -% \end{macrocode} -% \par -% \begin{markdown} -% -% The \mdef{markdownLuaExecute} macro executes the Lua code it has received as -% its first argument. The Lua code may not directly interact with the \TeX{} -% engine, but it can use the `print` function in the same manner it -% would use the `tex.print` method. -% -% \end{markdown} -% \begin{macrocode} -\begingroup -% \end{macrocode} -% \begin{markdown} -% Swap the category code of the backslash symbol and the pipe symbol, so that -% we may use the backslash symbol freely inside the Lua code. -% \end{markdown} -% \begin{macrocode} - \catcode`|=0% - \catcode`\\=12% - |gdef|markdownLuaExecute#1{% -% \end{macrocode} -% \begin{markdown} -% Create the file \Opt{helperScriptFileName} and fill it with the -% input Lua code prepended with \pkg{kpathsea} initialization, so that Lua -% modules from the \TeX{} distribution are available. -% \end{markdown} -% \begin{macrocode} - |immediate|openout|markdownOutputFileStream=% - |markdownOptionHelperScriptFileName - |markdownInfo{Writing a helper Lua script to the file - "|markdownOptionHelperScriptFileName"}% - |immediate|write|markdownOutputFileStream{% - local ran_ok, error = pcall(function() -% \end{macrocode} -% \begin{markdown} -% -% If \pkg{Kpathsea} has not been loaded before or if Lua\TeX{} has not yet -% been initialized, configure \pkg{Kpathsea} on top of loading it. -% -% \end{markdown} -% \begin{macrocode} - local kpse - (function() - local should_initialize = package.loaded.kpse == nil - or tex.initialize - local ran_ok - ran_ok, kpse = pcall(require, "kpse") - if ran_ok and should_initialize then - kpse.set_program_name("luatex") - end - end)() - #1 - end) -% \end{macrocode} -% \begin{markdown} -% If there was an error, use the file \Opt{errorTempFileName} to -% store the error message. -% \end{markdown} -% \begin{macrocode} - if not ran_ok then - local file = io.open("% - |markdownOptionOutputDir - /|markdownOptionErrorTempFileName", "w") - if file then - file:write(error .. "\n") - file:close() - end - print('\\markdownError{An error was encountered while executing - Lua code}{For further clues, examine the file - "|markdownOptionOutputDir - /|markdownOptionErrorTempFileName"}') - end}% - |immediate|closeout|markdownOutputFileStream -% \end{macrocode} -% \begin{markdown} -% Execute the generated \Opt{helperScriptFileName} Lua script using -% the \TeX{}Lua binary and store the output in the -% \Opt{outputTempFileName} file. -% \end{markdown} -% \begin{macrocode} - |markdownInfo{Executing a helper Lua script from the file - "|markdownOptionHelperScriptFileName" and storing the result in the - file "|markdownOptionOutputTempFileName"}% - |markdownExecute{texlua "|markdownOptionOutputDir - /|markdownOptionHelperScriptFileName" > % - "|markdownOptionOutputDir - /|markdownOptionOutputTempFileName"}% -% \end{macrocode} -% \begin{markdown} -% `\input` the generated \Opt{outputTempFileName} file. -% \end{markdown} -% \begin{macrocode} - |input|markdownOptionOutputTempFileName|relax}% -|endgroup -% \end{macrocode} -% \par -% \begin{markdown} -% -%### Direct Lua Access {#direct-lua} -% -% The following \TeX{} code is intended for \TeX{} engines that provide -% direct access to Lua (Lua\TeX{}). The macro \mref{markdownLuaExecute} defined -% here and in Section <#sec:lua-bridge> are meant to be indistinguishable to -% the remaining code. This corresponds to the \mref{markdownMode} value of `2`. -% -% \end{markdown} -% \begin{macrocode} -\fi -\ifnum\markdownMode=2\relax - \markdownWarning{Using mode 2: Direct Lua access - (deprecated, to be removed in Markdown 3.0.0)}% -% \end{macrocode} -% \par -% \begin{markdown} -% -% The direct Lua access version of the \mref{markdownLuaExecute} macro is defined -% in terms of the `\directlua` primitive. The `print` function is set as -% an alias to the `tex.print` method in order to mimic the behaviour of the -% \mref{markdownLuaExecute} definition from Section <#sec:lua-bridge>, -% -% \end{markdown} -% \begin{macrocode} -\begingroup -% \end{macrocode} -% \begin{markdown} -% Swap the category code of the backslash symbol and the pipe symbol, so that -% we may use the backslash symbol freely inside the Lua code. -% \end{markdown} -% \begin{macrocode} - \catcode`|=0% - \catcode`\\=12% - |gdef|markdownLuaExecute#1{% - |directlua{% - local function print(input) - local output = {} - for line in input:gmatch("[^\r\n]+") do - table.insert(output, line) - end - tex.print(output) - end - #1 - }% - }% -|endgroup -\fi -% \end{macrocode} -% \par -% \begin{markdown} -% %### Typesetting Markdown % % The \mref{markdownInput} macro uses an implementation of the @@ -29413,20 +33588,15 @@ end [[Could not open file "&1" for reading]]) local input = assert(file:read("*a")) assert(file:close()) + print(convert(input)) + |markdownCleanup}% % \end{macrocode} % \begin{markdown} -% Since the Lua converter expects \acro{unix} line endings, normalize the -% input. Also add a line ending at the end of the file in case the input file -% has none. -% \end{markdown} -% \begin{macrocode} - print(convert(input))}% -% \end{macrocode} -% \begin{markdown} -% In case we were finalizing the frozen cache, increment \Opt{frozenCacheCounter}. +% If we are finalizing the frozen cache, increment \Opt{frozenCacheCounter}. % \end{markdown} % \begin{macrocode} - |global|advance|markdownOptionFrozenCacheCounter by 1|relax + |markdownIfOption{finalizeCache}{% + |global|advance|markdownOptionFrozenCacheCounter by 1|relax}{}% }% |endgroup }% @@ -29472,19 +33642,6 @@ end % \par % \begin{markdown} % -% Use reflection to define the `renderers` and `rendererPrototypes` keys of -% \mref{markdownSetup} as well as the keys that correspond to Lua options. -% -% \end{markdown} -% \begin{macrocode} -\ExplSyntaxOn -\@@_latex_define_renderers: -\@@_latex_define_renderer_prototypes: -\ExplSyntaxOff -% \end{macrocode} -% \par -% \begin{markdown} -% %### Logging Facilities % The \LaTeX{} implementation redefines the plain \TeX{} logging macros (see % Section <#sec:tex-interface-logging>) to use the \LaTeX{} `\PackageInfo`, @@ -29519,13 +33676,125 @@ end % % \end{markdown} % \begin{macrocode} -\renewenvironment{markdown}{% - \markdownReadAndConvert@markdown{}}{% - \markdownEnd}% -\renewenvironment{markdown*}[1]{% - \markdownSetup{#1}% - \markdownReadAndConvert@markdown*}{% - \markdownEnd}% +\ExplSyntaxOn +\renewenvironment + { markdown } + { +% \end{macrocode} +% \markdownBegin +% +% In our implementation of the \envmref{markdown} \LaTeX{} environment, we +% want to distinguish between the following two cases: +% ``` tex +% \begin{markdown} [smartEllipses] \begin{markdown} +% \% This is an optional argument ^ [smartEllipses] +% \% ... \% ^ This is link +% \end{markdown} \end{markdown} +% ``````` +% +% Therefore, we cannot use the built-in \LaTeX{} support for environments +% with optional arguments or packages such as \pkg{xparse}. Instead, we +% must read the optional argument manually and prevent reading past the +% end of a line. +% +% To prevent reading past the end of a line when looking for the optional +% argument of the \envmref{markdown} \LaTeX{} environment and accidentally +% tokenizing markdown text, we change the category code of carriage return +% (`\r`, ASCII character 13 in decimal) from 5 (end of line). +% +% While any category code other than 5 (end of line) would work, we switch to +% the category 13 (active), which is also used by the +% \mref{markdownReadAndConvert} macro. This is necessary if we read until the +% end of a line, because then the carriage return character will be +% produced by \TeX{} via the `\endlinechar` plain \TeX{} macro and it needs +% to have the correct category code, so that \mref{markdownReadAndConvert} +% processes it correctly. +% +% \markdownEnd +% \begin{macrocode} + \group_begin: + \char_set_catcode_active:n { 13 } +% \end{macrocode} +% \begin{markdown} +% +% To prevent doubling the hash signs (`#`, ASCII code 35 in decimal), we switch +% its category from 6 (parameter) to 12 (letter). +% +% \end{markdown} +% \begin{macrocode} + \char_set_catcode_letter:n { 35 } +% \end{macrocode} +% \begin{markdown} +% +% After we have matched the opening `[` that begins the optional argument, +% we accept carriage returns as well. +% +% \end{markdown} +% \begin{macrocode} + \peek_regex_replace_once:nnF + { \ *\[([^]]*)\][^\r]* } + { +% \end{macrocode} +% \begin{markdown} +% +% After we have matched the optional argument, we switch back the category +% code of carriage returns and hash signs and we retokenize the content. This +% will cause single new lines to produce a space token and multiple new lines +% to produce `\par` tokens. Furthermore, this will cause hash signs followed +% by a number to be recognized as parameter numbers, which is necessary when +% we use the optional argument to redefine token renderers and token renderer +% prototypes. +% +% \end{markdown} +% \begin{macrocode} + \c { group_end: } + \c { tl_set_rescan:Nnn } \c { l_tmpa_tl } { } { \1 } +% \end{macrocode} +% \begin{markdown} +% +% Then, we pass the retokenized content to the \mref{markdownSetup} macro. +% +% \end{markdown} +% \begin{macrocode} + \c { @@_setup:V } \c { l_tmpa_tl } +% \end{macrocode} +% \begin{markdown} +% +% Finally, regardless of whether or not we have matched the optional argument, +% we let the \mref{markdownReadAndConvert} macro process the rest of the +% \LaTeX{} environment. +% +% \end{markdown} +% \begin{macrocode} + \c { markdownReadAndConvert@markdown } { } + } + { + \group_end: + \markdownReadAndConvert@markdown { } + } + } + { \markdownEnd } +\renewenvironment + { markdown* } + [ 1 ] + { + \msg_warning:nnn + { markdown } + { latex-markdown-star-deprecated } + { #1 } + \@@_setup:n + { #1 } + \markdownReadAndConvert@markdown * + } + { \markdownEnd } +\msg_new:nnn + { markdown } + { latex-markdown-star-deprecated } + { + The~markdown*~LaTeX~environment~has~been~deprecated~and~will~ + be~removed~in~the~next~major~version~of~the~Markdown~package. + } +\ExplSyntaxOff \begingroup % \end{macrocode} % \begin{markdown} @@ -29546,51 +33815,147 @@ end % \par % \begin{markdown} % -%#### \LaTeX{} Themes {#latex-themes-implementation} +%### Options +% The supplied package options are processed using the \mref{markdownSetup} macro. +% +% \end{markdown} +% \begin{macrocode} +\DeclareOption*{% + \expandafter\markdownSetup\expandafter{\CurrentOption}}% +\ProcessOptions\relax +% \end{macrocode} +% \begin{markdown} +% +%### Themes {#latex-themes-implementation} % -% This section implements the theme-loading mechanism and the example themes -% provided with the Markdown package. +% This section overrides the plain \TeX{} implementation of the theme-loading +% mechanism from Section <#sec:themes-implementation>. Futhermore, this section +% also implements the built-in \LaTeX{} themes provided with the Markdown package. % % \end{markdown} % \begin{macrocode} \ExplSyntaxOn +\cs_gset:Nn + \@@_load_theme:nn + { % \end{macrocode} +% \par % \begin{markdown} % -% To keep track of our current place when packages themes have been nested, -% we will maintain the \mdef{g_\@\@_latex_themes_seq} stack of theme names. +% If the Markdown package has already been loaded, determine whether +% a file named `markdowntheme`\meta{munged theme name}`.sty` exists +% and whether we are still in the preamble. % % \end{markdown} % \begin{macrocode} -\newcommand\markdownLaTeXThemeName{} -\seq_new:N \g_@@_latex_themes_seq -\seq_gput_right:NV - \g_@@_latex_themes_seq - \markdownLaTeXThemeName -\newcommand\markdownLaTeXThemeLoad[2]{ - \def\@tempa{% - \def\markdownLaTeXThemeName{#2} - \seq_gput_right:NV - \g_@@_latex_themes_seq - \markdownLaTeXThemeName - \RequirePackage{#1} - \seq_pop_right:NN - \g_@@_latex_themes_seq - \l_tmpa_tl - \seq_get_right:NN - \g_@@_latex_themes_seq - \l_tmpa_tl - \exp_args:NNV - \def - \markdownLaTeXThemeName - \l_tmpa_tl} - \ifmarkdownLaTeXLoaded - \@tempa - \else - \exp_args:No + \ifmarkdownLaTeXLoaded + \ifx\@onlypreamble\@notprerr +% \end{macrocode} +% \begin{markdown} +% +% If both conditions are true does, end with an error, since we cannot load +% \LaTeX{} themes after the preamble. Otherwise, try loading a plain \TeX{} +% theme instead. +% +% \end{markdown} +% \begin{macrocode} + \file_if_exist:nTF + { markdown theme #2.sty } + { + \msg_error:nnn + { markdown } + { latex-theme-after-preamble } + { #1 } + } + { + \@@_plain_tex_load_theme:nn + { #1 } + { #2 } + } + \else +% \end{macrocode} +% \begin{markdown} +% +% If the Markdown package has already been loaded but we are still in the +% preamble, load a \LaTeX{} theme if it exists or load a plain \TeX{} theme +% otherwise. +% +% \end{markdown} +% \begin{macrocode} + \file_if_exist:nTF + { markdown theme #2.sty } + { + \msg_info:nnn + { markdown } + { loading-latex-theme } + { #1 } + \RequirePackage + { markdown theme #2 } + } + { + \@@_plain_tex_load_theme:nn + { #1 } + { #2 } + } + \fi + \else +% \end{macrocode} +% \begin{markdown} +% +% If the Markdown package has not yet been loaded, postpone the loading until +% the Markdown package has finished loading. +% +% \end{markdown} +% \begin{macrocode} + \msg_info:nnn + { markdown } + { theme-loading-postponed } + { #1 } \AtEndOfPackage - { \@tempa } - \fi} + { + \@@_load_theme:nn + { #1 } + { #2 } + } + \fi + } +\msg_new:nnn + { markdown } + { theme-loading-postponed } + { + Postponing~loading~Markdown~theme~#1~until~ + Markdown~package~has~finished~loading + } +\msg_new:nnn + { markdown } + { loading-latex-theme } + { Loading~LaTeX~Markdown~theme~#1 } +\cs_generate_variant:Nn + \msg_new:nnnn + { nnVV } +\tl_set:Nn + \l_tmpa_tl + { Cannot~load~LaTeX~Markdown~theme~#1~after~ } +\tl_put_right:NV + \l_tmpa_tl + \c_backslash_str +\tl_put_right:Nn + \l_tmpa_tl + { begin{document} } +\tl_set:Nn + \l_tmpb_tl + { Load~Markdown~theme~#1~before~ } +\tl_put_right:NV + \l_tmpb_tl + \c_backslash_str +\tl_put_right:Nn + \l_tmpb_tl + { begin{document} } +\msg_new:nnVV + { markdown } + { latex-theme-after-preamble } + \l_tmpa_tl + \l_tmpb_tl \ExplSyntaxOff % \end{macrocode} % \begin{markdown} @@ -29600,7 +33965,7 @@ end % \end{markdown} % \iffalse %</latex> -%<*latex-themes-witiko-dot> +%<*themes-witiko-dot> % \fi % \begin{macrocode} \markdownSetup{fencedCode}% @@ -29632,7 +33997,7 @@ end % % \end{markdown} % \begin{macrocode} -\renewcommand\markdownRendererInputFencedCodePrototype[2]{% +\renewcommand\markdownRendererInputFencedCodePrototype[3]{% \def\next##1 ##2\relax{% \ifthenelse{\equal{##1}{dot}}{% \markdownIfOption{frozenCache}{}{% @@ -29659,14 +34024,14 @@ end % \end{markdown} % \begin{macrocode} }{% - \markdown@witiko@dot@oldRendererInputFencedCodePrototype{#1}{#2}% + \markdown@witiko@dot@oldRendererInputFencedCodePrototype{#1}{#2}{#3}% }% }% \next#2 \relax}% % \end{macrocode} % \iffalse -%</latex-themes-witiko-dot> -%<*latex-themes-witiko-graphicx-http> +%</themes-witiko-dot> +%<*themes-witiko-graphicx-http> % \fi % \par % \begin{markdown} @@ -29802,152 +34167,32 @@ end \endgroup % \end{macrocode} % \iffalse -%</latex-themes-witiko-graphicx-http> -%<*latex-themes-witiko-tilde> +%</themes-witiko-graphicx-http> +%<*themes-witiko-markdown-defaults-latex> % \fi % \par % \begin{markdown} % -% The `witiko/tilde` theme redefines the tilde token renderer prototype, -% so that it expands to a non-breaking space: +% The `witiko/markdown/defaults` \LaTeX{} theme provides default definitions +% for token renderer prototypes. First, the \LaTeX{} theme loads the plain +% \TeX{} theme with the default definitions for plain \TeX{}: % % \end{markdown} % \begin{macrocode} -\renewcommand\markdownRendererTildePrototype{~}% +\markdownLoadPlainTeXTheme % \end{macrocode} -% \iffalse -%</latex-themes-witiko-tilde> -%<*latex> -% \fi % \par % \begin{markdown} % -%### Options -% The supplied package options are processed using the \mref{markdownSetup} macro. -% -% \end{markdown} -% \begin{macrocode} -\DeclareOption*{% - \expandafter\markdownSetup\expandafter{\CurrentOption}}% -\ProcessOptions\relax -% \end{macrocode} -% \begin{markdown} -% -% After processing the options, activate the `jekyllDataRenderes`, `renderers`, -% `rendererPrototypes`, and `code` keys. -% -% \end{markdown} -% \begin{macrocode} -\ExplSyntaxOn -\keys_define:nn - { markdown/latex-options } - { - renderers .code:n = { - \keys_set:nn - { markdown/latex-options/renderers } - { #1 } - }, - } -\@@_with_various_cases:nn - { rendererPrototypes } - { - \keys_define:nn - { markdown/latex-options } - { - #1 .code:n = { - \keys_set:nn - { markdown/latex-options/renderer-prototypes } - { ##1 } - }, - } - } -% \end{macrocode} -% \begin{markdown} -% -% The `code` key is used to immediately expand and execute code, which can be -% especially useful in \LaTeX{} snippets. -% -% \end{markdown} -% \begin{macrocode} -\keys_define:nn - { markdown/latex-options } - { - code .code:n = { #1 }, - } -% \end{macrocode} -% \begin{markdown} -% -% The `jekyllDataRenderers` key can be used as a syntactic sugar for setting -% the `markdown/jekyllData` key--values (see Section <#sec:expl3yamlmetadata>) -% without using the expl3 language. -% -% \end{markdown} -% \begin{macrocode} -\@@_with_various_cases:nn - { jekyllDataRenderers } - { - \keys_define:nn - { markdown/latex-options } - { - #1 .code:n = { - \tl_set:Nn - \l_tmpa_tl - { ##1 } -% \end{macrocode} -% \begin{markdown} -% -% To ensure that keys containing forward slashes get passed correctly, we -% replace all forward slashes in the input with backslash tokens with category -% code letter and then undo the replacement. This means that if any unbraced -% backslash tokens with category code letter exist in the input, they will be -% replaced with forward slashes. However, this should be extremely rare. -% -% \end{markdown} -% \begin{macrocode} - \tl_replace_all:NnV - \l_tmpa_tl - { / } - \c_backslash_str - \keys_set:nV - { markdown/latex-options/jekyll-data-renderers } - \l_tmpa_tl - }, - } - } -\keys_define:nn - { markdown/latex-options/jekyll-data-renderers } - { - unknown .code:n = { - \tl_set_eq:NN - \l_tmpa_tl - \l_keys_key_str - \tl_replace_all:NVn - \l_tmpa_tl - \c_backslash_str - { / } - \tl_put_right:Nn - \l_tmpa_tl - { - .code:n = { #1 } - } - \keys_define:nV - { markdown/jekyllData } - \l_tmpa_tl - } - } -\cs_generate_variant:Nn - \keys_define:nn - { nV } -\ExplSyntaxOff -% \end{macrocode} -% \par -% \begin{markdown} +% Next, the \LaTeX{} theme overrides some of the plain \TeX{} definitions. +% See Section <#sec:latex-token-renderer-prototypes> for the actual +% definitions. % -%### Token Renderer Prototypes {#latex-default-renderer-prototypes} +%### Token Renderer Prototypes {#latex-token-renderer-prototypes} % -% The following configuration should be considered placeholder. If the `plain` -% package option has been enabled (see Section <#sec:latexplain>), none of -% it will take effect. +% The following configuration should be considered placeholder. If the option +% `plain` has been enabled (see Section <#sec:plain>), none of the definitions +% will take effect. % \end{markdown} % \begin{macrocode} \markdownIfOption{plain}{\iffalse}{\iftrue} @@ -29991,7 +34236,7 @@ end { LowerRoman } { \int_to_roman:n { #2 } } { UpperRoman } { \int_to_Roman:n { #2 } } { LowerAlpha } { \int_to_alph:n { #2 } } - { UpperAlpha } { \int_to_alph:n { #2 } } + { UpperAlpha } { \int_to_Alph:n { #2 } } } } \cs_new:Nn @@ -30057,16 +34302,26 @@ end \tl_set:Nn \l_@@_latex_fancy_list_item_label_delimiter_style_tl { #2 } - \tl_set:Nn - \l_tmpa_tl - { \begin{enumerate}[ } - \tl_put_right:Nx - \l_tmpa_tl - { \@@_latex_paralist_style:nn { #1 } { #2 } } - \tl_put_right:Nn + \@@_if_option:nTF + { startNumber } + { + \tl_set:Nn + \l_tmpa_tl + { \begin{enumerate} } + } + { + \tl_set:Nn + \l_tmpa_tl + { \begin{enumerate}[ } + \tl_put_right:Nx + \l_tmpa_tl + { \@@_latex_paralist_style:nn { #1 } { #2 } } + \tl_put_right:Nn + \l_tmpa_tl + { ] } + } + \tl_use:N \l_tmpa_tl - { ] } - \l_tmpa_tl }, fancyOlEnd = { \end{enumerate} @@ -30104,15 +34359,27 @@ end { \plpartopsep=\partopsep \pltopsep=\topsep - \begin{compactenum}[ } - \tl_put_right:Nx - \l_tmpa_tl - { \@@_latex_paralist_style:nn { #1 } { #2 } } - \tl_put_right:Nn + \@@_if_option:nTF + { startNumber } + { + \tl_put_right:Nn + \l_tmpa_tl + { \begin{compactenum} } + } + { + \tl_put_right:Nn + \l_tmpa_tl + { \begin{compactenum}[ } + \tl_put_right:Nx + \l_tmpa_tl + { \@@_latex_paralist_style:nn { #1 } { #2 } } + \tl_put_right:Nn + \l_tmpa_tl + { ] } + } + \tl_use:N \l_tmpa_tl - { ] } - \l_tmpa_tl }, fancyOlEndTight = { \end{compactenum} @@ -30250,7 +34517,7 @@ end image = {% \begin{figure}% \begin{center}% - \includegraphics{#3}% + \includegraphics[alt={#1}]{#3}% \end{center}% \ifx\empty#4\empty\else \caption{#4}% @@ -30267,43 +34534,44 @@ end dlEnd = {\end{description}}, emphasis = {\emph{#1}}, tickedBox = {$\boxtimes$}, - halfTickedBox = {$\boxdot$}, + halfTickedBox = {$\boxdot$}}} % \end{macrocode} % \par % \begin{markdown} % -% If identifier attributes appear at the beginning of a section, we make the -% next heading produce the `\label` macro. +% If identifier attributes appear at the beginning of a section, we make them +% produce the `\label` macro. % % \end{markdown} % \begin{macrocode} - headerAttributeContextBegin = {% - \markdownSetup{ - rendererPrototypes = { - attributeIdentifier = {% - \begingroup - \def\next####1{% - \def####1########1{% - \endgroup - ####1{########1}% - \label{##1}% - }% - }% - \next\markdownRendererHeadingOne - \next\markdownRendererHeadingTwo - \next\markdownRendererHeadingThree - \next\markdownRendererHeadingFour - \next\markdownRendererHeadingFive - \next\markdownRendererHeadingSix - }, - }, - }% +\ExplSyntaxOn +\seq_new:N \l_@@_header_identifiers_seq +\markdownSetup{ + rendererPrototypes = { + headerAttributeContextBegin = { + \seq_clear:N \l_@@_header_identifiers_seq + \markdownSetup + { + renderers = { + attributeIdentifier = { + \seq_put_right:Nn + \l_@@_header_identifiers_seq + { ##1 } + }, + }, + } + }, + headerAttributeContextEnd = { + \seq_map_inline:Nn + \l_@@_header_identifiers_seq + { \label { ##1 } } + }, }, - headerAttributeContextEnd = {}, +} +\ExplSyntaxOff +\markdownSetup{rendererPrototypes={ superscript = {\textsuperscript{#1}}, subscript = {\textsubscript{#1}}, - displayMath = {\begin{displaymath}#1\end{displaymath}}, - inlineMath = {\begin{math}#1\end{math}}, blockQuoteBegin = {\begin{quotation}}, blockQuoteEnd = {\end{quotation}}, inputVerbatim = {\VerbatimInput{#1}}, @@ -30322,7 +34590,7 @@ end \RequirePackage{ltxcmds} \ExplSyntaxOn \cs_gset:Npn - \markdownRendererInputFencedCodePrototype#1#2 + \markdownRendererInputFencedCodePrototype#1#2#3 { \tl_if_empty:nTF { #2 } @@ -30382,7 +34650,7 @@ end % % \end{markdown} % \begin{macrocode} - { \markdownRendererInputFencedCode{#1}{} } + { \markdownRendererInputFencedCode{#1}{}{} } } } } @@ -30419,16 +34687,16 @@ end headingOne = {\section{#1}}, headingTwo = {\subsection{#1}}, headingThree = {\subsubsection{#1}}, - headingFour = {\paragraph{#1}\leavevmode}, - headingFive = {\subparagraph{#1}\leavevmode}}} + headingFour = {\paragraph{#1}}, + headingFive = {\subparagraph{#1}}}} }{% \markdownSetup{rendererPrototypes = { headingOne = {\chapter{#1}}, headingTwo = {\section{#1}}, headingThree = {\subsection{#1}}, headingFour = {\subsubsection{#1}}, - headingFive = {\paragraph{#1}\leavevmode}, - headingSix = {\subparagraph{#1}\leavevmode}}} + headingFive = {\paragraph{#1}}, + headingSix = {\subparagraph{#1}}}} }% % \end{macrocode} % \par @@ -30966,25 +35234,10 @@ end % % \end{markdown} % \begin{macrocode} -% TODO: Remove the command definition in TeX Live 2021. -\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} \markdownSetup{ rendererPrototypes = { jekyllDataEnd = { -% TODO: Remove the else branch in TeX Live 2021. - \IfFormatAtLeastTF - { 2020-10-01 } - { \AddToHook{begindocument/end}{\maketitle} } - { - \ifx\@onlypreamble\@notprerr - % We are in the document - \maketitle - \else - % We are in the preamble - \RequirePackage{etoolbox} - \AfterEndPreamble{\maketitle} - \fi - } + \AddToHook{begindocument/end}{\maketitle} }, }, } @@ -31013,18 +35266,18 @@ end % \par % \begin{markdown} % -%#### Strike-Through -% If the \Opt{strikeThrough} option is enabled, we will load the -% \pkg{soulutf8} package and use it to implement strike-throughs. +%#### Marked Text +% If the \Opt{mark} option is enabled, we will load the \pkg{soulutf8} package +% and use it to implement marked text. % % \end{markdown} % \begin{macrocode} -\markdownIfOption{strikeThrough}{% +\markdownIfOption{mark}{% \RequirePackage{soulutf8}% \markdownSetup{ rendererPrototypes = { - strikeThrough = {% - \st{#1}% + mark = {% + \hl{#1}% }, } } @@ -31120,8 +35373,12 @@ end } } \ExplSyntaxOff -\fi % Closes `\markdownIfOption{Plain}{\iffalse}{iftrue}` +\fi % Closes `\markdownIfOption{plain}{\iffalse}{\iftrue}` % \end{macrocode} +% \iffalse +%</themes-witiko-markdown-defaults-latex> +%<*latex> +% \fi % \par % \begin{markdown} % @@ -31186,7 +35443,7 @@ end % \begin{markdown} % %### Typesetting Markdown -% The \mref{inputmarkdown} is defined to accept an optional argument with +% The \mref{inputmarkdown} macro is defined to accept an optional argument with % options recognized by the \Hologo{ConTeXt} interface (see Section % <#sec:context-options>). % @@ -31198,7 +35455,7 @@ end \long\def\doinputmarkdown[#1]#2{% \begingroup \iffirstargument - \setupmarkdown{#1}% + \setupmarkdown[#1]% \fi \markdownInput{#2}% \endgroup}% @@ -31220,48 +35477,108 @@ end % % \end{markdown} % \begin{macrocode} -\ifx\startluacode\undefined % MkII - \begingroup - \catcode`\|=0% - \catcode`\\=12% - |gdef|startmarkdown{% - |markdownReadAndConvert{\stopmarkdown}% - {|stopmarkdown}}% - |gdef|stopmarkdown{% - |markdownEnd}% - |endgroup -\else % MkIV - \startluacode - document.markdown_buffering = false - local function preserve_trailing_spaces(line) - if document.markdown_buffering then - line = line:gsub("[ \t][ \t]$", "\t\t") - end - return line +\startluacode + document.markdown_buffering = false + local function preserve_trailing_spaces(line) + if document.markdown_buffering then + line = line:gsub("[ \t][ \t]$", "\t\t") end - resolvers.installinputlinehandler(preserve_trailing_spaces) - \stopluacode - \begingroup - \catcode`\|=0% - \catcode`\\=12% - |gdef|startmarkdown{% - |ctxlua{document.markdown_buffering = true}% - |markdownReadAndConvert{\stopmarkdown}% - {|stopmarkdown}}% - |gdef|stopmarkdown{% - |ctxlua{document.markdown_buffering = false}% - |markdownEnd}% - |endgroup -\fi + return line + end + resolvers.installinputlinehandler(preserve_trailing_spaces) +\stopluacode +\begingroup + \catcode`\|=0% + \catcode`\\=12% + |gdef|startmarkdown{% + |ctxlua{document.markdown_buffering = true}% + |markdownReadAndConvert{\stopmarkdown}% + {|stopmarkdown}}% + |gdef|stopmarkdown{% + |ctxlua{document.markdown_buffering = false}% + |markdownEnd}% +|endgroup % \end{macrocode} % \par % \begin{markdown} % -%### Token Renderer Prototypes -% The following configuration should be considered placeholder. +%### Themes {#context-themes-implementation} +% +% This section overrides the plain \TeX{} implementation of the theme-loading +% mechanism from Section <#sec:themes-implementation>. Futhermore, this section +% also implements the built-in \Hologo{ConTeXt} themes provided with the +% Markdown package. +% +% \end{markdown} +% \begin{macrocode} +\ExplSyntaxOn +\cs_gset:Nn + \@@_load_theme:nn + { +% \end{macrocode} +% \par +% \begin{markdown} +% +% Determine whether a file named `t-markdowntheme`\meta{munged theme +% name}`.tex` exists. If it does, load it. Otherwise, try loading a plain +% \TeX{} theme instead. % % \end{markdown} % \begin{macrocode} + \file_if_exist:nTF + { t - markdown theme #2.tex } + { + \msg_info:nnn + { markdown } + { loading-context-theme } + { #1 } + \usemodule + [ t ] + [ markdown theme #2 ] + } + { + \@@_plain_tex_load_theme:nn + { #1 } + { #2 } + } + } +\msg_new:nnn + { markdown } + { loading-context-theme } + { Loading~ConTeXt~Markdown~theme~#1 } +\ExplSyntaxOff +% \end{macrocode} +% \iffalse +%</context> +%<*themes-witiko-markdown-defaults-context> +% \fi +% \par +% \begin{markdown} +% +% The `witiko/markdown/defaults` \Hologo{ConTeXt} theme provides default +% definitions for token renderer prototypes. First, the \Hologo{ConTeXt} theme +% loads the plain \TeX{} theme with the default definitions for plain \TeX{}: +% +% \end{markdown} +% \begin{macrocode} +\markdownLoadPlainTeXTheme +% \end{macrocode} +% \par +% \begin{markdown} +% +% Next, the \Hologo{ConTeXt} theme overrides some of the plain \TeX{} definitions. +% See Section <#sec:context-token-renderer-prototypes> for the actual +% definitions. +% +%### Token Renderer Prototypes {#context-token-renderer-prototypes} +% +% The following configuration should be considered placeholder. If the option +% `plain` has been enabled (see Section <#sec:plain>), none of the definitions +% will take effect. +% +% \end{markdown} +% \begin{macrocode} +\markdownIfOption{plain}{\iffalse}{\iftrue} \def\markdownRendererHardLineBreakPrototype{\blank}% \def\markdownRendererLeftBracePrototype{\textbraceleft}% \def\markdownRendererRightBracePrototype{\textbraceright}% @@ -31356,7 +35673,7 @@ end % \begin{macrocode} \ExplSyntaxOn \cs_gset:Npn - \markdownRendererInputFencedCodePrototype#1#2 + \markdownRendererInputFencedCodePrototype#1#2#3 { \tl_if_empty:nTF { #2 } @@ -31416,7 +35733,6 @@ end \def\markdownRendererSuperscriptPrototype#1{\high{#1}} \def\markdownRendererSubscriptPrototype#1{\low{#1}} \def\markdownRendererDisplayMathPrototype#1{\startformula#1\stopformula}% -\def\markdownRendererInlineMathPrototype#1{$#1$}% % \end{macrocode} % \par % \begin{markdown} @@ -31544,8 +35860,30 @@ end \cs_gset_eq:NN \markdownRendererInputRawBlockPrototype \markdownRendererInputRawInlinePrototype +\fi % Closes `\markdownIfOption{plain}{\iffalse}{\iftrue}` \ExplSyntaxOff -\stopmodule\protect +\stopmodule +\protect +% \end{macrocode} +% \iffalse +%</themes-witiko-markdown-defaults-context> +%<*context> +% \fi +% \par +% \begin{markdown} +% +% At the end of the \Hologo{ConTeXt} module, we load the +% `witiko/markdown/defaults` \Hologo{ConTeXt} theme with the default +% definitions for token renderer prototypes unless the option `noDefaults` +% has been enabled (see Section <#sec:plain>). +% +% \end{markdown} +% \begin{macrocode} +\markdownIfOption{noDefaults}{}{ + \setupmarkdown[theme=witiko/markdown/defaults] +} +\stopmodule +\protect % \end{macrocode} % \iffalse %</context> diff --git a/macros/generic/markdown/markdown.html b/macros/generic/markdown/markdown.html index 7318814624..a923528363 100644 --- a/macros/generic/markdown/markdown.html +++ b/macros/generic/markdown/markdown.html @@ -4,17 +4,27 @@ <meta charset="utf-8" /> <meta name="generator" content="pandoc" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> - <meta name="author" content="Vít Novotný" /> + <meta name="author" content="Vít Starý Novotný" /> <title>Markdown Package User Manual</title> <style> code{white-space: pre-wrap;} span.smallcaps{font-variant: small-caps;} - span.underline{text-decoration: underline;} - div.column{display: inline-block; vertical-align: top; width: 50%;} + div.columns{display: flex; gap: min(4vw, 1.5em);} + div.column{flex: auto; overflow-x: auto;} div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} - ul.task-list{list-style: none;} + /* The extra [class] is a hack that increases specificity enough to + override a similar rule in reveal.js */ + ul.task-list[class]{list-style: none;} + ul.task-list li input[type="checkbox"] { + font-size: inherit; + width: 0.8em; + margin: 0 0.8em 0.2em -1.6em; + vertical-align: middle; + } + .display.math{display: block; text-align: center; margin: 0.5rem auto;} + /* CSS for syntax highlighting */ pre > code.sourceCode { white-space: pre; position: relative; } - pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } + pre > code.sourceCode > span { line-height: 1.25; } pre > code.sourceCode > span:empty { height: 1.2em; } .sourceCode { overflow: visible; } code.sourceCode > span { color: inherit; text-decoration: inherit; } @@ -76,77 +86,92 @@ code span.va { color: #19177c; } /* Variable */ code span.vs { color: #4070a0; } /* VerbatimString */ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ - .display.math{display: block; text-align: center; margin: 0.5rem auto;} </style> <link rel="stylesheet" href="markdown.css" /> </head> <body> <header id="title-block-header"> <h1 class="title">Markdown Package User Manual</h1> -<p class="author">Vít Novotný</p> -<p class="date">2.23.0-0-g0b22f91 2023-04-27</p> +<p class="author">Vít Starý Novotný</p> +<p class="date">3.4.1-0-g457226ae 2024-02-16</p> </header> <nav id="TOC" role="doc-toc"> <ul> -<li><a href="#introduction"><span class="toc-section-number">1</span> -Introduction</a> +<li><a href="#introduction" id="toc-introduction"><span +class="toc-section-number">1</span> Introduction</a> <ul> -<li><a href="#requirements"><span class="toc-section-number">1.1</span> -Requirements</a></li> -<li><a href="#installation"><span class="toc-section-number">1.2</span> -Installation</a> +<li><a href="#requirements" id="toc-requirements"><span +class="toc-section-number">1.1</span> Requirements</a></li> +<li><a href="#installation" id="toc-installation"><span +class="toc-section-number">1.2</span> Installation</a> <ul> -<li><a href="#local-installation"><span +<li><a href="#local-installation" id="toc-local-installation"><span class="toc-section-number">1.2.1</span> Local Installation</a></li> -<li><a href="#portable-installation"><span +<li><a href="#portable-installation" +id="toc-portable-installation"><span class="toc-section-number">1.2.2</span> Portable Installation</a></li> </ul></li> -<li><a href="#first-document"><span +<li><a href="#first-document" id="toc-first-document"><span class="toc-section-number">1.3</span> First Document</a> <ul> -<li><a href="#using-lua"><span class="toc-section-number">1.3.1</span> -Using Lua</a></li> -<li><a href="#using-plain-tex"><span +<li><a href="#using-lua" id="toc-using-lua"><span +class="toc-section-number">1.3.1</span> Using Lua</a></li> +<li><a href="#using-plain-tex" id="toc-using-plain-tex"><span class="toc-section-number">1.3.2</span> Using Plain <span class="tex">T<sub>e</sub>X</span></a></li> -<li><a href="#using-latex"><span class="toc-section-number">1.3.3</span> -Using <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span></a></li> -<li><a href="#using-context"><span +<li><a href="#using-latex" id="toc-using-latex"><span +class="toc-section-number">1.3.3</span> Using <span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span></a></li> +<li><a href="#using-context" id="toc-using-context"><span class="toc-section-number">1.3.4</span> Using Con<span class="tex">T<sub>e</sub>X</span>t</a></li> </ul></li> </ul></li> -<li><a href="#examples"><span class="toc-section-number">2</span> -Examples</a> +<li><a href="#examples" id="toc-examples"><span +class="toc-section-number">2</span> Examples</a> <ul> -<li><a href="#interfaces"><span class="toc-section-number">2.1</span> -Interfaces</a> +<li><a href="#interfaces" id="toc-interfaces"><span +class="toc-section-number">2.1</span> Interfaces</a> <ul> -<li><a href="#lua"><span class="toc-section-number">2.1.1</span> -Lua</a></li> -<li><a href="#plain-tex"><span class="toc-section-number">2.1.2</span> -Plain <span class="tex">T<sub>e</sub>X</span></a></li> -<li><a href="#latex"><span class="toc-section-number">2.1.3</span> <span +<li><a href="#lua" id="toc-lua"><span +class="toc-section-number">2.1.1</span> Lua</a></li> +<li><a href="#plain-tex" id="toc-plain-tex"><span +class="toc-section-number">2.1.2</span> Plain <span +class="tex">T<sub>e</sub>X</span></a></li> +<li><a href="#latex" id="toc-latex"><span +class="toc-section-number">2.1.3</span> <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span></a></li> -<li><a href="#context"><span class="toc-section-number">2.1.4</span> -Con<span class="tex">T<sub>e</sub>X</span>t</a></li> +<li><a href="#context" id="toc-context"><span +class="toc-section-number">2.1.4</span> Con<span +class="tex">T<sub>e</sub>X</span>t</a></li> </ul></li> -<li><a href="#options"><span class="toc-section-number">2.2</span> -Options</a> +<li><a href="#options" id="toc-options"><span +class="toc-section-number">2.2</span> Options</a> <ul> -<li><a href="#lua-1"><span class="toc-section-number">2.2.1</span> -Lua</a></li> -<li><a href="#plain-tex-1"><span class="toc-section-number">2.2.2</span> -Plain <span class="tex">T<sub>e</sub>X</span></a></li> -<li><a href="#latex-1"><span class="toc-section-number">2.2.3</span> -<span class="latex">L<sup>a</sup>T<sub>e</sub>X</span></a></li> +<li><a href="#lua-1" id="toc-lua-1"><span +class="toc-section-number">2.2.1</span> Lua</a></li> +<li><a href="#plain-tex-1" id="toc-plain-tex-1"><span +class="toc-section-number">2.2.2</span> Plain <span +class="tex">T<sub>e</sub>X</span></a></li> +<li><a href="#themes" id="toc-themes"><span +class="toc-section-number">2.2.3</span> Themes</a></li> +<li><a href="#snippets" id="toc-snippets"><span +class="toc-section-number">2.2.4</span> Snippets</a></li> +<li><a href="#latex-1" id="toc-latex-1"><span +class="toc-section-number">2.2.5</span> <span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span></a></li> +<li><a href="#latexthemes" id="toc-latexthemes"><span +class="toc-section-number">2.2.6</span> Themes</a></li> +<li><a href="#themes-1" id="toc-themes-1"><span +class="toc-section-number">2.2.7</span> Themes</a></li> </ul></li> -<li><a href="#markdown-tokens"><span +<li><a href="#markdown-tokens" id="toc-markdown-tokens"><span class="toc-section-number">2.3</span> Markdown Tokens</a> <ul> -<li><a href="#texrenderersuser"><span +<li><a href="#texrenderersuser" id="toc-texrenderersuser"><span class="toc-section-number">2.3.1</span> Token Renderers</a></li> -<li><a href="#texrendererprototypes"><span +<li><a href="#texrendererprototypes" +id="toc-texrendererprototypes"><span class="toc-section-number">2.3.2</span> Token Renderer Prototypes</a></li> </ul></li> @@ -158,10 +183,10 @@ Prototypes</a></li> class="header-section-number">1</span> Introduction</h1> <p>The <a href="https://ctan.org/pkg/markdown" title="CTAN: Package markdown">Markdown package</a> converts <a -href="https://daringfireball.net/projects/markdown/basics" -title="Daring Fireball: Markdown Basics">markdown</a> markup to <span -class="tex">T<sub>e</sub>X</span> commands. The functionality is -provided both as a Lua module and as plain <span +href="https://commonmark.org/" +title="CommonMark: A strongly defined, highly compatible specification of Markdown">CommonMark</a> +markup to <span class="tex">T<sub>e</sub>X</span> commands. The +functionality is provided both as a Lua module and as plain <span class="tex">T<sub>e</sub>X</span>, <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span>, and Con<span class="tex">T<sub>e</sub>X</span>t macro packages that can be used to @@ -209,25 +234,28 @@ it.</p> <span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span> base</span></code></pre></div> <p>This should produce the following files:</p> <ul> -<li><code>markdown.lua</code>, the Lua module,</li> -<li><code>libraries/markdown-tinyyaml.lua</code>, an external library -for reading <abbr>yaml</abbr>,</li> -<li><code>markdown-cli.lua</code>, the Lua command-line interface,</li> -<li><code>markdown.tex</code>, the plain <span -class="tex">T<sub>e</sub>X</span> macro package,</li> -<li><code>markdown.sty</code>, the <span -class="latex">L<sup>a</sup>T<sub>e</sub>X</span> package,</li> -<li><code>markdownthemewitiko_dot.sty</code>, the +<li><code>markdown.lua</code>: The Lua module</li> +<li><code>libraries/markdown-tinyyaml.lua</code>: An external library +for reading <abbr>yaml</abbr></li> +<li><code>markdown-cli.lua</code>: The Lua command-line interface</li> +<li><code>markdown.tex</code>: The plain <span +class="tex">T<sub>e</sub>X</span> macro package</li> +<li><code>markdown.sty</code>: The <span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> package</li> +<li><code>markdownthemewitiko_dot.sty</code>: The <code>witiko/dot</code> <span -class="latex">L<sup>a</sup>T<sub>e</sub>X</span> theme,</li> -<li><code>markdownthemewitiko_graphicx_http.sty</code>, the +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> theme</li> +<li><code>markdownthemewitiko_graphicx_http.sty</code>: The <code>witiko/graphicx/http</code> <span -class="latex">L<sup>a</sup>T<sub>e</sub>X</span> theme,</li> -<li><code>markdownthemewitiko_tilde.sty</code>, the -<code>witiko/tilde</code> <span -class="latex">L<sup>a</sup>T<sub>e</sub>X</span> theme, and</li> -<li><code>t-markdown.tex</code>, the Con<span -class="tex">T<sub>e</sub>X</span>t module.</li> +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> theme</li> +<li><code>markdownthemewitiko_tilde.tex</code>: The +<code>witiko/tilde</code> theme</li> +<li><code>markdownthemewitiko_markdown_defaults.tex</code>, +<code>markdownthemewitiko_markdown_defaults.sty</code>, and +<code>t-markdownthemewitiko_markdown_defaults.tex</code>: The +<code>witiko/markdown/defaults</code> theme</li> +<li><code>t-markdown.tex</code>: The Con<span +class="tex">T<sub>e</sub>X</span>t module</li> </ul> <h3 data-number="1.2.1" id="local-installation"><span class="header-section-number">1.2.1</span> Local Installation</h3> @@ -239,11 +267,14 @@ generally where the individual files should be placed:</p> <li><code>⟨TEXMF⟩/tex/luatex/markdown/markdown-tinyyaml.lua</code></li> <li><code>⟨TEXMF⟩/scripts/markdown/markdown-cli.lua</code></li> <li><code>⟨TEXMF⟩/tex/generic/markdown/markdown.tex</code></li> +<li><code>⟨TEXMF⟩/tex/generic/markdown/markdownthemewitiko_tilde.tex</code></li> +<li><code>⟨TEXMF⟩/tex/generic/markdown/markdownthemewitiko_markdown_defaults.tex</code></li> <li><code>⟨TEXMF⟩/tex/latex/markdown/markdown.sty</code></li> <li><code>⟨TEXMF⟩/tex/latex/markdown/markdownthemewitiko_dot.sty</code></li> <li><code>⟨TEXMF⟩/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty</code></li> -<li><code>⟨TEXMF⟩/tex/latex/markdown/markdownthemewitiko_tilde.sty</code></li> +<li><code>⟨TEXMF⟩/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty</code></li> <li><code>⟨TEXMF⟩/tex/context/third/markdown/t-markdown.tex</code></li> +<li><code>⟨TEXMF⟩/tex/context/third/markdown/t-markdownthemewitiko_markdown_defaults.tex</code></li> </ul> <p>where <code>⟨TEXMF⟩</code> corresponds to a root of your <span class="tex">T<sub>e</sub>X</span> distribution, such as @@ -257,11 +288,21 @@ class="header-section-number">1.2.2</span> Portable Installation</h3> as your <span class="tex">T<sub>e</sub>X</span> document and distribute them together. This way your document can be portably typeset on legacy <span class="tex">T<sub>e</sub>X</span> distributions.</p> -<p>Since Markdown version 2.10.0, the file <code>markdown.tex</code> -must be placed in a directory named <code>markdown</code> due to <a -href="https://github.com/witiko/markdown/issues/74" -title="Does not compile if user names own document markdown.tex">issue -#74</a>.</p> +<p>This is where the individual files should be placed:</p> +<ul> +<li><code>./markdown.lua</code></li> +<li><code>./markdown-tinyyaml.lua</code></li> +<li><code>./markdown-cli.lua</code></li> +<li><code>./markdown/markdown.tex</code></li> +<li><code>./markdown.sty</code></li> +<li><code>./t-markdown.tex</code></li> +<li><code>./markdownthemewitiko_dot.sty</code></li> +<li><code>./markdownthemewitiko_graphicx_http.sty</code></li> +<li><code>./markdownthemewitiko_tilde.tex</code></li> +<li><code>./markdownthemewitiko_markdown_defaults.tex</code></li> +<li><code>./markdownthemewitiko_markdown_defaults.sty</code></li> +<li><code>./t-markdownthemewitiko_markdown_defaults.tex</code></li> +</ul> <h2 data-number="1.3" id="first-document"><span class="header-section-number">1.3</span> First Document</h2> <p>In this section, we will take the necessary steps to typeset our @@ -283,18 +324,22 @@ class="header-section-number">1.3.1</span> Using Lua</h3> <code>document.tex</code> with the following content:</p> <div class="sourceCode" id="cb4"><pre class="sourceCode tex"><code class="sourceCode latex"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> hello</span> -<span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb4-4"><a href="#cb4-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb4-5"><a href="#cb4-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> hello</span> +<span id="cb4-6"><a href="#cb4-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb4-7"><a href="#cb4-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <h4 data-number="1.3.1.1" id="using-the-lua-module"><span class="header-section-number">1.3.1.1</span> Using the Lua Module</h4> <p>Using a text editor, create a text document named <code>hello.lua</code> with the following content:</p> <div class="sourceCode" id="cb5"><pre class="sourceCode lua"><code class="sourceCode lua"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="co">#!/usr/bin/env texlua</span></span> -<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> ran_ok<span class="op">,</span> kpse <span class="op">=</span> <span class="fu">pcall</span><span class="op">(</span><span class="fu">require</span><span class="op">,</span> <span class="st">"kpse"</span><span class="op">)</span></span> -<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> ran_ok <span class="cf">then</span> kpse<span class="op">.</span>set_program_name<span class="op">(</span><span class="st">"luatex"</span><span class="op">)</span> <span class="cf">end</span></span> -<span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> markdown <span class="op">=</span> <span class="fu">require</span><span class="op">(</span><span class="st">"markdown"</span><span class="op">)</span></span> -<span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> convert <span class="op">=</span> markdown<span class="op">.</span>new<span class="op">()</span></span> +<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> <span class="va">kpse</span> <span class="op">=</span> <span class="fu">require</span><span class="op">(</span><span class="st">"kpse"</span><span class="op">)</span></span> +<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a><span class="va">kpse</span><span class="op">.</span>set_program_name<span class="op">(</span><span class="st">"luatex"</span><span class="op">)</span></span> +<span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> <span class="va">markdown</span> <span class="op">=</span> <span class="fu">require</span><span class="op">(</span><span class="st">"markdown"</span><span class="op">)</span></span> +<span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> <span class="va">convert</span> <span class="op">=</span> <span class="va">markdown</span><span class="op">.</span>new<span class="op">()</span></span> <span id="cb5-6"><a href="#cb5-6" aria-hidden="true" tabindex="-1"></a><span class="fu">print</span><span class="op">(</span>convert<span class="op">(</span><span class="st">"Hello *world*!"</span><span class="op">))</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> <div class="sourceCode" id="cb6"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> hello.lua <span class="op">></span> hello.tex</span> @@ -344,77 +389,144 @@ class="sourceCode tex"><code class="sourceCode latex"><span id="cb11-1"><a href= <div class="sourceCode" id="cb12"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and -contain the text “Hello <em>world</em>!” Invoking pdfTeX should have the -same effect:</p> +contain the text “Hello <em>world</em>!”</p> +<p>Instead of LuaTeX, you may also use pdfTeX:</p> <div class="sourceCode" id="cb13"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> +<p>This should also produce a PDF document named +<code>document.pdf</code> with the same content.</p> +<hr /> +<p>Instead of writing your markdown document between +<code>\markdownBegin</code> and <code>\markdownEnd</code>, you can also +include markdown documents using the <code>\markdownInput</code> macro, +similarly to how you might use the <code>\input</code> TeX primitive to +include <span class="tex">T<sub>e</sub>X</span> documents.</p> +<p>Using a text editor, create a text document named +<code>hello.md</code> with the following content:</p> +<div class="sourceCode" id="cb14"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span></code></pre></div> +<p>Create also a text document named <code>document.tex</code> with the +following content:</p> +<div class="sourceCode" id="cb15"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb15-2"><a href="#cb15-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hello.md}</span> +<span id="cb15-3"><a href="#cb15-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<p>Next, invoke LuaTeX or pdfTeX from the terminal like in the previous +example. A PDF document named <code>document.pdf</code> should be +produced and contain the text “Hello <em>world</em>!”</p> <h3 data-number="1.3.3" id="using-latex"><span class="header-section-number">1.3.3</span> Using <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span></h3> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb14"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb14-2"><a href="#cb14-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb14-3"><a href="#cb14-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb14-4"><a href="#cb14-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb14-5"><a href="#cb14-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> -<span id="cb14-6"><a href="#cb14-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb14-7"><a href="#cb14-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb16"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb16-2"><a href="#cb16-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb16-3"><a href="#cb16-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb16-4"><a href="#cb16-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb16-5"><a href="#cb16-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> +<span id="cb16-6"><a href="#cb16-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb16-7"><a href="#cb16-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb15"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb17"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and -contain the text “Hello <em>world</em>!” Invoking pdfTeX should have the -same effect:</p> -<div class="sourceCode" id="cb16"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdflatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> +contain the text “Hello <em>world</em>!”</p> +<p>Instead of LuaTeX, you may also use pdfTeX:</p> +<div class="sourceCode" id="cb18"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdflatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> +<p>This should also produce a PDF document named +<code>document.pdf</code> with the same content.</p> +<hr /> +<p>Instead of writing your markdown document between +<code>\begin{markdown}</code> and <code>\end{markdown}</code>, you can +also include markdown documents using the <code>\markdownInput</code> +macro, similarly to how you might use the <code>\input</code> TeX +primitive to include <span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> documents.</p> +<p>Using a text editor, create a text document named +<code>hello.md</code> with the following content:</p> +<div class="sourceCode" id="cb19"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span></code></pre></div> +<p>Create also a text document named <code>document.tex</code> with the +following content:</p> +<div class="sourceCode" id="cb20"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb20-2"><a href="#cb20-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb20-3"><a href="#cb20-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb20-4"><a href="#cb20-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb20-5"><a href="#cb20-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hello.md}</span> +<span id="cb20-6"><a href="#cb20-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb20-7"><a href="#cb20-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<p>Next, invoke LuaTeX or pdfTeX from the terminal like in the previous +example. A PDF document named <code>document.pdf</code> should be +produced and contain the text “Hello <em>world</em>!”</p> <hr /> <p>As the next step, try typesetting the example documents distributed along with the Markdown package:</p> -<div class="sourceCode" id="cb17"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a><span class="fu">git</span> clone https://github.com/witiko/markdown</span> -<span id="cb17-2"><a href="#cb17-2" aria-hidden="true" tabindex="-1"></a><span class="bu">cd</span> markdown/examples</span> -<span id="cb17-3"><a href="#cb17-3" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> latex-luatex.tex</span></code></pre></div> +<div class="sourceCode" id="cb21"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true" tabindex="-1"></a><span class="fu">git</span> clone https://github.com/witiko/markdown</span> +<span id="cb21-2"><a href="#cb21-2" aria-hidden="true" tabindex="-1"></a><span class="bu">cd</span> markdown/examples</span> +<span id="cb21-3"><a href="#cb21-3" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> latex-luatex.tex</span></code></pre></div> <p>A PDF document named <code>latex-luatex.pdf</code> should be produced. Open the text documents <code>latex-luatex.tex</code> and <code>example.md</code> in a text editor to see how the example documents are structured. Try changing the documents and typesetting them as follows:</p> -<div class="sourceCode" id="cb18"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> latex-luatex.tex</span></code></pre></div> +<div class="sourceCode" id="cb22"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb22-1"><a href="#cb22-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> latex-luatex.tex</span></code></pre></div> <p>to see the effect of your changes.</p> <h3 data-number="1.3.4" id="using-context"><span class="header-section-number">1.3.4</span> Using Con<span class="tex">T<sub>e</sub>X</span>t</h3> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb19"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb19-2"><a href="#cb19-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb19-3"><a href="#cb19-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb19-4"><a href="#cb19-4" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> -<span id="cb19-5"><a href="#cb19-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb19-6"><a href="#cb19-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb23"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb23-2"><a href="#cb23-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb23-3"><a href="#cb23-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb23-4"><a href="#cb23-4" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> +<span id="cb23-5"><a href="#cb23-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb23-6"><a href="#cb23-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb20"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb24"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb24-1"><a href="#cb24-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!”</p> <hr /> +<p>Instead of writing your markdown document between +<code>\startmarkdown</code> and <code>\stopmarkdown</code>, you can also +include markdown documents using the <code>\inputmarkdown</code> macro, +similarly to how you might use the <code>\input</code> TeX primitive to +include Con<span class="tex">T<sub>e</sub>X</span>t documents.</p> +<p>Using a text editor, create a text document named +<code>hello.md</code> with the following content:</p> +<div class="sourceCode" id="cb25"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb25-1"><a href="#cb25-1" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span></code></pre></div> +<p>Create also a text document named <code>document.tex</code> with the +following content:</p> +<div class="sourceCode" id="cb26"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb26-1"><a href="#cb26-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb26-2"><a href="#cb26-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb26-3"><a href="#cb26-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>{hello.md}</span> +<span id="cb26-4"><a href="#cb26-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal like in the previous example. A +PDF document named <code>document.pdf</code> should be produced and +contain the text “Hello <em>world</em>!”</p> +<hr /> <p>As the next step, try typesetting the example documents distributed along with the Markdown package:</p> -<div class="sourceCode" id="cb21"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true" tabindex="-1"></a><span class="fu">git</span> clone https://github.com/witiko/markdown</span> -<span id="cb21-2"><a href="#cb21-2" aria-hidden="true" tabindex="-1"></a><span class="bu">cd</span> markdown/examples</span> -<span id="cb21-3"><a href="#cb21-3" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> context.tex</span></code></pre></div> +<div class="sourceCode" id="cb27"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb27-1"><a href="#cb27-1" aria-hidden="true" tabindex="-1"></a><span class="fu">git</span> clone https://github.com/witiko/markdown</span> +<span id="cb27-2"><a href="#cb27-2" aria-hidden="true" tabindex="-1"></a><span class="bu">cd</span> markdown/examples</span> +<span id="cb27-3"><a href="#cb27-3" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> context.tex</span></code></pre></div> <p>A PDF document named <code>context.pdf</code> should be produced. Open the text documents <code>context.tex</code> and <code>example.md</code> in a text editor to see how the example documents are structured. Try changing the documents and typesetting them as follows:</p> -<div class="sourceCode" id="cb22"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb22-1"><a href="#cb22-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> context.tex</span></code></pre></div> +<div class="sourceCode" id="cb28"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb28-1"><a href="#cb28-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> context.tex</span></code></pre></div> <p>to see the effect of your changes.</p> <h1 data-number="2" id="examples"><span class="header-section-number">2</span> Examples</h1> @@ -457,33 +569,37 @@ parameter is optional; when unspecified, the behaviour will be the same as if ⟨<em>options</em>⟩ were an empty table.</p> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb23"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb23-2"><a href="#cb23-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb23-3"><a href="#cb23-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> example</span> -<span id="cb23-4"><a href="#cb23-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb29"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb29-1"><a href="#cb29-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb29-2"><a href="#cb29-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb29-3"><a href="#cb29-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb29-4"><a href="#cb29-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb29-5"><a href="#cb29-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb29-6"><a href="#cb29-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> example</span> +<span id="cb29-7"><a href="#cb29-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb29-8"><a href="#cb29-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Using a text editor, create a text document named <code>example.lua</code> with the following content:</p> -<div class="sourceCode" id="cb24"><pre -class="sourceCode lua"><code class="sourceCode lua"><span id="cb24-1"><a href="#cb24-1" aria-hidden="true" tabindex="-1"></a><span class="co">#!/usr/bin/env texlua</span></span> -<span id="cb24-2"><a href="#cb24-2" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> ran_ok<span class="op">,</span> kpse <span class="op">=</span> <span class="fu">pcall</span><span class="op">(</span><span class="fu">require</span><span class="op">,</span> <span class="st">"kpse"</span><span class="op">)</span></span> -<span id="cb24-3"><a href="#cb24-3" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> ran_ok <span class="cf">then</span> kpse<span class="op">.</span>set_program_name<span class="op">(</span><span class="st">"luatex"</span><span class="op">)</span> <span class="cf">end</span></span> -<span id="cb24-4"><a href="#cb24-4" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> markdown <span class="op">=</span> <span class="fu">require</span><span class="op">(</span><span class="st">"markdown"</span><span class="op">)</span></span> -<span id="cb24-5"><a href="#cb24-5" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> input<span class="op">,</span> convert_safe<span class="op">,</span> convert_unsafe<span class="op">,</span> paragraph</span> -<span id="cb24-6"><a href="#cb24-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb24-7"><a href="#cb24-7" aria-hidden="true" tabindex="-1"></a>input <span class="op">=</span> <span class="vs">[[$\sqrt{-1}$ *equals* $i$.]]</span></span> -<span id="cb24-8"><a href="#cb24-8" aria-hidden="true" tabindex="-1"></a>convert_safe <span class="op">=</span> markdown<span class="op">.</span>new<span class="op">()</span></span> -<span id="cb24-9"><a href="#cb24-9" aria-hidden="true" tabindex="-1"></a>convert_unsafe <span class="op">=</span> markdown<span class="op">.</span>new<span class="op">({</span>hybrid <span class="op">=</span> <span class="kw">true</span><span class="op">})</span></span> -<span id="cb24-10"><a href="#cb24-10" aria-hidden="true" tabindex="-1"></a>paragraph <span class="op">=</span> <span class="vs">[[\par]]</span></span> -<span id="cb24-11"><a href="#cb24-11" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb24-12"><a href="#cb24-12" aria-hidden="true" tabindex="-1"></a><span class="fu">print</span><span class="op">(</span></span> -<span id="cb24-13"><a href="#cb24-13" aria-hidden="true" tabindex="-1"></a> convert_safe<span class="op">(</span>input<span class="op">)</span> <span class="op">..</span> paragraph <span class="op">..</span></span> -<span id="cb24-14"><a href="#cb24-14" aria-hidden="true" tabindex="-1"></a> convert_unsafe<span class="op">(</span>input<span class="op">)</span></span> -<span id="cb24-15"><a href="#cb24-15" aria-hidden="true" tabindex="-1"></a><span class="op">)</span></span></code></pre></div> +<div class="sourceCode" id="cb30"><pre +class="sourceCode lua"><code class="sourceCode lua"><span id="cb30-1"><a href="#cb30-1" aria-hidden="true" tabindex="-1"></a><span class="co">#!/usr/bin/env texlua</span></span> +<span id="cb30-2"><a href="#cb30-2" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> <span class="va">kpse</span> <span class="op">=</span> <span class="fu">require</span><span class="op">(</span><span class="st">"kpse"</span><span class="op">)</span></span> +<span id="cb30-3"><a href="#cb30-3" aria-hidden="true" tabindex="-1"></a><span class="va">kpse</span><span class="op">.</span>set_program_name<span class="op">(</span><span class="st">"luatex"</span><span class="op">)</span></span> +<span id="cb30-4"><a href="#cb30-4" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> <span class="va">markdown</span> <span class="op">=</span> <span class="fu">require</span><span class="op">(</span><span class="st">"markdown"</span><span class="op">)</span></span> +<span id="cb30-5"><a href="#cb30-5" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> <span class="va">input</span><span class="op">,</span> <span class="va">convert_nomath</span><span class="op">,</span> <span class="va">convert_math</span><span class="op">,</span> <span class="va">paragraph</span></span> +<span id="cb30-6"><a href="#cb30-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb30-7"><a href="#cb30-7" aria-hidden="true" tabindex="-1"></a><span class="va">input</span> <span class="op">=</span> <span class="vs">[[$\sqrt{-1}$ *equals* $i$.]]</span></span> +<span id="cb30-8"><a href="#cb30-8" aria-hidden="true" tabindex="-1"></a><span class="va">convert_nomath</span> <span class="op">=</span> <span class="va">markdown</span><span class="op">.</span>new<span class="op">()</span></span> +<span id="cb30-9"><a href="#cb30-9" aria-hidden="true" tabindex="-1"></a><span class="va">convert_math</span> <span class="op">=</span> <span class="va">markdown</span><span class="op">.</span>new<span class="op">({</span><span class="va">texMathDollars</span> <span class="op">=</span> <span class="kw">true</span><span class="op">})</span></span> +<span id="cb30-10"><a href="#cb30-10" aria-hidden="true" tabindex="-1"></a><span class="va">paragraph</span> <span class="op">=</span> <span class="vs">[[\par]]</span></span> +<span id="cb30-11"><a href="#cb30-11" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb30-12"><a href="#cb30-12" aria-hidden="true" tabindex="-1"></a><span class="fu">print</span><span class="op">(</span></span> +<span id="cb30-13"><a href="#cb30-13" aria-hidden="true" tabindex="-1"></a> convert_nomath<span class="op">(</span><span class="va">input</span><span class="op">)</span> <span class="op">..</span> <span class="va">paragraph</span> <span class="op">..</span></span> +<span id="cb30-14"><a href="#cb30-14" aria-hidden="true" tabindex="-1"></a> convert_math<span class="op">(</span><span class="va">input</span><span class="op">)</span></span> +<span id="cb30-15"><a href="#cb30-15" aria-hidden="true" tabindex="-1"></a><span class="op">)</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb25"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb25-1"><a href="#cb25-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> example.lua <span class="op">></span> example.tex</span> -<span id="cb25-2"><a href="#cb25-2" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb31"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb31-1"><a href="#cb31-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> example.lua <span class="op">></span> example.tex</span> +<span id="cb31-2"><a href="#cb31-2" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -492,35 +608,35 @@ contain the following text:</p> <em>equals</em> <math><mi>i</mi></math>.</p> </blockquote> <p>Invoking pdfTeX should have the same effect:</p> -<div class="sourceCode" id="cb26"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb26-1"><a href="#cb26-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> example.lua <span class="op">></span> example.tex</span> -<span id="cb26-2"><a href="#cb26-2" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb32"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb32-1"><a href="#cb32-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> example.lua <span class="op">></span> example.tex</span> +<span id="cb32-2"><a href="#cb32-2" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> document.tex</span></code></pre></div> <hr /> <p>Rather than use the <code>texlua</code> interpreter, we can also access the <code>markdown</code> Lua module directly from our document. Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb27"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb27-1"><a href="#cb27-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb27-2"><a href="#cb27-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb27-3"><a href="#cb27-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> -<span id="cb27-4"><a href="#cb27-4" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> -<span id="cb27-5"><a href="#cb27-5" aria-hidden="true" tabindex="-1"></a> local input, convert_safe, convert_unsafe, paragraph</span> -<span id="cb27-6"><a href="#cb27-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb27-7"><a href="#cb27-7" aria-hidden="true" tabindex="-1"></a> input = [[<span class="ss">$</span><span class="sc">\string\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.]]</span> -<span id="cb27-8"><a href="#cb27-8" aria-hidden="true" tabindex="-1"></a> convert_safe = markdown.new()</span> -<span id="cb27-9"><a href="#cb27-9" aria-hidden="true" tabindex="-1"></a> convert_unsafe = markdown.new({hybrid = true})</span> -<span id="cb27-10"><a href="#cb27-10" aria-hidden="true" tabindex="-1"></a> paragraph = [[<span class="fu">\par</span>]]</span> -<span id="cb27-11"><a href="#cb27-11" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb27-12"><a href="#cb27-12" aria-hidden="true" tabindex="-1"></a> tex.sprint(</span> -<span id="cb27-13"><a href="#cb27-13" aria-hidden="true" tabindex="-1"></a> convert_safe(input) .. paragraph ..</span> -<span id="cb27-14"><a href="#cb27-14" aria-hidden="true" tabindex="-1"></a> convert_unsafe(input)</span> -<span id="cb27-15"><a href="#cb27-15" aria-hidden="true" tabindex="-1"></a> )</span> -<span id="cb27-16"><a href="#cb27-16" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb27-17"><a href="#cb27-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb33"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb33-1"><a href="#cb33-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb33-2"><a href="#cb33-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb33-3"><a href="#cb33-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb33-4"><a href="#cb33-4" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb33-5"><a href="#cb33-5" aria-hidden="true" tabindex="-1"></a> local input, convert_nomath, convert_math, paragraph</span> +<span id="cb33-6"><a href="#cb33-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb33-7"><a href="#cb33-7" aria-hidden="true" tabindex="-1"></a> input = [[<span class="ss">$</span><span class="sc">\string\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.]]</span> +<span id="cb33-8"><a href="#cb33-8" aria-hidden="true" tabindex="-1"></a> convert_nomath = markdown.new()</span> +<span id="cb33-9"><a href="#cb33-9" aria-hidden="true" tabindex="-1"></a> convert_math = markdown.new({texMathDollars = true})</span> +<span id="cb33-10"><a href="#cb33-10" aria-hidden="true" tabindex="-1"></a> paragraph = [[<span class="fu">\par</span>]]</span> +<span id="cb33-11"><a href="#cb33-11" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb33-12"><a href="#cb33-12" aria-hidden="true" tabindex="-1"></a> tex.sprint(</span> +<span id="cb33-13"><a href="#cb33-13" aria-hidden="true" tabindex="-1"></a> convert_nomath(input) .. paragraph ..</span> +<span id="cb33-14"><a href="#cb33-14" aria-hidden="true" tabindex="-1"></a> convert_math(input)</span> +<span id="cb33-15"><a href="#cb33-15" aria-hidden="true" tabindex="-1"></a> )</span> +<span id="cb33-16"><a href="#cb33-16" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb33-17"><a href="#cb33-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb28"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb28-1"><a href="#cb28-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb34"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb34-1"><a href="#cb34-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -544,25 +660,26 @@ Lua programming language.</p> command-line parameters.</p> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb29"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb29-1"><a href="#cb29-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb29-2"><a href="#cb29-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb29-3"><a href="#cb29-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> safe</span> -<span id="cb29-4"><a href="#cb29-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb29-5"><a href="#cb29-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> -<span id="cb29-6"><a href="#cb29-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> -<span id="cb29-7"><a href="#cb29-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> unsafe</span> -<span id="cb29-8"><a href="#cb29-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> -<span id="cb29-9"><a href="#cb29-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb35"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb35-1"><a href="#cb35-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb35-2"><a href="#cb35-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb35-3"><a href="#cb35-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb35-4"><a href="#cb35-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb35-5"><a href="#cb35-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb35-6"><a href="#cb35-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> nomath</span> +<span id="cb35-7"><a href="#cb35-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> +<span id="cb35-8"><a href="#cb35-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> math</span> +<span id="cb35-9"><a href="#cb35-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb35-10"><a href="#cb35-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Using a text editor, create a text document named <code>example.md</code> with the following content:</p> -<div class="sourceCode" id="cb30"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb30-1"><a href="#cb30-1" aria-hidden="true" tabindex="-1"></a>$\sqrt{-1}$ *equals* $i$.</span></code></pre></div> +<div class="sourceCode" id="cb36"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb36-1"><a href="#cb36-1" aria-hidden="true" tabindex="-1"></a>$\sqrt{-1}$ *equals* $i$.</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb31"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb31-1"><a href="#cb31-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> example.md safe.tex</span> -<span id="cb31-2"><a href="#cb31-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ hybrid=true <span class="at">--</span> example.md unsafe.tex</span> -<span id="cb31-3"><a href="#cb31-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb37"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb37-1"><a href="#cb37-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> example.md nomath.tex</span> +<span id="cb37-2"><a href="#cb37-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ tex_math_dollars=true <span class="at">--</span> example.md math.tex</span> +<span id="cb37-3"><a href="#cb37-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua CLI script file, such as <code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems @@ -580,10 +697,10 @@ contain the following text:</p> <em>equals</em> <math><mi>i</mi></math>.</p> </blockquote> <p>Invoking pdfTeX should have the same effect:</p> -<div class="sourceCode" id="cb32"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb32-1"><a href="#cb32-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> example.md safe.tex</span> -<span id="cb32-2"><a href="#cb32-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ hybrid=true <span class="at">--</span> example.md unsafe.tex</span> -<span id="cb32-3"><a href="#cb32-3" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb38"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb38-1"><a href="#cb38-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> example.md nomath.tex</span> +<span id="cb38-2"><a href="#cb38-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ tex_math_dollars=true <span class="at">--</span> example.md math.tex</span> +<span id="cb38-3"><a href="#cb38-3" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> document.tex</span></code></pre></div> <h3 data-number="2.1.2" id="plain-tex"><span class="header-section-number">2.1.2</span> Plain <span class="tex">T<sub>e</sub>X</span></h3> @@ -599,23 +716,23 @@ its own options, but now the options are specified as <span class="tex">T<sub>e</sub>X</span> commands.</p> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb33"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb33-1"><a href="#cb33-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb33-2"><a href="#cb33-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb33-3"><a href="#cb33-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb33-4"><a href="#cb33-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb33-5"><a href="#cb33-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> -<span id="cb33-6"><a href="#cb33-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb33-7"><a href="#cb33-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb33-8"><a href="#cb33-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span> -<span id="cb33-9"><a href="#cb33-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb33-10"><a href="#cb33-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> -<span id="cb33-11"><a href="#cb33-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb33-12"><a href="#cb33-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb33-13"><a href="#cb33-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb39"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb39-1"><a href="#cb39-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb39-2"><a href="#cb39-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb39-3"><a href="#cb39-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb39-4"><a href="#cb39-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb39-5"><a href="#cb39-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> +<span id="cb39-6"><a href="#cb39-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb39-7"><a href="#cb39-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb39-8"><a href="#cb39-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDollars</span>{true}</span> +<span id="cb39-9"><a href="#cb39-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb39-10"><a href="#cb39-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> +<span id="cb39-11"><a href="#cb39-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb39-12"><a href="#cb39-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb39-13"><a href="#cb39-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb34"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb34-1"><a href="#cb34-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb40"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb40-1"><a href="#cb40-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -624,8 +741,8 @@ contain the following text:</p> <em>equals</em> <math><mi>i</mi></math>.</p> </blockquote> <p>Invoking pdfTeX should have the same effect:</p> -<div class="sourceCode" id="cb35"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb35-1"><a href="#cb35-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb41"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb41-1"><a href="#cb41-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> <h3 data-number="2.1.3" id="latex"><span class="header-section-number">2.1.3</span> <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span></h3> @@ -647,23 +764,23 @@ or as parameters for the <code>markdown*</code> <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> environment.</p> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb36"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb36-1"><a href="#cb36-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb36-2"><a href="#cb36-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb36-3"><a href="#cb36-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb36-4"><a href="#cb36-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb36-5"><a href="#cb36-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb36-6"><a href="#cb36-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span> -<span id="cb36-7"><a href="#cb36-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb36-8"><a href="#cb36-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb36-9"><a href="#cb36-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{hybrid}</span> -<span id="cb36-10"><a href="#cb36-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span> -<span id="cb36-11"><a href="#cb36-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb36-12"><a href="#cb36-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb36-13"><a href="#cb36-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb42"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb42-1"><a href="#cb42-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb42-2"><a href="#cb42-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb42-3"><a href="#cb42-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb42-4"><a href="#cb42-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb42-5"><a href="#cb42-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb42-6"><a href="#cb42-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span> +<span id="cb42-7"><a href="#cb42-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb42-8"><a href="#cb42-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb42-9"><a href="#cb42-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[texMathDollars]</span> +<span id="cb42-10"><a href="#cb42-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span> +<span id="cb42-11"><a href="#cb42-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb42-12"><a href="#cb42-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb42-13"><a href="#cb42-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb37"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb37-1"><a href="#cb37-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb43"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb43-1"><a href="#cb43-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -672,8 +789,8 @@ contain the following text:</p> <em>equals</em> <math><mi>i</mi></math>.</p> </blockquote> <p>Invoking pdfTeX should have the same effect:</p> -<div class="sourceCode" id="cb38"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb38-1"><a href="#cb38-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdflatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb44"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb44-1"><a href="#cb44-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdflatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> <h3 data-number="2.1.4" id="context"><span class="header-section-number">2.1.4</span> Con<span class="tex">T<sub>e</sub>X</span>t</h3> @@ -690,23 +807,23 @@ same options as the plain <span class="tex">T<sub>e</sub>X</span> interface.</p> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb39"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb39-1"><a href="#cb39-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb39-2"><a href="#cb39-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb39-3"><a href="#cb39-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb39-4"><a href="#cb39-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb39-5"><a href="#cb39-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> -<span id="cb39-6"><a href="#cb39-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb39-7"><a href="#cb39-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb39-8"><a href="#cb39-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span> -<span id="cb39-9"><a href="#cb39-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb39-10"><a href="#cb39-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> -<span id="cb39-11"><a href="#cb39-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb39-12"><a href="#cb39-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb39-13"><a href="#cb39-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb45"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb45-1"><a href="#cb45-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb45-2"><a href="#cb45-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb45-3"><a href="#cb45-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb45-4"><a href="#cb45-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb45-5"><a href="#cb45-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> +<span id="cb45-6"><a href="#cb45-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb45-7"><a href="#cb45-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb45-8"><a href="#cb45-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texmathdollars = yes]</span> +<span id="cb45-9"><a href="#cb45-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb45-10"><a href="#cb45-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> +<span id="cb45-11"><a href="#cb45-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb45-12"><a href="#cb45-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb45-13"><a href="#cb45-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb40"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb40-1"><a href="#cb40-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb46"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb46-1"><a href="#cb46-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -726,8 +843,143 @@ of the Markdown package starting with the low-level Lua interfaces and all the way up to the <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> and Con<span class="tex">T<sub>e</sub>X</span>t interfaces.</p> -<h4 data-number="2.2.1.1" id="option-cachedir"><span +<h4 data-number="2.2.1.1" id="option-eagercache"><span class="header-section-number">2.2.1.1</span> Option +<code>eagerCache</code></h4> +<dl> +<dt><code>eagerCache</code> (default value: <code>false</code>)</dt> +<dd> +<dl> +<dt>true</dt> +<dd> +<p>Converted markdown documents will be cached in +<strong><code>cacheDir</code></strong>. This can be useful for +post-processing the converted documents and for recovering historical +versions of the documents from the cache. However, it also produces a +large number of auxiliary files on the disk and obscures the output of +the Lua command-line interface when it is used for plumbing.</p> +<p>This behavior will always be used if the +<strong><code>finalizeCache</code></strong> option is enabled.</p> +</dd> +</dl> +</dd> +<dd> +<dl> +<dt>false</dt> +<dd> +<p>Converted markdown documents will not be cached. This decreases the +number of auxiliary files that we produce and makes it easier to use the +Lua command-line interface for plumbing.</p> +<p>This behavior will only be used when the +<strong><code>finalizeCache</code></strong> option is disabled.</p> +</dd> +</dl> +</dd> +</dl> +<h5 class="unnumbered" id="lua-cli-example">Lua CLI Example</h5> +<p>Using a text editor, create a text document named +<code>hello.md</code> with the following content:</p> +<div class="sourceCode" id="cb47"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb47-1"><a href="#cb47-1" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal with the +<strong><code>eagerCache</code></strong> option disabled:</p> +<div class="sourceCode" id="cb48"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb48-1"><a href="#cb48-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ eagerCache=false <span class="at">--</span> hello.md hello.tex</span></code></pre></div> +<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua +CLI script file, such as +<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems +or <code>C:\Users\</code>⟨<em>Your +username</em>⟩<code>\texmf\scripts\markdown\markdown-cli.lua</code> on +Windows systems. Use the command +<code>kpsewhich -a markdown-cli.lua</code> to locate the Lua CLI script +file using <a href="https://tug.org/kpathsea/" +title="Kpathsea - TeX Users Group">Kpathsea</a>.</p> +<p>A <span class="tex">T<sub>e</sub>X</span> document named +<code>hello.tex</code> should be produced and contain the following +code:</p> +<div class="sourceCode" id="cb49"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb49-1"><a href="#cb49-1" aria-hidden="true" tabindex="-1"></a>Hello <span class="fu">\markdownRendererEmphasis</span>{world}!<span class="fu">\relax</span></span></code></pre></div> +<hr /> +<p>Invoke LuaTeX from the terminal again, this time with the +<strong><code>eagerCache</code></strong> option enabled:</p> +<div class="sourceCode" id="cb50"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb50-1"><a href="#cb50-1" aria-hidden="true" tabindex="-1"></a>texlua ⟨CLI pathname⟩ eagerCache=true -- hello.md hello.tex</span></code></pre></div> +<p>A <span class="tex">T<sub>e</sub>X</span> document named +<code>hello.tex</code> should be produced and contain the following +code:</p> +<div class="sourceCode" id="cb51"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb51-1"><a href="#cb51-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> ./⟨hash⟩.md.tex<span class="fu">\relax</span></span></code></pre></div> +<p>Additionally, a <span class="tex">T<sub>e</sub>X</span> document +named <code>⟨hash⟩.md.tex</code> should be produced and contain the +following code:</p> +<div class="sourceCode" id="cb52"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb52-1"><a href="#cb52-1" aria-hidden="true" tabindex="-1"></a>Hello <span class="fu">\markdownRendererEmphasis</span>{world}!<span class="fu">\relax</span></span></code></pre></div> +<h4 data-number="2.2.1.2" id="option-singletoncache"><span +class="header-section-number">2.2.1.2</span> Option +<code>singletonCache</code></h4> +<dl> +<dt><code>singletonCache</code> (default value: <code>true</code>)</dt> +<dd> +<dl> +<dt>true</dt> +<dd> +<p>Conversion functions produced by the function +\luamref{new}<code>(options)</code> will be cached in an LRU cache of +size 1 keyed by <code>options</code>. This is more time- and +space-efficient than always producing a new conversion function but may +expose bugs related to the idempotence of conversion functions.</p> +<p>This has been the default behavior since version 3.0.0 of the +Markdown package.</p> +</dd> +</dl> +</dd> +<dd> +<dl> +<dt>false</dt> +<dd> +<p>Every call to the function \luamref{new}<code>(options)</code> will +produce a new conversion function that will not be cached. This is +slower than caching conversion functions and may expose bugs related to +memory leaks in the creation of conversion functions, see also issue <a +href="https://datatracker.ietf.org/doc/html/rfc3986#section-4.2">#226</a>.</p> +<p>This was the default behavior until version 3.0.0 of the Markdown +package.</p> +</dd> +</dl> +</dd> +</dl> +<h5 class="unnumbered" id="lua-module-example">Lua Module Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb53"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb53-1"><a href="#cb53-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb53-2"><a href="#cb53-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb53-3"><a href="#cb53-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb53-4"><a href="#cb53-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb53-5"><a href="#cb53-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb53-6"><a href="#cb53-6" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb53-7"><a href="#cb53-7" aria-hidden="true" tabindex="-1"></a> local convert1 = markdown.new({})</span> +<span id="cb53-8"><a href="#cb53-8" aria-hidden="true" tabindex="-1"></a> local convert2 = markdown.new({singletonCache=false})</span> +<span id="cb53-9"><a href="#cb53-9" aria-hidden="true" tabindex="-1"></a> local convert3 = markdown.new({singletonCache=true})</span> +<span id="cb53-10"><a href="#cb53-10" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span> +<span id="cb53-11"><a href="#cb53-11" aria-hidden="true" tabindex="-1"></a> tex.print(tostring(convert1) .. ", ")</span> +<span id="cb53-12"><a href="#cb53-12" aria-hidden="true" tabindex="-1"></a> tex.print(tostring(convert2) .. ", ")</span> +<span id="cb53-13"><a href="#cb53-13" aria-hidden="true" tabindex="-1"></a> tex.print(tostring(convert3))</span> +<span id="cb53-14"><a href="#cb53-14" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb53-15"><a href="#cb53-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb53-16"><a href="#cb53-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<p>Then, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb54"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb54-1"><a href="#cb54-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<p>function: 0x1a4a038, function: 0x1a52b18, function: 0x1a4a038</p> +</blockquote> +<p>As you can see, the caching causes <code>convert1</code> and +<code>convert3</code> to be the same conversion function.</p> +<h4 data-number="2.2.1.3" id="option-cachedir"><span +class="header-section-number">2.2.1.3</span> Option <code>cacheDir</code></h4> <dl> <dt><code>cacheDir</code> (default value: <code>"."</code>)</dt> @@ -744,40 +996,48 @@ filesystem (such as <code>/tmp</code> on UN*X systems), which gets periodically emptied.</p> </dd> </dl> -<h5 class="unnumbered" id="lua-module-example">Lua Module Example</h5> +<h5 class="unnumbered" id="lua-module-example-1">Lua Module Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb41"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb41-1"><a href="#cb41-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb41-2"><a href="#cb41-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> -<span id="cb41-3"><a href="#cb41-3" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> -<span id="cb41-4"><a href="#cb41-4" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({cacheDir = "cache"})</span> -<span id="cb41-5"><a href="#cb41-5" aria-hidden="true" tabindex="-1"></a> local input = "Hello *world*!"</span> -<span id="cb41-6"><a href="#cb41-6" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> -<span id="cb41-7"><a href="#cb41-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb55"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb55-1"><a href="#cb55-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb55-2"><a href="#cb55-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb55-3"><a href="#cb55-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb55-4"><a href="#cb55-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb55-5"><a href="#cb55-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb55-6"><a href="#cb55-6" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb55-7"><a href="#cb55-7" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({cacheDir = "cache"})</span> +<span id="cb55-8"><a href="#cb55-8" aria-hidden="true" tabindex="-1"></a> local input = "Hello *world*!"</span> +<span id="cb55-9"><a href="#cb55-9" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> +<span id="cb55-10"><a href="#cb55-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb55-11"><a href="#cb55-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Create an empty directory named <code>cache</code> next to our text document. Then, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb42"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb42-1"><a href="#cb42-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb56"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb56-1"><a href="#cb56-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!” Several cache files of the Markdown package will also be produced in the <code>cache</code> directory as we requested using the <code>cacheDir</code> option.</p> -<h5 class="unnumbered" id="lua-cli-example">Lua CLI Example</h5> +<h5 class="unnumbered" id="lua-cli-example-1">Lua CLI Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb43"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb43-1"><a href="#cb43-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb43-2"><a href="#cb43-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> hello</span> -<span id="cb43-3"><a href="#cb43-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb57"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb57-1"><a href="#cb57-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb57-2"><a href="#cb57-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb57-3"><a href="#cb57-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb57-4"><a href="#cb57-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb57-5"><a href="#cb57-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> hello</span> +<span id="cb57-6"><a href="#cb57-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb57-7"><a href="#cb57-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Using a text editor, create a text document named <code>hello.md</code> with the following content:</p> -<div class="sourceCode" id="cb44"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb44-1"><a href="#cb44-1" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span></code></pre></div> +<div class="sourceCode" id="cb58"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb58-1"><a href="#cb58-1" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb45"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb45-1"><a href="#cb45-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ cacheDir=cache <span class="at">--</span> hello.md hello.tex</span> -<span id="cb45-2"><a href="#cb45-2" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb59"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb59-1"><a href="#cb59-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ cacheDir=cache <span class="at">--</span> hello.md hello.tex</span> +<span id="cb59-2"><a href="#cb59-2" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua CLI script file, such as <code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems @@ -796,16 +1056,16 @@ package will also be produced as we requested using the class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb46"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb46-1"><a href="#cb46-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb46-2"><a href="#cb46-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionCacheDir</span>{cache}</span> -<span id="cb46-3"><a href="#cb46-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb46-4"><a href="#cb46-4" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> -<span id="cb46-5"><a href="#cb46-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb46-6"><a href="#cb46-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb60"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb60-1"><a href="#cb60-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb60-2"><a href="#cb60-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionCacheDir</span>{cache}</span> +<span id="cb60-3"><a href="#cb60-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb60-4"><a href="#cb60-4" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> +<span id="cb60-5"><a href="#cb60-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb60-6"><a href="#cb60-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb47"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb47-1"><a href="#cb47-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb61"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb61-1"><a href="#cb61-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!” A directory named <code>cache</code> containing several cache files of the Markdown @@ -815,17 +1075,17 @@ package will also be produced as we requested using the class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb48"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb48-1"><a href="#cb48-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb48-2"><a href="#cb48-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[cacheDir=cache]{<span class="ex">markdown</span>}</span> -<span id="cb48-3"><a href="#cb48-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb48-4"><a href="#cb48-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb48-5"><a href="#cb48-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> -<span id="cb48-6"><a href="#cb48-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb48-7"><a href="#cb48-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb62"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb62-1"><a href="#cb62-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb62-2"><a href="#cb62-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[cacheDir=cache]{<span class="ex">markdown</span>}</span> +<span id="cb62-3"><a href="#cb62-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb62-4"><a href="#cb62-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb62-5"><a href="#cb62-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> +<span id="cb62-6"><a href="#cb62-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb62-7"><a href="#cb62-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb49"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb49-1"><a href="#cb49-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb63"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb63-1"><a href="#cb63-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!” A directory named <code>cache</code> containing several cache files of the Markdown @@ -835,31 +1095,31 @@ package will also be produced as we requested using the class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb50"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb50-1"><a href="#cb50-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb50-2"><a href="#cb50-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[cacheDir = cache]</span> -<span id="cb50-3"><a href="#cb50-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb50-4"><a href="#cb50-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb50-5"><a href="#cb50-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> -<span id="cb50-6"><a href="#cb50-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb50-7"><a href="#cb50-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb64"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb64-1"><a href="#cb64-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb64-2"><a href="#cb64-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[cacheDir = cache]</span> +<span id="cb64-3"><a href="#cb64-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb64-4"><a href="#cb64-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb64-5"><a href="#cb64-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> +<span id="cb64-6"><a href="#cb64-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb64-7"><a href="#cb64-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb51"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb51-1"><a href="#cb51-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb65"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb65-1"><a href="#cb65-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!” A directory named <code>cache</code> containing several cache files of the Markdown package will also be produced as we requested using the <code>cacheDir</code> option.</p> -<h4 data-number="2.2.1.2" id="option-contentblockslanguagemap"><span -class="header-section-number">2.2.1.2</span> Option +<h4 data-number="2.2.1.4" id="option-contentblockslanguagemap"><span +class="header-section-number">2.2.1.4</span> Option <code>contentBlocksLanguageMap</code></h4> <dl> <dt><code>contentBlocksLanguageMap</code> (default value: <code>"markdown-languages.json"</code>)</dt> <dd> <p>The filename of the <abbr>JSON</abbr> file that maps filename -extensions to programming language names in the iA Writer content blocks +extensions to programming language names in the iA Writer content blocks when the <strong><code>contentBlocks</code></strong> option is enabled.</p> </dd> @@ -874,37 +1134,37 @@ Marie,Curie,1867 Thomas,Edison,1847</code></pre> <p>Create also a text document named <code>language-map.json</code> with the following content:</p> -<div class="sourceCode" id="cb53"><pre -class="sourceCode js"><code class="sourceCode javascript"><span id="cb53-1"><a href="#cb53-1" aria-hidden="true" tabindex="-1"></a>{</span> -<span id="cb53-2"><a href="#cb53-2" aria-hidden="true" tabindex="-1"></a> <span class="st">"tex"</span><span class="op">:</span> <span class="st">"LaTeX"</span></span> -<span id="cb53-3"><a href="#cb53-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> +<div class="sourceCode" id="cb67"><pre +class="sourceCode js"><code class="sourceCode javascript"><span id="cb67-1"><a href="#cb67-1" aria-hidden="true" tabindex="-1"></a>{</span> +<span id="cb67-2"><a href="#cb67-2" aria-hidden="true" tabindex="-1"></a> <span class="st">"tex"</span><span class="op">:</span> <span class="st">"LaTeX"</span></span> +<span id="cb67-3"><a href="#cb67-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> <p>Create also a text document named <code>code.tex</code> with the following content:</p> -<div class="sourceCode" id="cb54"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb54-1"><a href="#cb54-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\LaTeX</span>.</span></code></pre></div> +<div class="sourceCode" id="cb68"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb68-1"><a href="#cb68-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\LaTeX</span>.</span></code></pre></div> <p>Create also a text document named <code>part.md</code> with the following content:</p> -<div class="sourceCode" id="cb55"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb55-1"><a href="#cb55-1" aria-hidden="true" tabindex="-1"></a>This is a *transcluded markdown document*.</span></code></pre></div> +<div class="sourceCode" id="cb69"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb69-1"><a href="#cb69-1" aria-hidden="true" tabindex="-1"></a>This is a *transcluded markdown document*.</span></code></pre></div> <p>Create also a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb56"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb56-1"><a href="#cb56-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb56-2"><a href="#cb56-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span> -<span id="cb56-3"><a href="#cb56-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span> -<span id="cb56-4"><a href="#cb56-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb56-5"><a href="#cb56-5" aria-hidden="true" tabindex="-1"></a> contentBlocksLanguageMap = {language-map.json},</span> -<span id="cb56-6"><a href="#cb56-6" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb56-7"><a href="#cb56-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb56-8"><a href="#cb56-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb56-9"><a href="#cb56-9" aria-hidden="true" tabindex="-1"></a>/table.csv (An example table)</span> -<span id="cb56-10"><a href="#cb56-10" aria-hidden="true" tabindex="-1"></a>/code.tex (An example code listing)</span> -<span id="cb56-11"><a href="#cb56-11" aria-hidden="true" tabindex="-1"></a>/part.md (A file transclusion example)</span> -<span id="cb56-12"><a href="#cb56-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb56-13"><a href="#cb56-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb70"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb70-1"><a href="#cb70-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb70-2"><a href="#cb70-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span> +<span id="cb70-3"><a href="#cb70-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span> +<span id="cb70-4"><a href="#cb70-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb70-5"><a href="#cb70-5" aria-hidden="true" tabindex="-1"></a> contentBlocksLanguageMap = {language-map.json},</span> +<span id="cb70-6"><a href="#cb70-6" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb70-7"><a href="#cb70-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb70-8"><a href="#cb70-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb70-9"><a href="#cb70-9" aria-hidden="true" tabindex="-1"></a>/table.csv (An example table)</span> +<span id="cb70-10"><a href="#cb70-10" aria-hidden="true" tabindex="-1"></a>/code.tex (An example code listing)</span> +<span id="cb70-11"><a href="#cb70-11" aria-hidden="true" tabindex="-1"></a>/part.md (A file transclusion example)</span> +<span id="cb70-12"><a href="#cb70-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb70-13"><a href="#cb70-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb57"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb57-1"><a href="#cb57-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb71"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb71-1"><a href="#cb71-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -935,8 +1195,8 @@ contain the following text:</p> </tbody> </table> <p>Table 1: An example table</p> -<div class="sourceCode" id="cb58"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb58-1"><a href="#cb58-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\LaTeX</span>.</span></code></pre></div> +<div class="sourceCode" id="cb72"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb72-1"><a href="#cb72-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\LaTeX</span>.</span></code></pre></div> <p>This is a <em>transcluded markdown document</em>.</p> </blockquote> <h5 class="unnumbered" id="context-example-1">Con<span @@ -949,39 +1209,39 @@ Marie,Curie,1867 Thomas,Edison,1847</code></pre> <p>Create also a text document named <code>language-map.json</code> with the following content:</p> -<div class="sourceCode" id="cb60"><pre -class="sourceCode js"><code class="sourceCode javascript"><span id="cb60-1"><a href="#cb60-1" aria-hidden="true" tabindex="-1"></a>{</span> -<span id="cb60-2"><a href="#cb60-2" aria-hidden="true" tabindex="-1"></a> <span class="st">"tex"</span><span class="op">:</span> <span class="st">"ConTeXt"</span></span> -<span id="cb60-3"><a href="#cb60-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> +<div class="sourceCode" id="cb74"><pre +class="sourceCode js"><code class="sourceCode javascript"><span id="cb74-1"><a href="#cb74-1" aria-hidden="true" tabindex="-1"></a>{</span> +<span id="cb74-2"><a href="#cb74-2" aria-hidden="true" tabindex="-1"></a> <span class="st">"tex"</span><span class="op">:</span> <span class="st">"ConTeXt"</span></span> +<span id="cb74-3"><a href="#cb74-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> <p>Create also a text document named <code>code.tex</code> with the following content:</p> -<div class="sourceCode" id="cb61"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb61-1"><a href="#cb61-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\ConTeXt</span>.</span></code></pre></div> +<div class="sourceCode" id="cb75"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb75-1"><a href="#cb75-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\ConTeXt</span>.</span></code></pre></div> <p>Create also a text document named <code>part.md</code> with the following content:</p> -<div class="sourceCode" id="cb62"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb62-1"><a href="#cb62-1" aria-hidden="true" tabindex="-1"></a>This is a *transcluded markdown document*.</span></code></pre></div> +<div class="sourceCode" id="cb76"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb76-1"><a href="#cb76-1" aria-hidden="true" tabindex="-1"></a>This is a *transcluded markdown document*.</span></code></pre></div> <p>Create also a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb63"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb63-1"><a href="#cb63-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb63-2"><a href="#cb63-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span> -<span id="cb63-3"><a href="#cb63-3" aria-hidden="true" tabindex="-1"></a> [</span> -<span id="cb63-4"><a href="#cb63-4" aria-hidden="true" tabindex="-1"></a> contentBlocks = yes,</span> -<span id="cb63-5"><a href="#cb63-5" aria-hidden="true" tabindex="-1"></a> contentBlocksLanguageMap = language-map.json,</span> -<span id="cb63-6"><a href="#cb63-6" aria-hidden="true" tabindex="-1"></a> ]</span> -<span id="cb63-7"><a href="#cb63-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\definetyping</span> [ConTeXt]</span> -<span id="cb63-8"><a href="#cb63-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\setuptyping</span> [ConTeXt] [option=TEX]</span> -<span id="cb63-9"><a href="#cb63-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb63-10"><a href="#cb63-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb63-11"><a href="#cb63-11" aria-hidden="true" tabindex="-1"></a>/table.csv (An example table)</span> -<span id="cb63-12"><a href="#cb63-12" aria-hidden="true" tabindex="-1"></a>/code.tex (An example code listing)</span> -<span id="cb63-13"><a href="#cb63-13" aria-hidden="true" tabindex="-1"></a>/part.md (A file transclusion example)</span> -<span id="cb63-14"><a href="#cb63-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb63-15"><a href="#cb63-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb77"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb77-1"><a href="#cb77-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb77-2"><a href="#cb77-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span> +<span id="cb77-3"><a href="#cb77-3" aria-hidden="true" tabindex="-1"></a> [</span> +<span id="cb77-4"><a href="#cb77-4" aria-hidden="true" tabindex="-1"></a> contentBlocks = yes,</span> +<span id="cb77-5"><a href="#cb77-5" aria-hidden="true" tabindex="-1"></a> contentBlocksLanguageMap = language-map.json,</span> +<span id="cb77-6"><a href="#cb77-6" aria-hidden="true" tabindex="-1"></a> ]</span> +<span id="cb77-7"><a href="#cb77-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\definetyping</span> [ConTeXt]</span> +<span id="cb77-8"><a href="#cb77-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\setuptyping</span> [ConTeXt] [option=TEX]</span> +<span id="cb77-9"><a href="#cb77-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb77-10"><a href="#cb77-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb77-11"><a href="#cb77-11" aria-hidden="true" tabindex="-1"></a>/table.csv (An example table)</span> +<span id="cb77-12"><a href="#cb77-12" aria-hidden="true" tabindex="-1"></a>/code.tex (An example code listing)</span> +<span id="cb77-13"><a href="#cb77-13" aria-hidden="true" tabindex="-1"></a>/part.md (A file transclusion example)</span> +<span id="cb77-14"><a href="#cb77-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb77-15"><a href="#cb77-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb64"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb64-1"><a href="#cb64-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb78"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb78-1"><a href="#cb78-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -1012,12 +1272,12 @@ contain the following text:</p> </tbody> </table> <p>Table 1: An example table</p> -<div class="sourceCode" id="cb65"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb65-1"><a href="#cb65-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\ConTeXt</span>.</span></code></pre></div> +<div class="sourceCode" id="cb79"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb79-1"><a href="#cb79-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\ConTeXt</span>.</span></code></pre></div> <p>This is a <em>transcluded markdown document</em>.</p> </blockquote> -<h4 data-number="2.2.1.3" id="option-debugextensionsfilename"><span -class="header-section-number">2.2.1.3</span> Option +<h4 data-number="2.2.1.5" id="option-debugextensionsfilename"><span +class="header-section-number">2.2.1.5</span> Option <code>debugExtensionsFileName</code></h4> <dl> <dt><code>debugExtensionsFileName</code> (default value: @@ -1034,8 +1294,8 @@ syntax extensions (see option <strong><code>extensions</code></strong>) have been applied.</p> </dd> </dl> -<h4 data-number="2.2.1.4" id="option-frozencachefilename"><span -class="header-section-number">2.2.1.4</span> Option +<h4 data-number="2.2.1.6" id="option-frozencachefilename"><span +class="header-section-number">2.2.1.6</span> Option <code>frozenCacheFileName</code></h4> <dl> <dt><code>frozenCacheFileName</code> (default value: @@ -1055,40 +1315,48 @@ further changes in the order and the content of markdown documents will not be reflected.</p> </dd> </dl> -<h5 class="unnumbered" id="lua-module-example-1">Lua Module Example</h5> +<h5 class="unnumbered" id="lua-module-example-2">Lua Module Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb66"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb66-1"><a href="#cb66-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb66-2"><a href="#cb66-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> -<span id="cb66-3"><a href="#cb66-3" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> -<span id="cb66-4"><a href="#cb66-4" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({finalizeCache = true, frozenCacheFileName = "cache.tex"})</span> -<span id="cb66-5"><a href="#cb66-5" aria-hidden="true" tabindex="-1"></a> local input = "Hello *world*!"</span> -<span id="cb66-6"><a href="#cb66-6" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> -<span id="cb66-7"><a href="#cb66-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb80"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb80-1"><a href="#cb80-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb80-2"><a href="#cb80-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb80-3"><a href="#cb80-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb80-4"><a href="#cb80-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb80-5"><a href="#cb80-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb80-6"><a href="#cb80-6" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb80-7"><a href="#cb80-7" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({finalizeCache = true, frozenCacheFileName = "cache.tex"})</span> +<span id="cb80-8"><a href="#cb80-8" aria-hidden="true" tabindex="-1"></a> local input = "Hello *world*!"</span> +<span id="cb80-9"><a href="#cb80-9" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> +<span id="cb80-10"><a href="#cb80-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb80-11"><a href="#cb80-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Then, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb67"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb67-1"><a href="#cb67-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb81"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb81-1"><a href="#cb81-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!” A frozen cache will also be produced in the <code>cache.tex</code> output file as we requested using the <code>finalizeCache</code> and <code>frozenCacheFileName</code> options.</p> -<h5 class="unnumbered" id="lua-cli-example-1">Lua CLI Example</h5> +<h5 class="unnumbered" id="lua-cli-example-2">Lua CLI Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb68"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb68-1"><a href="#cb68-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb68-2"><a href="#cb68-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> hello</span> -<span id="cb68-3"><a href="#cb68-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb82"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb82-1"><a href="#cb82-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb82-2"><a href="#cb82-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb82-3"><a href="#cb82-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb82-4"><a href="#cb82-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb82-5"><a href="#cb82-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> hello</span> +<span id="cb82-6"><a href="#cb82-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb82-7"><a href="#cb82-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Using a text editor, create a text document named <code>hello.md</code> with the following content:</p> -<div class="sourceCode" id="cb69"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb69-1"><a href="#cb69-1" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span></code></pre></div> +<div class="sourceCode" id="cb83"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb83-1"><a href="#cb83-1" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb70"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb70-1"><a href="#cb70-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ finalizeCache=true frozenCacheFileName=cache.tex <span class="at">--</span> hello.md hello.tex</span> -<span id="cb70-2"><a href="#cb70-2" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb84"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb84-1"><a href="#cb84-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ finalizeCache=true frozenCacheFileName=cache.tex <span class="at">--</span> hello.md hello.tex</span> +<span id="cb84-2"><a href="#cb84-2" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua CLI script file, such as <code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems @@ -1107,17 +1375,17 @@ options.</p> class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb71"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb71-1"><a href="#cb71-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb71-2"><a href="#cb71-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFinalizeCache</span>{true}</span> -<span id="cb71-3"><a href="#cb71-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCacheFileName</span>{cache.tex}</span> -<span id="cb71-4"><a href="#cb71-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb71-5"><a href="#cb71-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> -<span id="cb71-6"><a href="#cb71-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb71-7"><a href="#cb71-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb85"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb85-1"><a href="#cb85-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb85-2"><a href="#cb85-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFinalizeCache</span>{true}</span> +<span id="cb85-3"><a href="#cb85-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCacheFileName</span>{cache.tex}</span> +<span id="cb85-4"><a href="#cb85-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb85-5"><a href="#cb85-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> +<span id="cb85-6"><a href="#cb85-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb85-7"><a href="#cb85-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb72"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb72-1"><a href="#cb72-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb86"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb86-1"><a href="#cb86-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!” A frozen cache will also be produced in the <code>cache.tex</code> output file as we requested using @@ -1125,17 +1393,17 @@ the <code>finalizeCache</code> and <code>frozenCacheFileName</code> options.</p> <p>Next, create a new text document <code>frozen-document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb73"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb73-1"><a href="#cb73-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb73-2"><a href="#cb73-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCache</span>{true}</span> -<span id="cb73-3"><a href="#cb73-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCacheFileName</span>{cache.tex}</span> -<span id="cb73-4"><a href="#cb73-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb73-5"><a href="#cb73-5" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span> -<span id="cb73-6"><a href="#cb73-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb73-7"><a href="#cb73-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb87"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb87-1"><a href="#cb87-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb87-2"><a href="#cb87-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCache</span>{true}</span> +<span id="cb87-3"><a href="#cb87-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCacheFileName</span>{cache.tex}</span> +<span id="cb87-4"><a href="#cb87-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb87-5"><a href="#cb87-5" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span> +<span id="cb87-6"><a href="#cb87-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb87-7"><a href="#cb87-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Last, invoke pdfTeX without shell access from the terminal:</p> -<div class="sourceCode" id="cb74"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb74-1"><a href="#cb74-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> <span class="at">-no-shell-escape</span> frozen-document.tex</span></code></pre></div> +<div class="sourceCode" id="cb88"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb88-1"><a href="#cb88-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> <span class="at">-no-shell-escape</span> frozen-document.tex</span></code></pre></div> <p>A PDF document named <code>frozen-document.pdf</code> should be produced and contain the text “Hello <em>world</em>!” Since we used the contents of the frozen cache using the @@ -1147,17 +1415,17 @@ in the content of the markdown document from “Hello <em>world</em>!” to class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb75"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb75-1"><a href="#cb75-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>[finalizecache]{<span class="ex">article</span>}</span> -<span id="cb75-2"><a href="#cb75-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[frozenCacheFileName=cache.tex]{<span class="ex">markdown</span>}</span> -<span id="cb75-3"><a href="#cb75-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb75-4"><a href="#cb75-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb75-5"><a href="#cb75-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> -<span id="cb75-6"><a href="#cb75-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb75-7"><a href="#cb75-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb89"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb89-1"><a href="#cb89-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>[finalizecache]{<span class="ex">article</span>}</span> +<span id="cb89-2"><a href="#cb89-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[frozenCacheFileName=cache.tex]{<span class="ex">markdown</span>}</span> +<span id="cb89-3"><a href="#cb89-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb89-4"><a href="#cb89-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb89-5"><a href="#cb89-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> +<span id="cb89-6"><a href="#cb89-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb89-7"><a href="#cb89-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb76"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb76-1"><a href="#cb76-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb90"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb90-1"><a href="#cb90-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!” A frozen cache will also be produced in the <code>cache.tex</code> output file as we requested using @@ -1165,17 +1433,17 @@ the <code>finalizecache</code> and <code>frozenCacheFileName</code> options.</p> <p>Next, create a new text document <code>frozen-document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb77"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb77-1"><a href="#cb77-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>[frozencache]{<span class="ex">article</span>}</span> -<span id="cb77-2"><a href="#cb77-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[frozenCacheFileName=cache.tex]{<span class="ex">markdown</span>}</span> -<span id="cb77-3"><a href="#cb77-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb77-4"><a href="#cb77-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb77-5"><a href="#cb77-5" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span> -<span id="cb77-6"><a href="#cb77-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb77-7"><a href="#cb77-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb91"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb91-1"><a href="#cb91-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>[frozencache]{<span class="ex">article</span>}</span> +<span id="cb91-2"><a href="#cb91-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[frozenCacheFileName=cache.tex]{<span class="ex">markdown</span>}</span> +<span id="cb91-3"><a href="#cb91-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb91-4"><a href="#cb91-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb91-5"><a href="#cb91-5" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span> +<span id="cb91-6"><a href="#cb91-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb91-7"><a href="#cb91-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Last, invoke pdfTeX without shell access from the terminal:</p> -<div class="sourceCode" id="cb78"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb78-1"><a href="#cb78-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdflatex</span> <span class="at">-no-shell-escape</span> frozen-document.tex</span></code></pre></div> +<div class="sourceCode" id="cb92"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb92-1"><a href="#cb92-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdflatex</span> <span class="at">-no-shell-escape</span> frozen-document.tex</span></code></pre></div> <p>A PDF document named <code>frozen-document.pdf</code> should be produced and contain the text “Hello <em>world</em>!” Since we used the contents of the frozen cache using the <code>frozencache</code> option, @@ -1187,21 +1455,21 @@ reflected.</p> class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb79"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb79-1"><a href="#cb79-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb79-2"><a href="#cb79-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span> -<span id="cb79-3"><a href="#cb79-3" aria-hidden="true" tabindex="-1"></a> [</span> -<span id="cb79-4"><a href="#cb79-4" aria-hidden="true" tabindex="-1"></a> finalizeCache = yes,</span> -<span id="cb79-5"><a href="#cb79-5" aria-hidden="true" tabindex="-1"></a> frozenCacheFileName = cache.tex,</span> -<span id="cb79-6"><a href="#cb79-6" aria-hidden="true" tabindex="-1"></a> ]</span> -<span id="cb79-7"><a href="#cb79-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb79-8"><a href="#cb79-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb79-9"><a href="#cb79-9" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> -<span id="cb79-10"><a href="#cb79-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb79-11"><a href="#cb79-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb93"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb93-1"><a href="#cb93-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb93-2"><a href="#cb93-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span> +<span id="cb93-3"><a href="#cb93-3" aria-hidden="true" tabindex="-1"></a> [</span> +<span id="cb93-4"><a href="#cb93-4" aria-hidden="true" tabindex="-1"></a> finalizeCache = yes,</span> +<span id="cb93-5"><a href="#cb93-5" aria-hidden="true" tabindex="-1"></a> frozenCacheFileName = cache.tex,</span> +<span id="cb93-6"><a href="#cb93-6" aria-hidden="true" tabindex="-1"></a> ]</span> +<span id="cb93-7"><a href="#cb93-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb93-8"><a href="#cb93-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb93-9"><a href="#cb93-9" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> +<span id="cb93-10"><a href="#cb93-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb93-11"><a href="#cb93-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb80"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb80-1"><a href="#cb80-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb94"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb94-1"><a href="#cb94-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!” A frozen cache will also be produced in the <code>cache.tex</code> output file as we requested using @@ -1209,21 +1477,21 @@ the <code>finalizeCache</code> and <code>frozenCacheFileName</code> options.</p> <p>Next, create a new text document <code>frozen-document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb81"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb81-1"><a href="#cb81-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb81-2"><a href="#cb81-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span> -<span id="cb81-3"><a href="#cb81-3" aria-hidden="true" tabindex="-1"></a> [</span> -<span id="cb81-4"><a href="#cb81-4" aria-hidden="true" tabindex="-1"></a> frozenCache = yes,</span> -<span id="cb81-5"><a href="#cb81-5" aria-hidden="true" tabindex="-1"></a> frozenCacheFileName = cache.tex,</span> -<span id="cb81-6"><a href="#cb81-6" aria-hidden="true" tabindex="-1"></a> ]</span> -<span id="cb81-7"><a href="#cb81-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb81-8"><a href="#cb81-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb81-9"><a href="#cb81-9" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span> -<span id="cb81-10"><a href="#cb81-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb81-11"><a href="#cb81-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> -<p>Last, invoke pdfTeX without shell access from the terminal:</p> -<div class="sourceCode" id="cb82"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb82-1"><a href="#cb82-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> frozen-document.tex</span></code></pre></div> +<div class="sourceCode" id="cb95"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb95-1"><a href="#cb95-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb95-2"><a href="#cb95-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span> +<span id="cb95-3"><a href="#cb95-3" aria-hidden="true" tabindex="-1"></a> [</span> +<span id="cb95-4"><a href="#cb95-4" aria-hidden="true" tabindex="-1"></a> frozenCache = yes,</span> +<span id="cb95-5"><a href="#cb95-5" aria-hidden="true" tabindex="-1"></a> frozenCacheFileName = cache.tex,</span> +<span id="cb95-6"><a href="#cb95-6" aria-hidden="true" tabindex="-1"></a> ]</span> +<span id="cb95-7"><a href="#cb95-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb95-8"><a href="#cb95-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb95-9"><a href="#cb95-9" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span> +<span id="cb95-10"><a href="#cb95-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb95-11"><a href="#cb95-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<p>Last, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb96"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb96-1"><a href="#cb96-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> frozen-document.tex</span></code></pre></div> <p>A PDF document named <code>frozen-document.pdf</code> should be produced and contain the text “Hello <em>world</em>!” Since we used the contents of the frozen cache using the @@ -1231,8 +1499,35 @@ contents of the frozen cache using the the document without accessing the shell or invoking Lua, but the change in the content of the markdown document from “Hello <em>world</em>!” to “Hi <em>world</em>!” was not reflected.</p> -<h4 data-number="2.2.1.5" id="option-blankbeforeblockquote"><span -class="header-section-number">2.2.1.5</span> Option +<h4 data-number="2.2.1.7" id="option-autoidentifiers"><span +class="header-section-number">2.2.1.7</span> Option +<code>autoIdentifiers</code></h4> +<dl> +<dt><code>autoIdentifiers</code> (default value: +<code>false</code>)</dt> +<dd> +<dl> +<dt>true</dt> +<dd> +<p>Enable the Pandoc <a +href="https://pandoc.org/MANUAL.html#extension-auto_identifiers">auto +identifiers syntax extension</a>:</p> +<div class="sourceCode" id="cb97"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb97-1"><a href="#cb97-1" aria-hidden="true" tabindex="-1"></a>The following heading received the identifier <span class="in">`sesame-street`</span>:</span> +<span id="cb97-2"><a href="#cb97-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb97-3"><a href="#cb97-3" aria-hidden="true" tabindex="-1"></a><span class="fu"># 123 Sesame Street</span></span></code></pre></div> +</dd> +<dt>false</dt> +<dd> +<p>Disable the Pandoc auto identifiers syntax extension.</p> +</dd> +</dl> +</dd> +</dl> +<p>See also the option +<strong><code>gfmAutoIdentifiers</code></strong>.</p> +<h4 data-number="2.2.1.8" id="option-blankbeforeblockquote"><span +class="header-section-number">2.2.1.8</span> Option <code>blankBeforeBlockquote</code></h4> <dl> <dt><code>blankBeforeBlockquote</code> (default value: @@ -1252,30 +1547,34 @@ blockquote.</p> </dl> </dd> </dl> -<h5 class="unnumbered" id="lua-module-example-2">Lua Module Example</h5> +<h5 class="unnumbered" id="lua-module-example-3">Lua Module Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb83"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb83-1"><a href="#cb83-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb83-2"><a href="#cb83-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb83-3"><a href="#cb83-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> -<span id="cb83-4"><a href="#cb83-4" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> -<span id="cb83-5"><a href="#cb83-5" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span> -<span id="cb83-6"><a href="#cb83-6" aria-hidden="true" tabindex="-1"></a> local convert, input</span> -<span id="cb83-7"><a href="#cb83-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb83-8"><a href="#cb83-8" aria-hidden="true" tabindex="-1"></a> convert = markdown.new()</span> -<span id="cb83-9"><a href="#cb83-9" aria-hidden="true" tabindex="-1"></a> input = "A paragraph." .. newline ..</span> -<span id="cb83-10"><a href="#cb83-10" aria-hidden="true" tabindex="-1"></a> "> A quote." .. newline</span> -<span id="cb83-11"><a href="#cb83-11" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input))</span> -<span id="cb83-12"><a href="#cb83-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb83-13"><a href="#cb83-13" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({blankBeforeBlockquote = true})</span> -<span id="cb83-14"><a href="#cb83-14" aria-hidden="true" tabindex="-1"></a> input = "A paragraph." .. newline ..</span> -<span id="cb83-15"><a href="#cb83-15" aria-hidden="true" tabindex="-1"></a> "> Not a quote." .. newline</span> -<span id="cb83-16"><a href="#cb83-16" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> -<span id="cb83-17"><a href="#cb83-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb98"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb98-1"><a href="#cb98-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb98-2"><a href="#cb98-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb98-3"><a href="#cb98-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb98-4"><a href="#cb98-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb98-5"><a href="#cb98-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb98-6"><a href="#cb98-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb98-7"><a href="#cb98-7" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb98-8"><a href="#cb98-8" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span> +<span id="cb98-9"><a href="#cb98-9" aria-hidden="true" tabindex="-1"></a> local convert, input</span> +<span id="cb98-10"><a href="#cb98-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb98-11"><a href="#cb98-11" aria-hidden="true" tabindex="-1"></a> convert = markdown.new()</span> +<span id="cb98-12"><a href="#cb98-12" aria-hidden="true" tabindex="-1"></a> input = "A paragraph." .. newline ..</span> +<span id="cb98-13"><a href="#cb98-13" aria-hidden="true" tabindex="-1"></a> "> A quote." .. newline</span> +<span id="cb98-14"><a href="#cb98-14" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input))</span> +<span id="cb98-15"><a href="#cb98-15" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb98-16"><a href="#cb98-16" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({blankBeforeBlockquote = true})</span> +<span id="cb98-17"><a href="#cb98-17" aria-hidden="true" tabindex="-1"></a> input = "A paragraph." .. newline ..</span> +<span id="cb98-18"><a href="#cb98-18" aria-hidden="true" tabindex="-1"></a> "> Not a quote." .. newline</span> +<span id="cb98-19"><a href="#cb98-19" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> +<span id="cb98-20"><a href="#cb98-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb98-21"><a href="#cb98-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Then, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb84"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb84-1"><a href="#cb84-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb99"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb99-1"><a href="#cb99-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -1285,25 +1584,29 @@ contain the following text:</p> </blockquote> <p>A paragraph > Not a quote.</p> </blockquote> -<h5 class="unnumbered" id="lua-cli-example-2">Lua CLI Example</h5> +<h5 class="unnumbered" id="lua-cli-example-3">Lua CLI Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb85"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb85-1"><a href="#cb85-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb85-2"><a href="#cb85-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb85-3"><a href="#cb85-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> -<span id="cb85-4"><a href="#cb85-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> -<span id="cb85-5"><a href="#cb85-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb100"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb100-1"><a href="#cb100-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb100-2"><a href="#cb100-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb100-3"><a href="#cb100-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb100-4"><a href="#cb100-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb100-5"><a href="#cb100-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb100-6"><a href="#cb100-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> +<span id="cb100-7"><a href="#cb100-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> +<span id="cb100-8"><a href="#cb100-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb100-9"><a href="#cb100-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Using a text editor, create a text document named <code>content.md</code> with the following content:</p> -<div class="sourceCode" id="cb86"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb86-1"><a href="#cb86-1" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb86-2"><a href="#cb86-2" aria-hidden="true" tabindex="-1"></a><span class="at">> A quote?</span></span></code></pre></div> +<div class="sourceCode" id="cb101"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb101-1"><a href="#cb101-1" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb101-2"><a href="#cb101-2" aria-hidden="true" tabindex="-1"></a><span class="at">> A quote?</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb87"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb87-1"><a href="#cb87-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span> -<span id="cb87-2"><a href="#cb87-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ blankBeforeBlockquote=true <span class="at">--</span> content.md optiontrue.tex</span> -<span id="cb87-3"><a href="#cb87-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb102"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb102-1"><a href="#cb102-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span> +<span id="cb102-2"><a href="#cb102-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ blankBeforeBlockquote=true <span class="at">--</span> content.md optiontrue.tex</span> +<span id="cb102-3"><a href="#cb102-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua CLI script file, such as <code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems @@ -1326,24 +1629,24 @@ contain the following text:</p> class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb88"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb88-1"><a href="#cb88-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb88-2"><a href="#cb88-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb88-3"><a href="#cb88-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb88-4"><a href="#cb88-4" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb88-5"><a href="#cb88-5" aria-hidden="true" tabindex="-1"></a>> A quote.</span> -<span id="cb88-6"><a href="#cb88-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb88-7"><a href="#cb88-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb88-8"><a href="#cb88-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBlankBeforeBlockquote</span>{true}</span> -<span id="cb88-9"><a href="#cb88-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb88-10"><a href="#cb88-10" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb88-11"><a href="#cb88-11" aria-hidden="true" tabindex="-1"></a>> Not a quote.</span> -<span id="cb88-12"><a href="#cb88-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb88-13"><a href="#cb88-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb88-14"><a href="#cb88-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb103"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb103-1"><a href="#cb103-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb103-2"><a href="#cb103-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb103-3"><a href="#cb103-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb103-4"><a href="#cb103-4" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb103-5"><a href="#cb103-5" aria-hidden="true" tabindex="-1"></a>> A quote.</span> +<span id="cb103-6"><a href="#cb103-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb103-7"><a href="#cb103-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb103-8"><a href="#cb103-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBlankBeforeBlockquote</span>{true}</span> +<span id="cb103-9"><a href="#cb103-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb103-10"><a href="#cb103-10" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb103-11"><a href="#cb103-11" aria-hidden="true" tabindex="-1"></a>> Not a quote.</span> +<span id="cb103-12"><a href="#cb103-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb103-13"><a href="#cb103-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb103-14"><a href="#cb103-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb89"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb89-1"><a href="#cb89-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb104"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb104-1"><a href="#cb104-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -1357,25 +1660,25 @@ contain the following text:</p> class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb90"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb90-1"><a href="#cb90-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb90-2"><a href="#cb90-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb90-3"><a href="#cb90-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb90-4"><a href="#cb90-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb90-5"><a href="#cb90-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb90-6"><a href="#cb90-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb90-7"><a href="#cb90-7" aria-hidden="true" tabindex="-1"></a>> A quote.</span> -<span id="cb90-8"><a href="#cb90-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb90-9"><a href="#cb90-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb90-10"><a href="#cb90-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{blankBeforeBlockquote}</span> -<span id="cb90-11"><a href="#cb90-11" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb90-12"><a href="#cb90-12" aria-hidden="true" tabindex="-1"></a>> Not a quote.</span> -<span id="cb90-13"><a href="#cb90-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb90-14"><a href="#cb90-14" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb90-15"><a href="#cb90-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> -<p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb91"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb91-1"><a href="#cb91-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb105"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb105-1"><a href="#cb105-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb105-2"><a href="#cb105-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb105-3"><a href="#cb105-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb105-4"><a href="#cb105-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb105-5"><a href="#cb105-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb105-6"><a href="#cb105-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb105-7"><a href="#cb105-7" aria-hidden="true" tabindex="-1"></a>> A quote.</span> +<span id="cb105-8"><a href="#cb105-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb105-9"><a href="#cb105-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb105-10"><a href="#cb105-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[blankBeforeBlockquote]</span> +<span id="cb105-11"><a href="#cb105-11" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb105-12"><a href="#cb105-12" aria-hidden="true" tabindex="-1"></a>> Not a quote.</span> +<span id="cb105-13"><a href="#cb105-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb105-14"><a href="#cb105-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb105-15"><a href="#cb105-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb106"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb106-1"><a href="#cb106-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -1389,25 +1692,25 @@ contain the following text:</p> class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb92"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb92-1"><a href="#cb92-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb92-2"><a href="#cb92-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb92-3"><a href="#cb92-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb92-4"><a href="#cb92-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb92-5"><a href="#cb92-5" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb92-6"><a href="#cb92-6" aria-hidden="true" tabindex="-1"></a>> A quote.</span> -<span id="cb92-7"><a href="#cb92-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb92-8"><a href="#cb92-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb92-9"><a href="#cb92-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[blankBeforeBlockquote = yes]</span> -<span id="cb92-10"><a href="#cb92-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb92-11"><a href="#cb92-11" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb92-12"><a href="#cb92-12" aria-hidden="true" tabindex="-1"></a>> Not a quote.</span> -<span id="cb92-13"><a href="#cb92-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb92-14"><a href="#cb92-14" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb92-15"><a href="#cb92-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb107"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb107-1"><a href="#cb107-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb107-2"><a href="#cb107-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb107-3"><a href="#cb107-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb107-4"><a href="#cb107-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb107-5"><a href="#cb107-5" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb107-6"><a href="#cb107-6" aria-hidden="true" tabindex="-1"></a>> A quote.</span> +<span id="cb107-7"><a href="#cb107-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb107-8"><a href="#cb107-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb107-9"><a href="#cb107-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[blankBeforeBlockquote = yes]</span> +<span id="cb107-10"><a href="#cb107-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb107-11"><a href="#cb107-11" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb107-12"><a href="#cb107-12" aria-hidden="true" tabindex="-1"></a>> Not a quote.</span> +<span id="cb107-13"><a href="#cb107-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb107-14"><a href="#cb107-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb107-15"><a href="#cb107-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb93"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb93-1"><a href="#cb93-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb108"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb108-1"><a href="#cb108-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -1417,8 +1720,8 @@ contain the following text:</p> </blockquote> <p>A paragraph > Not a quote.</p> </blockquote> -<h4 data-number="2.2.1.6" id="option-blankbeforecodefence"><span -class="header-section-number">2.2.1.6</span> Option +<h4 data-number="2.2.1.9" id="option-blankbeforecodefence"><span +class="header-section-number">2.2.1.9</span> Option <code>blankBeforeCodeFence</code></h4> <dl> <dt><code>blankBeforeCodeFence</code> (default value: @@ -1438,35 +1741,39 @@ fenced code block.</p> </dl> </dd> </dl> -<h5 class="unnumbered" id="lua-module-example-3">Lua Module Example</h5> +<h5 class="unnumbered" id="lua-module-example-4">Lua Module Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb94"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb94-1"><a href="#cb94-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb94-2"><a href="#cb94-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb94-3"><a href="#cb94-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> -<span id="cb94-4"><a href="#cb94-4" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> -<span id="cb94-5"><a href="#cb94-5" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span> -<span id="cb94-6"><a href="#cb94-6" aria-hidden="true" tabindex="-1"></a> local convert, input</span> -<span id="cb94-7"><a href="#cb94-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb94-8"><a href="#cb94-8" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({fencedCode = true})</span> -<span id="cb94-9"><a href="#cb94-9" aria-hidden="true" tabindex="-1"></a> input = "A paragraph." .. newline ..</span> -<span id="cb94-10"><a href="#cb94-10" aria-hidden="true" tabindex="-1"></a> "```" .. newline ..</span> -<span id="cb94-11"><a href="#cb94-11" aria-hidden="true" tabindex="-1"></a> "A fenced code." .. newline ..</span> -<span id="cb94-12"><a href="#cb94-12" aria-hidden="true" tabindex="-1"></a> "```" .. newline</span> -<span id="cb94-13"><a href="#cb94-13" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input))</span> -<span id="cb94-14"><a href="#cb94-14" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb94-15"><a href="#cb94-15" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({</span> -<span id="cb94-16"><a href="#cb94-16" aria-hidden="true" tabindex="-1"></a> fencedCode = true, blankBeforeCodeFence = true})</span> -<span id="cb94-17"><a href="#cb94-17" aria-hidden="true" tabindex="-1"></a> input = "A paragraph." .. newline ..</span> -<span id="cb94-18"><a href="#cb94-18" aria-hidden="true" tabindex="-1"></a> "```" .. newline ..</span> -<span id="cb94-19"><a href="#cb94-19" aria-hidden="true" tabindex="-1"></a> "Not a fenced code." .. newline ..</span> -<span id="cb94-20"><a href="#cb94-20" aria-hidden="true" tabindex="-1"></a> "```" .. newline</span> -<span id="cb94-21"><a href="#cb94-21" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> -<span id="cb94-22"><a href="#cb94-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb109"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb109-1"><a href="#cb109-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb109-2"><a href="#cb109-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb109-3"><a href="#cb109-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb109-4"><a href="#cb109-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb109-5"><a href="#cb109-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb109-6"><a href="#cb109-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb109-7"><a href="#cb109-7" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb109-8"><a href="#cb109-8" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span> +<span id="cb109-9"><a href="#cb109-9" aria-hidden="true" tabindex="-1"></a> local convert, input</span> +<span id="cb109-10"><a href="#cb109-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb109-11"><a href="#cb109-11" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({fencedCode = true})</span> +<span id="cb109-12"><a href="#cb109-12" aria-hidden="true" tabindex="-1"></a> input = "A paragraph." .. newline ..</span> +<span id="cb109-13"><a href="#cb109-13" aria-hidden="true" tabindex="-1"></a> "```" .. newline ..</span> +<span id="cb109-14"><a href="#cb109-14" aria-hidden="true" tabindex="-1"></a> "A fenced code." .. newline ..</span> +<span id="cb109-15"><a href="#cb109-15" aria-hidden="true" tabindex="-1"></a> "```" .. newline</span> +<span id="cb109-16"><a href="#cb109-16" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input))</span> +<span id="cb109-17"><a href="#cb109-17" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb109-18"><a href="#cb109-18" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({</span> +<span id="cb109-19"><a href="#cb109-19" aria-hidden="true" tabindex="-1"></a> fencedCode = true, blankBeforeCodeFence = true})</span> +<span id="cb109-20"><a href="#cb109-20" aria-hidden="true" tabindex="-1"></a> input = "A paragraph." .. newline ..</span> +<span id="cb109-21"><a href="#cb109-21" aria-hidden="true" tabindex="-1"></a> "```" .. newline ..</span> +<span id="cb109-22"><a href="#cb109-22" aria-hidden="true" tabindex="-1"></a> "Not a fenced code." .. newline ..</span> +<span id="cb109-23"><a href="#cb109-23" aria-hidden="true" tabindex="-1"></a> "```" .. newline</span> +<span id="cb109-24"><a href="#cb109-24" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> +<span id="cb109-25"><a href="#cb109-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb109-26"><a href="#cb109-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Then, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb95"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb95-1"><a href="#cb95-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb110"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb110-1"><a href="#cb110-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -1474,27 +1781,31 @@ contain the following text:</p> <pre><code>A fenced code.</code></pre> <p>A paragraph. <code>Not a fenced code.</code></p> </blockquote> -<h5 class="unnumbered" id="lua-cli-example-3">Lua CLI Example</h5> +<h5 class="unnumbered" id="lua-cli-example-4">Lua CLI Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb97"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb97-1"><a href="#cb97-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb97-2"><a href="#cb97-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb97-3"><a href="#cb97-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> -<span id="cb97-4"><a href="#cb97-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> -<span id="cb97-5"><a href="#cb97-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb112"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb112-1"><a href="#cb112-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb112-2"><a href="#cb112-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb112-3"><a href="#cb112-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb112-4"><a href="#cb112-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb112-5"><a href="#cb112-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb112-6"><a href="#cb112-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> +<span id="cb112-7"><a href="#cb112-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> +<span id="cb112-8"><a href="#cb112-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb112-9"><a href="#cb112-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Using a text editor, create a text document named <code>content.md</code> with the following content:</p> -<div class="sourceCode" id="cb98"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb98-1"><a href="#cb98-1" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb98-2"><a href="#cb98-2" aria-hidden="true" tabindex="-1"></a><span class="in">```</span></span> -<span id="cb98-3"><a href="#cb98-3" aria-hidden="true" tabindex="-1"></a><span class="in">A code fence?</span></span> -<span id="cb98-4"><a href="#cb98-4" aria-hidden="true" tabindex="-1"></a><span class="in">```</span></span></code></pre></div> +<div class="sourceCode" id="cb113"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb113-1"><a href="#cb113-1" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb113-2"><a href="#cb113-2" aria-hidden="true" tabindex="-1"></a><span class="in">```</span></span> +<span id="cb113-3"><a href="#cb113-3" aria-hidden="true" tabindex="-1"></a><span class="in">A code fence?</span></span> +<span id="cb113-4"><a href="#cb113-4" aria-hidden="true" tabindex="-1"></a><span class="in">```</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb99"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb99-1"><a href="#cb99-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ fencedCode=true <span class="at">--</span> content.md optionfalse.tex</span> -<span id="cb99-2"><a href="#cb99-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ fencedCode=true blankBeforeCodeFence=true <span class="at">--</span> content.md optiontrue.tex</span> -<span id="cb99-3"><a href="#cb99-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb114"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb114-1"><a href="#cb114-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ fencedCode=true <span class="at">--</span> content.md optionfalse.tex</span> +<span id="cb114-2"><a href="#cb114-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ fencedCode=true blankBeforeCodeFence=true <span class="at">--</span> content.md optiontrue.tex</span> +<span id="cb114-3"><a href="#cb114-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua CLI script file, such as <code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems @@ -1515,29 +1826,29 @@ contain the following text:</p> class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb101"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb101-1"><a href="#cb101-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb101-2"><a href="#cb101-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFencedCode</span>{true}</span> -<span id="cb101-3"><a href="#cb101-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb101-4"><a href="#cb101-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb101-5"><a href="#cb101-5" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb101-6"><a href="#cb101-6" aria-hidden="true" tabindex="-1"></a>```</span> -<span id="cb101-7"><a href="#cb101-7" aria-hidden="true" tabindex="-1"></a>A fenced code.</span> -<span id="cb101-8"><a href="#cb101-8" aria-hidden="true" tabindex="-1"></a>```</span> -<span id="cb101-9"><a href="#cb101-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb101-10"><a href="#cb101-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb101-11"><a href="#cb101-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBlankBeforeCodeFence</span>{true}</span> -<span id="cb101-12"><a href="#cb101-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb101-13"><a href="#cb101-13" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb101-14"><a href="#cb101-14" aria-hidden="true" tabindex="-1"></a>```</span> -<span id="cb101-15"><a href="#cb101-15" aria-hidden="true" tabindex="-1"></a>Not a fenced code.</span> -<span id="cb101-16"><a href="#cb101-16" aria-hidden="true" tabindex="-1"></a>```</span> -<span id="cb101-17"><a href="#cb101-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb101-18"><a href="#cb101-18" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb101-19"><a href="#cb101-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb116"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb116-1"><a href="#cb116-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb116-2"><a href="#cb116-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFencedCode</span>{true}</span> +<span id="cb116-3"><a href="#cb116-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb116-4"><a href="#cb116-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb116-5"><a href="#cb116-5" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb116-6"><a href="#cb116-6" aria-hidden="true" tabindex="-1"></a>```</span> +<span id="cb116-7"><a href="#cb116-7" aria-hidden="true" tabindex="-1"></a>A fenced code.</span> +<span id="cb116-8"><a href="#cb116-8" aria-hidden="true" tabindex="-1"></a>```</span> +<span id="cb116-9"><a href="#cb116-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb116-10"><a href="#cb116-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb116-11"><a href="#cb116-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBlankBeforeCodeFence</span>{true}</span> +<span id="cb116-12"><a href="#cb116-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb116-13"><a href="#cb116-13" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb116-14"><a href="#cb116-14" aria-hidden="true" tabindex="-1"></a>```</span> +<span id="cb116-15"><a href="#cb116-15" aria-hidden="true" tabindex="-1"></a>Not a fenced code.</span> +<span id="cb116-16"><a href="#cb116-16" aria-hidden="true" tabindex="-1"></a>```</span> +<span id="cb116-17"><a href="#cb116-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb116-18"><a href="#cb116-18" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb116-19"><a href="#cb116-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb102"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb102-1"><a href="#cb102-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb117"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb117-1"><a href="#cb117-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -1549,29 +1860,29 @@ contain the following text:</p> class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb104"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb104-1"><a href="#cb104-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb104-2"><a href="#cb104-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode]{<span class="ex">markdown</span>}</span> -<span id="cb104-3"><a href="#cb104-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb104-4"><a href="#cb104-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb104-5"><a href="#cb104-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb104-6"><a href="#cb104-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb104-7"><a href="#cb104-7" aria-hidden="true" tabindex="-1"></a>```</span> -<span id="cb104-8"><a href="#cb104-8" aria-hidden="true" tabindex="-1"></a>A fenced code.</span> -<span id="cb104-9"><a href="#cb104-9" aria-hidden="true" tabindex="-1"></a>```</span> -<span id="cb104-10"><a href="#cb104-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb104-11"><a href="#cb104-11" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb104-12"><a href="#cb104-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{blankBeforeCodeFence}</span> -<span id="cb104-13"><a href="#cb104-13" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb104-14"><a href="#cb104-14" aria-hidden="true" tabindex="-1"></a>```</span> -<span id="cb104-15"><a href="#cb104-15" aria-hidden="true" tabindex="-1"></a>Not a fenced code.</span> -<span id="cb104-16"><a href="#cb104-16" aria-hidden="true" tabindex="-1"></a>```</span> -<span id="cb104-17"><a href="#cb104-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb104-18"><a href="#cb104-18" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb104-19"><a href="#cb104-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb119"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb119-1"><a href="#cb119-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb119-2"><a href="#cb119-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode]{<span class="ex">markdown</span>}</span> +<span id="cb119-3"><a href="#cb119-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb119-4"><a href="#cb119-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb119-5"><a href="#cb119-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb119-6"><a href="#cb119-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb119-7"><a href="#cb119-7" aria-hidden="true" tabindex="-1"></a>```</span> +<span id="cb119-8"><a href="#cb119-8" aria-hidden="true" tabindex="-1"></a>A fenced code.</span> +<span id="cb119-9"><a href="#cb119-9" aria-hidden="true" tabindex="-1"></a>```</span> +<span id="cb119-10"><a href="#cb119-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb119-11"><a href="#cb119-11" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb119-12"><a href="#cb119-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[blankBeforeCodeFence]</span> +<span id="cb119-13"><a href="#cb119-13" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb119-14"><a href="#cb119-14" aria-hidden="true" tabindex="-1"></a>```</span> +<span id="cb119-15"><a href="#cb119-15" aria-hidden="true" tabindex="-1"></a>Not a fenced code.</span> +<span id="cb119-16"><a href="#cb119-16" aria-hidden="true" tabindex="-1"></a>```</span> +<span id="cb119-17"><a href="#cb119-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb119-18"><a href="#cb119-18" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb119-19"><a href="#cb119-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb105"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb105-1"><a href="#cb105-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb120"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb120-1"><a href="#cb120-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -1583,30 +1894,30 @@ contain the following text:</p> class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb107"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb107-1"><a href="#cb107-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb107-2"><a href="#cb107-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[fencedCode = yes]</span> -<span id="cb107-3"><a href="#cb107-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb107-4"><a href="#cb107-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb107-5"><a href="#cb107-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb107-6"><a href="#cb107-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb107-7"><a href="#cb107-7" aria-hidden="true" tabindex="-1"></a>```</span> -<span id="cb107-8"><a href="#cb107-8" aria-hidden="true" tabindex="-1"></a>A fenced code.</span> -<span id="cb107-9"><a href="#cb107-9" aria-hidden="true" tabindex="-1"></a>```</span> -<span id="cb107-10"><a href="#cb107-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb107-11"><a href="#cb107-11" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb107-12"><a href="#cb107-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[blankBeforeCodeFence = yes]</span> -<span id="cb107-13"><a href="#cb107-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb107-14"><a href="#cb107-14" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb107-15"><a href="#cb107-15" aria-hidden="true" tabindex="-1"></a>```</span> -<span id="cb107-16"><a href="#cb107-16" aria-hidden="true" tabindex="-1"></a>Not a fenced code.</span> -<span id="cb107-17"><a href="#cb107-17" aria-hidden="true" tabindex="-1"></a>```</span> -<span id="cb107-18"><a href="#cb107-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb107-19"><a href="#cb107-19" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb107-20"><a href="#cb107-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb122"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb122-1"><a href="#cb122-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb122-2"><a href="#cb122-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[fencedCode = yes]</span> +<span id="cb122-3"><a href="#cb122-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb122-4"><a href="#cb122-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb122-5"><a href="#cb122-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb122-6"><a href="#cb122-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb122-7"><a href="#cb122-7" aria-hidden="true" tabindex="-1"></a>```</span> +<span id="cb122-8"><a href="#cb122-8" aria-hidden="true" tabindex="-1"></a>A fenced code.</span> +<span id="cb122-9"><a href="#cb122-9" aria-hidden="true" tabindex="-1"></a>```</span> +<span id="cb122-10"><a href="#cb122-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb122-11"><a href="#cb122-11" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb122-12"><a href="#cb122-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[blankBeforeCodeFence = yes]</span> +<span id="cb122-13"><a href="#cb122-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb122-14"><a href="#cb122-14" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb122-15"><a href="#cb122-15" aria-hidden="true" tabindex="-1"></a>```</span> +<span id="cb122-16"><a href="#cb122-16" aria-hidden="true" tabindex="-1"></a>Not a fenced code.</span> +<span id="cb122-17"><a href="#cb122-17" aria-hidden="true" tabindex="-1"></a>```</span> +<span id="cb122-18"><a href="#cb122-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb122-19"><a href="#cb122-19" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb122-20"><a href="#cb122-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb108"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb108-1"><a href="#cb108-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb123"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb123-1"><a href="#cb123-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -1614,8 +1925,8 @@ contain the following text:</p> <pre><code>A fenced code.</code></pre> <p>A paragraph. <code>Not a fenced code.</code></p> </blockquote> -<h4 data-number="2.2.1.7" id="option-blankbeforedivfence"><span -class="header-section-number">2.2.1.7</span> Option +<h4 data-number="2.2.1.10" id="option-blankbeforedivfence"><span +class="header-section-number">2.2.1.10</span> Option <code>blankBeforeDivFence</code></h4> <dl> <dt><code>blankBeforeDivFence</code> (default value: @@ -1638,31 +1949,31 @@ div.</p> class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb110"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb110-1"><a href="#cb110-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb110-2"><a href="#cb110-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedDivs]{<span class="ex">markdown</span>}</span> -<span id="cb110-3"><a href="#cb110-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb110-4"><a href="#cb110-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb110-5"><a href="#cb110-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb110-6"><a href="#cb110-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb110-7"><a href="#cb110-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb110-8"><a href="#cb110-8" aria-hidden="true" tabindex="-1"></a>::: {.identifier}</span> -<span id="cb110-9"><a href="#cb110-9" aria-hidden="true" tabindex="-1"></a>A fenced div.</span> -<span id="cb110-10"><a href="#cb110-10" aria-hidden="true" tabindex="-1"></a>:::</span> -<span id="cb110-11"><a href="#cb110-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb110-12"><a href="#cb110-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb110-13"><a href="#cb110-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{blankBeforeDivFence}</span> -<span id="cb110-14"><a href="#cb110-14" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb110-15"><a href="#cb110-15" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb110-16"><a href="#cb110-16" aria-hidden="true" tabindex="-1"></a>::: {.identifier}</span> -<span id="cb110-17"><a href="#cb110-17" aria-hidden="true" tabindex="-1"></a>Not a fenced div.</span> -<span id="cb110-18"><a href="#cb110-18" aria-hidden="true" tabindex="-1"></a>:::</span> -<span id="cb110-19"><a href="#cb110-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb110-20"><a href="#cb110-20" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb110-21"><a href="#cb110-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> -<p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb111"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb111-1"><a href="#cb111-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb125"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb125-1"><a href="#cb125-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb125-2"><a href="#cb125-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedDivs]{<span class="ex">markdown</span>}</span> +<span id="cb125-3"><a href="#cb125-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb125-4"><a href="#cb125-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb125-5"><a href="#cb125-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb125-6"><a href="#cb125-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb125-7"><a href="#cb125-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb125-8"><a href="#cb125-8" aria-hidden="true" tabindex="-1"></a>::: {.identifier}</span> +<span id="cb125-9"><a href="#cb125-9" aria-hidden="true" tabindex="-1"></a>A fenced div.</span> +<span id="cb125-10"><a href="#cb125-10" aria-hidden="true" tabindex="-1"></a>:::</span> +<span id="cb125-11"><a href="#cb125-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb125-12"><a href="#cb125-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb125-13"><a href="#cb125-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[blankBeforeDivFence]</span> +<span id="cb125-14"><a href="#cb125-14" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb125-15"><a href="#cb125-15" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb125-16"><a href="#cb125-16" aria-hidden="true" tabindex="-1"></a>::: {.identifier}</span> +<span id="cb125-17"><a href="#cb125-17" aria-hidden="true" tabindex="-1"></a>Not a fenced div.</span> +<span id="cb125-18"><a href="#cb125-18" aria-hidden="true" tabindex="-1"></a>:::</span> +<span id="cb125-19"><a href="#cb125-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb125-20"><a href="#cb125-20" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb125-21"><a href="#cb125-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb126"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb126-1"><a href="#cb126-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -1671,8 +1982,8 @@ contain the following text:</p> <p>A paragraph.</p> <p>::: {.identifier} Not a fenced div. :::</p> </blockquote> -<h4 data-number="2.2.1.8" id="option-blankbeforeheading"><span -class="header-section-number">2.2.1.8</span> Option +<h4 data-number="2.2.1.11" id="option-blankbeforeheading"><span +class="header-section-number">2.2.1.11</span> Option <code>blankBeforeHeading</code></h4> <dl> <dt><code>blankBeforeHeading</code> (default value: @@ -1692,33 +2003,37 @@ header.</p> </dl> </dd> </dl> -<h5 class="unnumbered" id="lua-module-example-4">Lua Module Example</h5> +<h5 class="unnumbered" id="lua-module-example-5">Lua Module Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb112"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb112-1"><a href="#cb112-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb112-2"><a href="#cb112-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb112-3"><a href="#cb112-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>#1{{<span class="fu">\bf</span> #1}<span class="fu">\par</span>}</span> -<span id="cb112-4"><a href="#cb112-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> -<span id="cb112-5"><a href="#cb112-5" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> -<span id="cb112-6"><a href="#cb112-6" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span> -<span id="cb112-7"><a href="#cb112-7" aria-hidden="true" tabindex="-1"></a> local convert, input</span> -<span id="cb112-8"><a href="#cb112-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb112-9"><a href="#cb112-9" aria-hidden="true" tabindex="-1"></a> convert = markdown.new()</span> -<span id="cb112-10"><a href="#cb112-10" aria-hidden="true" tabindex="-1"></a> input = "A paragraph." .. newline ..</span> -<span id="cb112-11"><a href="#cb112-11" aria-hidden="true" tabindex="-1"></a> "A heading." .. newline ..</span> -<span id="cb112-12"><a href="#cb112-12" aria-hidden="true" tabindex="-1"></a> "==========" .. newline</span> -<span id="cb112-13"><a href="#cb112-13" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input))</span> -<span id="cb112-14"><a href="#cb112-14" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb112-15"><a href="#cb112-15" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({blankBeforeHeading = true})</span> -<span id="cb112-16"><a href="#cb112-16" aria-hidden="true" tabindex="-1"></a> input = "A paragraph." .. newline ..</span> -<span id="cb112-17"><a href="#cb112-17" aria-hidden="true" tabindex="-1"></a> "Not a heading." .. newline ..</span> -<span id="cb112-18"><a href="#cb112-18" aria-hidden="true" tabindex="-1"></a> "==============" .. newline</span> -<span id="cb112-19"><a href="#cb112-19" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> -<span id="cb112-20"><a href="#cb112-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb127"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb127-1"><a href="#cb127-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb127-2"><a href="#cb127-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb127-3"><a href="#cb127-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>#1{{<span class="fu">\bf</span> #1}<span class="fu">\par</span>}</span> +<span id="cb127-4"><a href="#cb127-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb127-5"><a href="#cb127-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb127-6"><a href="#cb127-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb127-7"><a href="#cb127-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb127-8"><a href="#cb127-8" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb127-9"><a href="#cb127-9" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span> +<span id="cb127-10"><a href="#cb127-10" aria-hidden="true" tabindex="-1"></a> local convert, input</span> +<span id="cb127-11"><a href="#cb127-11" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb127-12"><a href="#cb127-12" aria-hidden="true" tabindex="-1"></a> convert = markdown.new()</span> +<span id="cb127-13"><a href="#cb127-13" aria-hidden="true" tabindex="-1"></a> input = "A paragraph." .. newline ..</span> +<span id="cb127-14"><a href="#cb127-14" aria-hidden="true" tabindex="-1"></a> "A heading." .. newline ..</span> +<span id="cb127-15"><a href="#cb127-15" aria-hidden="true" tabindex="-1"></a> "==========" .. newline</span> +<span id="cb127-16"><a href="#cb127-16" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input))</span> +<span id="cb127-17"><a href="#cb127-17" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb127-18"><a href="#cb127-18" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({blankBeforeHeading = true})</span> +<span id="cb127-19"><a href="#cb127-19" aria-hidden="true" tabindex="-1"></a> input = "A paragraph." .. newline ..</span> +<span id="cb127-20"><a href="#cb127-20" aria-hidden="true" tabindex="-1"></a> "Not a heading." .. newline ..</span> +<span id="cb127-21"><a href="#cb127-21" aria-hidden="true" tabindex="-1"></a> "==============" .. newline</span> +<span id="cb127-22"><a href="#cb127-22" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> +<span id="cb127-23"><a href="#cb127-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb127-24"><a href="#cb127-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Then, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb113"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb113-1"><a href="#cb113-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb128"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb128-1"><a href="#cb128-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -1726,26 +2041,30 @@ contain the following text:</p> <h1 id="a-heading.">A heading.</h1> <p>A paragraph. Not a heading. ==============</p> </blockquote> -<h5 class="unnumbered" id="lua-cli-example-4">Lua CLI Example</h5> +<h5 class="unnumbered" id="lua-cli-example-5">Lua CLI Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb114"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb114-1"><a href="#cb114-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb114-2"><a href="#cb114-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb114-3"><a href="#cb114-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> -<span id="cb114-4"><a href="#cb114-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> -<span id="cb114-5"><a href="#cb114-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb129"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb129-1"><a href="#cb129-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb129-2"><a href="#cb129-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb129-3"><a href="#cb129-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb129-4"><a href="#cb129-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb129-5"><a href="#cb129-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb129-6"><a href="#cb129-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> +<span id="cb129-7"><a href="#cb129-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> +<span id="cb129-8"><a href="#cb129-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb129-9"><a href="#cb129-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Using a text editor, create a text document named <code>content.md</code> with the following content:</p> -<div class="sourceCode" id="cb115"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb115-1"><a href="#cb115-1" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb115-2"><a href="#cb115-2" aria-hidden="true" tabindex="-1"></a>A heading?</span> -<span id="cb115-3"><a href="#cb115-3" aria-hidden="true" tabindex="-1"></a><span class="fu">==========</span></span></code></pre></div> +<div class="sourceCode" id="cb130"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb130-1"><a href="#cb130-1" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb130-2"><a href="#cb130-2" aria-hidden="true" tabindex="-1"></a>A heading?</span> +<span id="cb130-3"><a href="#cb130-3" aria-hidden="true" tabindex="-1"></a><span class="fu">==========</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb116"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb116-1"><a href="#cb116-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span> -<span id="cb116-2"><a href="#cb116-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ blankBeforeHeading=true <span class="at">--</span> content.md optiontrue.tex</span> -<span id="cb116-3"><a href="#cb116-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb131"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb131-1"><a href="#cb131-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span> +<span id="cb131-2"><a href="#cb131-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ blankBeforeHeading=true <span class="at">--</span> content.md optiontrue.tex</span> +<span id="cb131-3"><a href="#cb131-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua CLI script file, such as <code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems @@ -1766,26 +2085,26 @@ contain the following text:</p> class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb117"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb117-1"><a href="#cb117-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb117-2"><a href="#cb117-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb117-3"><a href="#cb117-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb117-4"><a href="#cb117-4" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb117-5"><a href="#cb117-5" aria-hidden="true" tabindex="-1"></a>A heading.</span> -<span id="cb117-6"><a href="#cb117-6" aria-hidden="true" tabindex="-1"></a>==========</span> -<span id="cb117-7"><a href="#cb117-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb117-8"><a href="#cb117-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb117-9"><a href="#cb117-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBlankBeforeHeading</span>{true}</span> -<span id="cb117-10"><a href="#cb117-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb117-11"><a href="#cb117-11" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb117-12"><a href="#cb117-12" aria-hidden="true" tabindex="-1"></a>Not a heading.</span> -<span id="cb117-13"><a href="#cb117-13" aria-hidden="true" tabindex="-1"></a>==============</span> -<span id="cb117-14"><a href="#cb117-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb117-15"><a href="#cb117-15" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb117-16"><a href="#cb117-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> -<p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb118"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb118-1"><a href="#cb118-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb132"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb132-1"><a href="#cb132-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb132-2"><a href="#cb132-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb132-3"><a href="#cb132-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb132-4"><a href="#cb132-4" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb132-5"><a href="#cb132-5" aria-hidden="true" tabindex="-1"></a>A heading.</span> +<span id="cb132-6"><a href="#cb132-6" aria-hidden="true" tabindex="-1"></a>==========</span> +<span id="cb132-7"><a href="#cb132-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb132-8"><a href="#cb132-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb132-9"><a href="#cb132-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBlankBeforeHeading</span>{true}</span> +<span id="cb132-10"><a href="#cb132-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb132-11"><a href="#cb132-11" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb132-12"><a href="#cb132-12" aria-hidden="true" tabindex="-1"></a>Not a heading.</span> +<span id="cb132-13"><a href="#cb132-13" aria-hidden="true" tabindex="-1"></a>==============</span> +<span id="cb132-14"><a href="#cb132-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb132-15"><a href="#cb132-15" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb132-16"><a href="#cb132-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb133"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb133-1"><a href="#cb133-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -1797,27 +2116,27 @@ contain the following text:</p> class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb119"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb119-1"><a href="#cb119-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb119-2"><a href="#cb119-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb119-3"><a href="#cb119-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb119-4"><a href="#cb119-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb119-5"><a href="#cb119-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb119-6"><a href="#cb119-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb119-7"><a href="#cb119-7" aria-hidden="true" tabindex="-1"></a>A heading.</span> -<span id="cb119-8"><a href="#cb119-8" aria-hidden="true" tabindex="-1"></a>==========</span> -<span id="cb119-9"><a href="#cb119-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb119-10"><a href="#cb119-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb119-11"><a href="#cb119-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{blankBeforeHeading}</span> -<span id="cb119-12"><a href="#cb119-12" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb119-13"><a href="#cb119-13" aria-hidden="true" tabindex="-1"></a>Not a heading.</span> -<span id="cb119-14"><a href="#cb119-14" aria-hidden="true" tabindex="-1"></a>==============</span> -<span id="cb119-15"><a href="#cb119-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb119-16"><a href="#cb119-16" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb119-17"><a href="#cb119-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb134"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb134-1"><a href="#cb134-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb134-2"><a href="#cb134-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb134-3"><a href="#cb134-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb134-4"><a href="#cb134-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb134-5"><a href="#cb134-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb134-6"><a href="#cb134-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb134-7"><a href="#cb134-7" aria-hidden="true" tabindex="-1"></a>A heading.</span> +<span id="cb134-8"><a href="#cb134-8" aria-hidden="true" tabindex="-1"></a>==========</span> +<span id="cb134-9"><a href="#cb134-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb134-10"><a href="#cb134-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb134-11"><a href="#cb134-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[blankBeforeHeading]</span> +<span id="cb134-12"><a href="#cb134-12" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb134-13"><a href="#cb134-13" aria-hidden="true" tabindex="-1"></a>Not a heading.</span> +<span id="cb134-14"><a href="#cb134-14" aria-hidden="true" tabindex="-1"></a>==============</span> +<span id="cb134-15"><a href="#cb134-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb134-16"><a href="#cb134-16" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb134-17"><a href="#cb134-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb120"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb120-1"><a href="#cb120-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb135"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb135-1"><a href="#cb135-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -1829,27 +2148,27 @@ contain the following text:</p> class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb121"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb121-1"><a href="#cb121-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb121-2"><a href="#cb121-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb121-3"><a href="#cb121-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb121-4"><a href="#cb121-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb121-5"><a href="#cb121-5" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb121-6"><a href="#cb121-6" aria-hidden="true" tabindex="-1"></a>A heading.</span> -<span id="cb121-7"><a href="#cb121-7" aria-hidden="true" tabindex="-1"></a>==========</span> -<span id="cb121-8"><a href="#cb121-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb121-9"><a href="#cb121-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb121-10"><a href="#cb121-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[blankBeforeHeading = yes]</span> -<span id="cb121-11"><a href="#cb121-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb121-12"><a href="#cb121-12" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> -<span id="cb121-13"><a href="#cb121-13" aria-hidden="true" tabindex="-1"></a>Not a heading.</span> -<span id="cb121-14"><a href="#cb121-14" aria-hidden="true" tabindex="-1"></a>==============</span> -<span id="cb121-15"><a href="#cb121-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb121-16"><a href="#cb121-16" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb121-17"><a href="#cb121-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb136"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb136-1"><a href="#cb136-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb136-2"><a href="#cb136-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb136-3"><a href="#cb136-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb136-4"><a href="#cb136-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb136-5"><a href="#cb136-5" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb136-6"><a href="#cb136-6" aria-hidden="true" tabindex="-1"></a>A heading.</span> +<span id="cb136-7"><a href="#cb136-7" aria-hidden="true" tabindex="-1"></a>==========</span> +<span id="cb136-8"><a href="#cb136-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb136-9"><a href="#cb136-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb136-10"><a href="#cb136-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[blankBeforeHeading = yes]</span> +<span id="cb136-11"><a href="#cb136-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb136-12"><a href="#cb136-12" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb136-13"><a href="#cb136-13" aria-hidden="true" tabindex="-1"></a>Not a heading.</span> +<span id="cb136-14"><a href="#cb136-14" aria-hidden="true" tabindex="-1"></a>==============</span> +<span id="cb136-15"><a href="#cb136-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb136-16"><a href="#cb136-16" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb136-17"><a href="#cb136-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb122"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb122-1"><a href="#cb122-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb137"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb137-1"><a href="#cb137-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -1857,8 +2176,202 @@ contain the following text:</p> <h1 id="a-heading.-3">A heading.</h1> <p>A paragraph. Not a heading. ==============</p> </blockquote> -<h4 data-number="2.2.1.9" id="option-bracketedspans"><span -class="header-section-number">2.2.1.9</span> Option +<h4 data-number="2.2.1.12" id="option-blankbeforelist"><span +class="header-section-number">2.2.1.12</span> Option +<code>blankBeforeList</code></h4> +<dl> +<dt><code>blankBeforeList</code> (default value: +<code>false</code>)</dt> +<dd> +<dl> +<dt>true</dt> +<dd> +<p>Require a blank line between a paragraph and the following list.</p> +</dd> +<dt>false</dt> +<dd> +<p>Do not require a blank line between a paragraph and the following +list.</p> +</dd> +</dl> +</dd> +</dl> +<h5 class="unnumbered" id="lua-module-example-6">Lua Module Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb138"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb138-1"><a href="#cb138-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb138-2"><a href="#cb138-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb138-3"><a href="#cb138-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb138-4"><a href="#cb138-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb138-5"><a href="#cb138-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb138-6"><a href="#cb138-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb138-7"><a href="#cb138-7" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb138-8"><a href="#cb138-8" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span> +<span id="cb138-9"><a href="#cb138-9" aria-hidden="true" tabindex="-1"></a> local convert, input</span> +<span id="cb138-10"><a href="#cb138-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb138-11"><a href="#cb138-11" aria-hidden="true" tabindex="-1"></a> convert = markdown.new()</span> +<span id="cb138-12"><a href="#cb138-12" aria-hidden="true" tabindex="-1"></a> input = "A paragraph." .. newline ..</span> +<span id="cb138-13"><a href="#cb138-13" aria-hidden="true" tabindex="-1"></a> "- a list" .. newline</span> +<span id="cb138-14"><a href="#cb138-14" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input))</span> +<span id="cb138-15"><a href="#cb138-15" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb138-16"><a href="#cb138-16" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({</span> +<span id="cb138-17"><a href="#cb138-17" aria-hidden="true" tabindex="-1"></a> blankBeforeList = true})</span> +<span id="cb138-18"><a href="#cb138-18" aria-hidden="true" tabindex="-1"></a> input = "A paragraph." .. newline ..</span> +<span id="cb138-19"><a href="#cb138-19" aria-hidden="true" tabindex="-1"></a> "- not a list" .. newline</span> +<span id="cb138-20"><a href="#cb138-20" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> +<span id="cb138-21"><a href="#cb138-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb138-22"><a href="#cb138-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<p>Then, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb139"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb139-1"><a href="#cb139-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<p>A paragraph.</p> +<ul> +<li>a list</li> +</ul> +<p>A paragraph. - not a list</p> +</blockquote> +<h5 class="unnumbered" id="lua-cli-example-6">Lua CLI Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb140"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb140-1"><a href="#cb140-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb140-2"><a href="#cb140-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb140-3"><a href="#cb140-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb140-4"><a href="#cb140-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb140-5"><a href="#cb140-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb140-6"><a href="#cb140-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> +<span id="cb140-7"><a href="#cb140-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> +<span id="cb140-8"><a href="#cb140-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb140-9"><a href="#cb140-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<p>Using a text editor, create a text document named +<code>content.md</code> with the following content:</p> +<div class="sourceCode" id="cb141"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb141-1"><a href="#cb141-1" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb141-2"><a href="#cb141-2" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>a list?</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb142"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb142-1"><a href="#cb142-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span> +<span id="cb142-2"><a href="#cb142-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ blankBeforeList=true <span class="at">--</span> content.md optiontrue.tex</span> +<span id="cb142-3"><a href="#cb142-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua +CLI script file, such as +<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems +or <code>C:\Users\</code>⟨<em>Your +username</em>⟩<code>\texmf\scripts\markdown\markdown-cli.lua</code> on +Windows systems. Use the command +<code>kpsewhich -a markdown-cli.lua</code> to locate the Lua CLI script +file using <a href="https://tug.org/kpathsea/" +title="Kpathsea - TeX Users Group">Kpathsea</a>.</p> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<p>A paragraph.</p> +<ul> +<li>a list?</li> +</ul> +<p>A paragraph. - a list?</p> +</blockquote> +<h5 class="unnumbered" id="plain-tex-example-5">Plain <span +class="tex">T<sub>e</sub>X</span> Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb143"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb143-1"><a href="#cb143-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb143-2"><a href="#cb143-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb143-3"><a href="#cb143-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb143-4"><a href="#cb143-4" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb143-5"><a href="#cb143-5" aria-hidden="true" tabindex="-1"></a>- a list</span> +<span id="cb143-6"><a href="#cb143-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb143-7"><a href="#cb143-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb143-8"><a href="#cb143-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBlankBeforeList</span>{true}</span> +<span id="cb143-9"><a href="#cb143-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb143-10"><a href="#cb143-10" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb143-11"><a href="#cb143-11" aria-hidden="true" tabindex="-1"></a>- not a list</span> +<span id="cb143-12"><a href="#cb143-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb143-13"><a href="#cb143-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb143-14"><a href="#cb143-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb144"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb144-1"><a href="#cb144-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<p>A paragraph.</p> +<ul> +<li>a list</li> +</ul> +<p>A paragraph. - not a list</p> +</blockquote> +<h5 class="unnumbered" id="latex-example-7"><span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb145"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb145-1"><a href="#cb145-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb145-2"><a href="#cb145-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb145-3"><a href="#cb145-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb145-4"><a href="#cb145-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb145-5"><a href="#cb145-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb145-6"><a href="#cb145-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb145-7"><a href="#cb145-7" aria-hidden="true" tabindex="-1"></a>- a list</span> +<span id="cb145-8"><a href="#cb145-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb145-9"><a href="#cb145-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb145-10"><a href="#cb145-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[blankBeforeList]</span> +<span id="cb145-11"><a href="#cb145-11" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb145-12"><a href="#cb145-12" aria-hidden="true" tabindex="-1"></a>- not a list</span> +<span id="cb145-13"><a href="#cb145-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb145-14"><a href="#cb145-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb145-15"><a href="#cb145-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb146"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb146-1"><a href="#cb146-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<p>A paragraph.</p> +<ul> +<li>a list</li> +</ul> +<p>A paragraph. - not a list</p> +</blockquote> +<h5 class="unnumbered" id="context-example-6">Con<span +class="tex">T<sub>e</sub>X</span>t Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb147"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb147-1"><a href="#cb147-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb147-2"><a href="#cb147-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb147-3"><a href="#cb147-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb147-4"><a href="#cb147-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb147-5"><a href="#cb147-5" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb147-6"><a href="#cb147-6" aria-hidden="true" tabindex="-1"></a>- a list</span> +<span id="cb147-7"><a href="#cb147-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb147-8"><a href="#cb147-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb147-9"><a href="#cb147-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[blankBeforeList = yes]</span> +<span id="cb147-10"><a href="#cb147-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb147-11"><a href="#cb147-11" aria-hidden="true" tabindex="-1"></a>A paragraph.</span> +<span id="cb147-12"><a href="#cb147-12" aria-hidden="true" tabindex="-1"></a>- not a list</span> +<span id="cb147-13"><a href="#cb147-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb147-14"><a href="#cb147-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb147-15"><a href="#cb147-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb148"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb148-1"><a href="#cb148-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<p>A paragraph.</p> +<ul> +<li>a list</li> +</ul> +<p>A paragraph. - not a list</p> +</blockquote> +<h4 data-number="2.2.1.13" id="option-bracketedspans"><span +class="header-section-number">2.2.1.13</span> Option <code>bracketedSpans</code></h4> <dl> <dt><code>bracketedSpans</code> (default value: <code>false</code>)</dt> @@ -1869,8 +2382,8 @@ class="header-section-number">2.2.1.9</span> Option <p>Enable the Pandoc <a href="https://pandoc.org/MANUAL.html#extension-bracketed_spans">bracketed span syntax extension</a>:</p> -<div class="sourceCode" id="cb123"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb123-1"><a href="#cb123-1" aria-hidden="true" tabindex="-1"></a><span class="co">[</span><span class="ot">This is *some text*</span><span class="co">]</span>{.class key=val}</span></code></pre></div> +<div class="sourceCode" id="cb149"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb149-1"><a href="#cb149-1" aria-hidden="true" tabindex="-1"></a><span class="co">[</span><span class="ot">This is *some text*</span><span class="co">]</span>{.class key=val}</span></code></pre></div> </dd> </dl> </dd> @@ -1883,59 +2396,59 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb123-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-7"><span +<h5 class="unnumbered" id="latex-example-8"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb124"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb124-1"><a href="#cb124-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb124-2"><a href="#cb124-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[bracketedSpans]{<span class="ex">markdown</span>}</span> -<span id="cb124-3"><a href="#cb124-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span> -<span id="cb124-4"><a href="#cb124-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span> -<span id="cb124-5"><a href="#cb124-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb124-6"><a href="#cb124-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb124-7"><a href="#cb124-7" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextBegin = {</span> -<span id="cb124-8"><a href="#cb124-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span> -<span id="cb124-9"><a href="#cb124-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_begin:</span> -<span id="cb124-10"><a href="#cb124-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span> -<span id="cb124-11"><a href="#cb124-11" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb124-12"><a href="#cb124-12" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {</span> -<span id="cb124-13"><a href="#cb124-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\str</span>_if_eq:nnT</span> -<span id="cb124-14"><a href="#cb124-14" aria-hidden="true" tabindex="-1"></a> { ##1 }</span> -<span id="cb124-15"><a href="#cb124-15" aria-hidden="true" tabindex="-1"></a> { color }</span> -<span id="cb124-16"><a href="#cb124-16" aria-hidden="true" tabindex="-1"></a> {</span> -<span id="cb124-17"><a href="#cb124-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_select:n { ##2 }</span> -<span id="cb124-18"><a href="#cb124-18" aria-hidden="true" tabindex="-1"></a> }</span> -<span id="cb124-19"><a href="#cb124-19" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb124-20"><a href="#cb124-20" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb124-21"><a href="#cb124-21" aria-hidden="true" tabindex="-1"></a> }</span> -<span id="cb124-22"><a href="#cb124-22" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb124-23"><a href="#cb124-23" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextEnd = {</span> -<span id="cb124-24"><a href="#cb124-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_end:</span> -<span id="cb124-25"><a href="#cb124-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span> -<span id="cb124-26"><a href="#cb124-26" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb124-27"><a href="#cb124-27" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb124-28"><a href="#cb124-28" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb124-29"><a href="#cb124-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span> -<span id="cb124-30"><a href="#cb124-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb124-31"><a href="#cb124-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb124-32"><a href="#cb124-32" aria-hidden="true" tabindex="-1"></a>Here is some [colored text]{color=red}.</span> -<span id="cb124-33"><a href="#cb124-33" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb124-34"><a href="#cb124-34" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb150"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb150-1"><a href="#cb150-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb150-2"><a href="#cb150-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[bracketedSpans]{<span class="ex">markdown</span>}</span> +<span id="cb150-3"><a href="#cb150-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span> +<span id="cb150-4"><a href="#cb150-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span> +<span id="cb150-5"><a href="#cb150-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb150-6"><a href="#cb150-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb150-7"><a href="#cb150-7" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextBegin = {</span> +<span id="cb150-8"><a href="#cb150-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span> +<span id="cb150-9"><a href="#cb150-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_begin:</span> +<span id="cb150-10"><a href="#cb150-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span> +<span id="cb150-11"><a href="#cb150-11" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb150-12"><a href="#cb150-12" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {</span> +<span id="cb150-13"><a href="#cb150-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\str</span>_if_eq:nnT</span> +<span id="cb150-14"><a href="#cb150-14" aria-hidden="true" tabindex="-1"></a> { ##1 }</span> +<span id="cb150-15"><a href="#cb150-15" aria-hidden="true" tabindex="-1"></a> { color }</span> +<span id="cb150-16"><a href="#cb150-16" aria-hidden="true" tabindex="-1"></a> {</span> +<span id="cb150-17"><a href="#cb150-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_select:n { ##2 }</span> +<span id="cb150-18"><a href="#cb150-18" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb150-19"><a href="#cb150-19" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb150-20"><a href="#cb150-20" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb150-21"><a href="#cb150-21" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb150-22"><a href="#cb150-22" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb150-23"><a href="#cb150-23" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextEnd = {</span> +<span id="cb150-24"><a href="#cb150-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_end:</span> +<span id="cb150-25"><a href="#cb150-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span> +<span id="cb150-26"><a href="#cb150-26" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb150-27"><a href="#cb150-27" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb150-28"><a href="#cb150-28" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb150-29"><a href="#cb150-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span> +<span id="cb150-30"><a href="#cb150-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb150-31"><a href="#cb150-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb150-32"><a href="#cb150-32" aria-hidden="true" tabindex="-1"></a>Here is some [colored text]{color=red}.</span> +<span id="cb150-33"><a href="#cb150-33" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb150-34"><a href="#cb150-34" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb125"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb125-1"><a href="#cb125-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb151"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb151-1"><a href="#cb151-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>Here is some <span style="color: red">colored text</span>.</p> </blockquote> -<h4 data-number="2.2.1.10" id="option-breakableblockquotes"><span -class="header-section-number">2.2.1.10</span> Option +<h4 data-number="2.2.1.14" id="option-breakableblockquotes"><span +class="header-section-number">2.2.1.14</span> Option <code>breakableBlockquotes</code></h4> <dl> <dt><code>breakableBlockquotes</code> (default value: -<code>false</code>)</dt> +<code>true</code>)</dt> <dd> <dl> <dt>true</dt> @@ -1949,31 +2462,35 @@ class="header-section-number">2.2.1.10</span> Option </dl> </dd> </dl> -<h5 class="unnumbered" id="lua-module-example-5">Lua Module Example</h5> +<h5 class="unnumbered" id="lua-module-example-7">Lua Module Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb126"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb126-1"><a href="#cb126-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb126-2"><a href="#cb126-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb126-3"><a href="#cb126-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>#1{{<span class="fu">\bf</span> #1}<span class="fu">\par</span>}</span> -<span id="cb126-4"><a href="#cb126-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> -<span id="cb126-5"><a href="#cb126-5" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> -<span id="cb126-6"><a href="#cb126-6" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span> -<span id="cb126-7"><a href="#cb126-7" aria-hidden="true" tabindex="-1"></a> local convert, input</span> -<span id="cb126-8"><a href="#cb126-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb126-9"><a href="#cb126-9" aria-hidden="true" tabindex="-1"></a> convert = markdown.new()</span> -<span id="cb126-10"><a href="#cb126-10" aria-hidden="true" tabindex="-1"></a> input = "> A single" .. newline .. newline ..</span> -<span id="cb126-11"><a href="#cb126-11" aria-hidden="true" tabindex="-1"></a> "> block quote." .. newline</span> -<span id="cb126-12"><a href="#cb126-12" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input))</span> -<span id="cb126-13"><a href="#cb126-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb126-14"><a href="#cb126-14" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({breakableBlockquotes = true})</span> -<span id="cb126-15"><a href="#cb126-15" aria-hidden="true" tabindex="-1"></a> input = "> A block quote." .. newline .. newline ..</span> -<span id="cb126-16"><a href="#cb126-16" aria-hidden="true" tabindex="-1"></a> "> Another block quote." .. newline</span> -<span id="cb126-17"><a href="#cb126-17" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> -<span id="cb126-18"><a href="#cb126-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb152"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb152-1"><a href="#cb152-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb152-2"><a href="#cb152-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb152-3"><a href="#cb152-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>#1{{<span class="fu">\bf</span> #1}<span class="fu">\par</span>}</span> +<span id="cb152-4"><a href="#cb152-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb152-5"><a href="#cb152-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb152-6"><a href="#cb152-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb152-7"><a href="#cb152-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb152-8"><a href="#cb152-8" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb152-9"><a href="#cb152-9" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span> +<span id="cb152-10"><a href="#cb152-10" aria-hidden="true" tabindex="-1"></a> local convert, input</span> +<span id="cb152-11"><a href="#cb152-11" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb152-12"><a href="#cb152-12" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({breakableBlockquotes = false})</span> +<span id="cb152-13"><a href="#cb152-13" aria-hidden="true" tabindex="-1"></a> input = "> A single" .. newline .. newline ..</span> +<span id="cb152-14"><a href="#cb152-14" aria-hidden="true" tabindex="-1"></a> "> block quote." .. newline</span> +<span id="cb152-15"><a href="#cb152-15" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input))</span> +<span id="cb152-16"><a href="#cb152-16" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb152-17"><a href="#cb152-17" aria-hidden="true" tabindex="-1"></a> convert = markdown.new()</span> +<span id="cb152-18"><a href="#cb152-18" aria-hidden="true" tabindex="-1"></a> input = "> A block quote." .. newline .. newline ..</span> +<span id="cb152-19"><a href="#cb152-19" aria-hidden="true" tabindex="-1"></a> "> Another block quote." .. newline</span> +<span id="cb152-20"><a href="#cb152-20" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> +<span id="cb152-21"><a href="#cb152-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb152-22"><a href="#cb152-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Then, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb127"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb127-1"><a href="#cb127-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb153"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb153-1"><a href="#cb153-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -1987,26 +2504,30 @@ contain the following text:</p> <p>Another block quote.</p> </blockquote> </blockquote> -<h5 class="unnumbered" id="lua-cli-example-5">Lua CLI Example</h5> +<h5 class="unnumbered" id="lua-cli-example-7">Lua CLI Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb128"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb128-1"><a href="#cb128-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb128-2"><a href="#cb128-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb128-3"><a href="#cb128-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> -<span id="cb128-4"><a href="#cb128-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> -<span id="cb128-5"><a href="#cb128-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb154"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb154-1"><a href="#cb154-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb154-2"><a href="#cb154-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb154-3"><a href="#cb154-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb154-4"><a href="#cb154-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb154-5"><a href="#cb154-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb154-6"><a href="#cb154-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> +<span id="cb154-7"><a href="#cb154-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> +<span id="cb154-8"><a href="#cb154-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb154-9"><a href="#cb154-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Using a text editor, create a text document named <code>content.md</code> with the following content:</p> -<div class="sourceCode" id="cb129"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb129-1"><a href="#cb129-1" aria-hidden="true" tabindex="-1"></a><span class="at">> A single block quote</span></span> -<span id="cb129-2"><a href="#cb129-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb129-3"><a href="#cb129-3" aria-hidden="true" tabindex="-1"></a><span class="at">> or two block quotes?</span></span></code></pre></div> +<div class="sourceCode" id="cb155"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb155-1"><a href="#cb155-1" aria-hidden="true" tabindex="-1"></a><span class="at">> A single block quote</span></span> +<span id="cb155-2"><a href="#cb155-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb155-3"><a href="#cb155-3" aria-hidden="true" tabindex="-1"></a><span class="at">> or two block quotes?</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb130"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb130-1"><a href="#cb130-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span> -<span id="cb130-2"><a href="#cb130-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ breakableBlockquotes=true <span class="at">--</span> content.md optiontrue.tex</span> -<span id="cb130-3"><a href="#cb130-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb156"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb156-1"><a href="#cb156-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ breakableBlockquotes=false <span class="at">--</span> content.md optionfalse.tex</span> +<span id="cb156-2"><a href="#cb156-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optiontrue.tex</span> +<span id="cb156-3"><a href="#cb156-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua CLI script file, such as <code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems @@ -2029,30 +2550,31 @@ contain the following text:</p> <p>or two block quotes?</p> </blockquote> </blockquote> -<h5 class="unnumbered" id="plain-tex-example-5">Plain <span +<h5 class="unnumbered" id="plain-tex-example-6">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb131"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb131-1"><a href="#cb131-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb131-2"><a href="#cb131-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb131-3"><a href="#cb131-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb131-4"><a href="#cb131-4" aria-hidden="true" tabindex="-1"></a>> A single</span> -<span id="cb131-5"><a href="#cb131-5" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb131-6"><a href="#cb131-6" aria-hidden="true" tabindex="-1"></a>> block quote.</span> -<span id="cb131-7"><a href="#cb131-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb131-8"><a href="#cb131-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb131-9"><a href="#cb131-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBreakableBlockquotes</span>{true}</span> -<span id="cb131-10"><a href="#cb131-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb131-11"><a href="#cb131-11" aria-hidden="true" tabindex="-1"></a>> A block quote.</span> -<span id="cb131-12"><a href="#cb131-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb131-13"><a href="#cb131-13" aria-hidden="true" tabindex="-1"></a>> Another block quote.</span> -<span id="cb131-14"><a href="#cb131-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb131-15"><a href="#cb131-15" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb131-16"><a href="#cb131-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> -<p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb132"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb132-1"><a href="#cb132-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb157"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb157-1"><a href="#cb157-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb157-2"><a href="#cb157-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb157-3"><a href="#cb157-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBreakableBlockquotes</span>{false}</span> +<span id="cb157-4"><a href="#cb157-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb157-5"><a href="#cb157-5" aria-hidden="true" tabindex="-1"></a>> A single</span> +<span id="cb157-6"><a href="#cb157-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb157-7"><a href="#cb157-7" aria-hidden="true" tabindex="-1"></a>> block quote.</span> +<span id="cb157-8"><a href="#cb157-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb157-9"><a href="#cb157-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb157-10"><a href="#cb157-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBreakableBlockquotes</span>{true}</span> +<span id="cb157-11"><a href="#cb157-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb157-12"><a href="#cb157-12" aria-hidden="true" tabindex="-1"></a>> A block quote.</span> +<span id="cb157-13"><a href="#cb157-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb157-14"><a href="#cb157-14" aria-hidden="true" tabindex="-1"></a>> Another block quote.</span> +<span id="cb157-15"><a href="#cb157-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb157-16"><a href="#cb157-16" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb157-17"><a href="#cb157-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb158"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb158-1"><a href="#cb158-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -2066,31 +2588,31 @@ contain the following text:</p> <p>Another block quote.</p> </blockquote> </blockquote> -<h5 class="unnumbered" id="latex-example-8"><span +<h5 class="unnumbered" id="latex-example-9"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb133"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb133-1"><a href="#cb133-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb133-2"><a href="#cb133-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb133-3"><a href="#cb133-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb133-4"><a href="#cb133-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb133-5"><a href="#cb133-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb133-6"><a href="#cb133-6" aria-hidden="true" tabindex="-1"></a>> A single</span> -<span id="cb133-7"><a href="#cb133-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb133-8"><a href="#cb133-8" aria-hidden="true" tabindex="-1"></a>> block quote.</span> -<span id="cb133-9"><a href="#cb133-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb133-10"><a href="#cb133-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb133-11"><a href="#cb133-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{breakableBlockquotes}</span> -<span id="cb133-12"><a href="#cb133-12" aria-hidden="true" tabindex="-1"></a>> A block quote.</span> -<span id="cb133-13"><a href="#cb133-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb133-14"><a href="#cb133-14" aria-hidden="true" tabindex="-1"></a>> Another block quote.</span> -<span id="cb133-15"><a href="#cb133-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb133-16"><a href="#cb133-16" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb133-17"><a href="#cb133-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb159"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb159-1"><a href="#cb159-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb159-2"><a href="#cb159-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb159-3"><a href="#cb159-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb159-4"><a href="#cb159-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb159-5"><a href="#cb159-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[breakableBlockquotes = false]</span> +<span id="cb159-6"><a href="#cb159-6" aria-hidden="true" tabindex="-1"></a>> A single</span> +<span id="cb159-7"><a href="#cb159-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb159-8"><a href="#cb159-8" aria-hidden="true" tabindex="-1"></a>> block quote.</span> +<span id="cb159-9"><a href="#cb159-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb159-10"><a href="#cb159-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb159-11"><a href="#cb159-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb159-12"><a href="#cb159-12" aria-hidden="true" tabindex="-1"></a>> A block quote.</span> +<span id="cb159-13"><a href="#cb159-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb159-14"><a href="#cb159-14" aria-hidden="true" tabindex="-1"></a>> Another block quote.</span> +<span id="cb159-15"><a href="#cb159-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb159-16"><a href="#cb159-16" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb159-17"><a href="#cb159-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb134"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb134-1"><a href="#cb134-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb160"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb160-1"><a href="#cb160-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -2104,31 +2626,32 @@ contain the following text:</p> <p>Another block quote.</p> </blockquote> </blockquote> -<h5 class="unnumbered" id="context-example-6">Con<span +<h5 class="unnumbered" id="context-example-7">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb135"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb135-1"><a href="#cb135-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb135-2"><a href="#cb135-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb135-3"><a href="#cb135-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb135-4"><a href="#cb135-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb135-5"><a href="#cb135-5" aria-hidden="true" tabindex="-1"></a>> A single</span> -<span id="cb135-6"><a href="#cb135-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb135-7"><a href="#cb135-7" aria-hidden="true" tabindex="-1"></a>> block quote.</span> -<span id="cb135-8"><a href="#cb135-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb135-9"><a href="#cb135-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb135-10"><a href="#cb135-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[breakableBlockquotes = yes]</span> -<span id="cb135-11"><a href="#cb135-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb135-12"><a href="#cb135-12" aria-hidden="true" tabindex="-1"></a>> A block quote.</span> -<span id="cb135-13"><a href="#cb135-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb135-14"><a href="#cb135-14" aria-hidden="true" tabindex="-1"></a>> Another block quote.</span> -<span id="cb135-15"><a href="#cb135-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb135-16"><a href="#cb135-16" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb135-17"><a href="#cb135-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb161"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb161-1"><a href="#cb161-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb161-2"><a href="#cb161-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb161-3"><a href="#cb161-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb161-4"><a href="#cb161-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[breakableBlockquotes = no]</span> +<span id="cb161-5"><a href="#cb161-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb161-6"><a href="#cb161-6" aria-hidden="true" tabindex="-1"></a>> A single</span> +<span id="cb161-7"><a href="#cb161-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb161-8"><a href="#cb161-8" aria-hidden="true" tabindex="-1"></a>> block quote.</span> +<span id="cb161-9"><a href="#cb161-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb161-10"><a href="#cb161-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb161-11"><a href="#cb161-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[breakableBlockquotes = yes]</span> +<span id="cb161-12"><a href="#cb161-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb161-13"><a href="#cb161-13" aria-hidden="true" tabindex="-1"></a>> A block quote.</span> +<span id="cb161-14"><a href="#cb161-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb161-15"><a href="#cb161-15" aria-hidden="true" tabindex="-1"></a>> Another block quote.</span> +<span id="cb161-16"><a href="#cb161-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb161-17"><a href="#cb161-17" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb161-18"><a href="#cb161-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb136"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb136-1"><a href="#cb136-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb162"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb162-1"><a href="#cb162-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -2142,8 +2665,8 @@ contain the following text:</p> <p>Another block quote.</p> </blockquote> </blockquote> -<h4 data-number="2.2.1.11" id="option-citationnbsps"><span -class="header-section-number">2.2.1.11</span> Option +<h4 data-number="2.2.1.15" id="option-citationnbsps"><span +class="header-section-number">2.2.1.15</span> Option <code>citationNbsps</code></h4> <dl> <dt><code>citationNbsps</code> (default value: <code>true</code>)</dt> @@ -2164,41 +2687,41 @@ syntax extension.</p> </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-9"><span +<h5 class="unnumbered" id="latex-example-10"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.bib</code> with the following content:</p> -<div class="sourceCode" id="cb137"><pre -class="sourceCode bib"><code class="sourceCode bibtex"><span id="cb137-1"><a href="#cb137-1" aria-hidden="true" tabindex="-1"></a><span class="va">@book</span>{<span class="ot">knuth:tex</span>,</span> -<span id="cb137-2"><a href="#cb137-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">author</span> = "<span class="st">Knuth, Donald Ervin</span>",</span> -<span id="cb137-3"><a href="#cb137-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">title</span> = "<span class="st">The </span><span class="ch">\TeX</span><span class="st"> book, volume A of Computers and typesetting</span>",</span> -<span id="cb137-4"><a href="#cb137-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">publisher</span> = "<span class="st">Addison-Wesley</span>",</span> -<span id="cb137-5"><a href="#cb137-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">year</span> = "<span class="st">1984</span>"</span> -<span id="cb137-6"><a href="#cb137-6" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> +<div class="sourceCode" id="cb163"><pre +class="sourceCode bib"><code class="sourceCode bibtex"><span id="cb163-1"><a href="#cb163-1" aria-hidden="true" tabindex="-1"></a><span class="va">@book</span>{<span class="ot">knuth:tex</span>,</span> +<span id="cb163-2"><a href="#cb163-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">author</span> = "<span class="st">Knuth, Donald Ervin</span>",</span> +<span id="cb163-3"><a href="#cb163-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">title</span> = "<span class="st">The </span><span class="ch">\TeX</span><span class="st"> book, volume A of Computers and typesetting</span>",</span> +<span id="cb163-4"><a href="#cb163-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">publisher</span> = "<span class="st">Addison-Wesley</span>",</span> +<span id="cb163-5"><a href="#cb163-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">year</span> = "<span class="st">1984</span>"</span> +<span id="cb163-6"><a href="#cb163-6" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb138"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb138-1"><a href="#cb138-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb138-2"><a href="#cb138-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[citations]{<span class="ex">markdown</span>}</span> -<span id="cb138-3"><a href="#cb138-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb138-4"><a href="#cb138-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb138-5"><a href="#cb138-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb138-6"><a href="#cb138-6" aria-hidden="true" tabindex="-1"></a>The TeXbook [@knuth:tex, p. 123 and 130] is good.</span> -<span id="cb138-7"><a href="#cb138-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb138-8"><a href="#cb138-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb138-9"><a href="#cb138-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{citationNbsps = false}</span> -<span id="cb138-10"><a href="#cb138-10" aria-hidden="true" tabindex="-1"></a>The TeXbook [@knuth:tex, p. 123 and 130] is good.</span> -<span id="cb138-11"><a href="#cb138-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb138-12"><a href="#cb138-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb138-13"><a href="#cb138-13" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliographystyle</span>{<span class="ex">plain</span>}</span> -<span id="cb138-14"><a href="#cb138-14" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliography</span>{<span class="ex">document.bib</span>}</span> -<span id="cb138-15"><a href="#cb138-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb164"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb164-1"><a href="#cb164-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb164-2"><a href="#cb164-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[citations]{<span class="ex">markdown</span>}</span> +<span id="cb164-3"><a href="#cb164-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb164-4"><a href="#cb164-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb164-5"><a href="#cb164-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb164-6"><a href="#cb164-6" aria-hidden="true" tabindex="-1"></a>The TeXbook [@knuth:tex, p. 123 and 130] is good.</span> +<span id="cb164-7"><a href="#cb164-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb164-8"><a href="#cb164-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb164-9"><a href="#cb164-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[citationNbsps = false]</span> +<span id="cb164-10"><a href="#cb164-10" aria-hidden="true" tabindex="-1"></a>The TeXbook [@knuth:tex, p. 123 and 130] is good.</span> +<span id="cb164-11"><a href="#cb164-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb164-12"><a href="#cb164-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb164-13"><a href="#cb164-13" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliographystyle</span>{<span class="ex">plain</span>}</span> +<span id="cb164-14"><a href="#cb164-14" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliography</span>{<span class="ex">document.bib</span>}</span> +<span id="cb164-15"><a href="#cb164-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX and BibTeX from the terminal:</p> -<div class="sourceCode" id="cb139"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb139-1"><a href="#cb139-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span> -<span id="cb139-2"><a href="#cb139-2" aria-hidden="true" tabindex="-1"></a><span class="ex">bibtex</span> document.aux</span> -<span id="cb139-3"><a href="#cb139-3" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span> -<span id="cb139-4"><a href="#cb139-4" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb165"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb165-1"><a href="#cb165-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span> +<span id="cb165-2"><a href="#cb165-2" aria-hidden="true" tabindex="-1"></a><span class="ex">bibtex</span> document.aux</span> +<span id="cb165-3"><a href="#cb165-3" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span> +<span id="cb165-4"><a href="#cb165-4" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text, where the middot (<code>·</code>) denotes a non-breaking space:</p> @@ -2211,8 +2734,8 @@ href="https://datatracker.ietf.org/doc/html/rfc3986#section-4.2">1</a> Donald·Ervin Knuth. <em>The TeXbook, volume A of Computers and typesetting.</em> Addison-Wesley, 1984.</p> </blockquote> -<h4 data-number="2.2.1.12" id="option-citations"><span -class="header-section-number">2.2.1.12</span> Option +<h4 data-number="2.2.1.16" id="option-citations"><span +class="header-section-number">2.2.1.16</span> Option <code>citations</code></h4> <dl> <dt><code>citations</code> (default value: <code>false</code>)</dt> @@ -2223,20 +2746,20 @@ class="header-section-number">2.2.1.12</span> Option <p>Enable the Pandoc <a href="https://pandoc.org/MANUAL.html#extension-citations">citation syntax extension</a>:</p> -<div class="sourceCode" id="cb140"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb140-1"><a href="#cb140-1" aria-hidden="true" tabindex="-1"></a>Here is a simple parenthetical citation <span class="co">[</span><span class="ot">@doe99</span><span class="co">]</span> and here</span> -<span id="cb140-2"><a href="#cb140-2" aria-hidden="true" tabindex="-1"></a>is a string of several [see @doe99, pp. 33-35; also</span> -<span id="cb140-3"><a href="#cb140-3" aria-hidden="true" tabindex="-1"></a>@smith04, chap. 1].</span> -<span id="cb140-4"><a href="#cb140-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb140-5"><a href="#cb140-5" aria-hidden="true" tabindex="-1"></a>A parenthetical citation can have a <span class="co">[</span><span class="ot">prenote @doe99</span><span class="co">]</span> and</span> -<span id="cb140-6"><a href="#cb140-6" aria-hidden="true" tabindex="-1"></a>a <span class="co">[</span><span class="ot">@smith04 postnote</span><span class="co">]</span>. The name of the author can be</span> -<span id="cb140-7"><a href="#cb140-7" aria-hidden="true" tabindex="-1"></a>suppressed by inserting a dash before the name of an</span> -<span id="cb140-8"><a href="#cb140-8" aria-hidden="true" tabindex="-1"></a>author as follows <span class="co">[</span><span class="ot">-@smith04</span><span class="co">]</span>.</span> -<span id="cb140-9"><a href="#cb140-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb140-10"><a href="#cb140-10" aria-hidden="true" tabindex="-1"></a>Here is a simple text citation @doe99 and here is</span> -<span id="cb140-11"><a href="#cb140-11" aria-hidden="true" tabindex="-1"></a>a string of several @doe99 [pp. 33-35; also @smith04,</span> -<span id="cb140-12"><a href="#cb140-12" aria-hidden="true" tabindex="-1"></a>chap. 1]. Here is one with the name of the author</span> -<span id="cb140-13"><a href="#cb140-13" aria-hidden="true" tabindex="-1"></a>suppressed -@doe99.</span></code></pre></div> +<div class="sourceCode" id="cb166"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb166-1"><a href="#cb166-1" aria-hidden="true" tabindex="-1"></a>Here is a simple parenthetical citation <span class="co">[</span><span class="ot">@doe99</span><span class="co">]</span> and here</span> +<span id="cb166-2"><a href="#cb166-2" aria-hidden="true" tabindex="-1"></a>is a string of several [see @doe99, pp. 33-35; also</span> +<span id="cb166-3"><a href="#cb166-3" aria-hidden="true" tabindex="-1"></a>@smith04, chap. 1].</span> +<span id="cb166-4"><a href="#cb166-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb166-5"><a href="#cb166-5" aria-hidden="true" tabindex="-1"></a>A parenthetical citation can have a <span class="co">[</span><span class="ot">prenote @doe99</span><span class="co">]</span> and</span> +<span id="cb166-6"><a href="#cb166-6" aria-hidden="true" tabindex="-1"></a>a <span class="co">[</span><span class="ot">@smith04 postnote</span><span class="co">]</span>. The name of the author can be</span> +<span id="cb166-7"><a href="#cb166-7" aria-hidden="true" tabindex="-1"></a>suppressed by inserting a dash before the name of an</span> +<span id="cb166-8"><a href="#cb166-8" aria-hidden="true" tabindex="-1"></a>author as follows <span class="co">[</span><span class="ot">-@smith04</span><span class="co">]</span>.</span> +<span id="cb166-9"><a href="#cb166-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb166-10"><a href="#cb166-10" aria-hidden="true" tabindex="-1"></a>Here is a simple text citation @doe99 and here is</span> +<span id="cb166-11"><a href="#cb166-11" aria-hidden="true" tabindex="-1"></a>a string of several @doe99 [pp. 33-35; also @smith04,</span> +<span id="cb166-12"><a href="#cb166-12" aria-hidden="true" tabindex="-1"></a>chap. 1]. Here is one with the name of the author</span> +<span id="cb166-13"><a href="#cb166-13" aria-hidden="true" tabindex="-1"></a>suppressed -@doe99.</span></code></pre></div> </dd> </dl> </dd> @@ -2249,38 +2772,38 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb140-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-10"><span +<h5 class="unnumbered" id="latex-example-11"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.bib</code> with the following content:</p> -<div class="sourceCode" id="cb141"><pre -class="sourceCode bib"><code class="sourceCode bibtex"><span id="cb141-1"><a href="#cb141-1" aria-hidden="true" tabindex="-1"></a><span class="va">@book</span>{<span class="ot">knuth:tex</span>,</span> -<span id="cb141-2"><a href="#cb141-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">author</span> = "<span class="st">Knuth, Donald Ervin</span>",</span> -<span id="cb141-3"><a href="#cb141-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">title</span> = "<span class="st">The </span><span class="ch">\TeX</span><span class="st"> book, volume A of Computers and typesetting</span>",</span> -<span id="cb141-4"><a href="#cb141-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">publisher</span> = "<span class="st">Addison-Wesley</span>",</span> -<span id="cb141-5"><a href="#cb141-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">year</span> = "<span class="st">1984</span>"</span> -<span id="cb141-6"><a href="#cb141-6" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> +<div class="sourceCode" id="cb167"><pre +class="sourceCode bib"><code class="sourceCode bibtex"><span id="cb167-1"><a href="#cb167-1" aria-hidden="true" tabindex="-1"></a><span class="va">@book</span>{<span class="ot">knuth:tex</span>,</span> +<span id="cb167-2"><a href="#cb167-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">author</span> = "<span class="st">Knuth, Donald Ervin</span>",</span> +<span id="cb167-3"><a href="#cb167-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">title</span> = "<span class="st">The </span><span class="ch">\TeX</span><span class="st"> book, volume A of Computers and typesetting</span>",</span> +<span id="cb167-4"><a href="#cb167-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">publisher</span> = "<span class="st">Addison-Wesley</span>",</span> +<span id="cb167-5"><a href="#cb167-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">year</span> = "<span class="st">1984</span>"</span> +<span id="cb167-6"><a href="#cb167-6" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb142"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb142-1"><a href="#cb142-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb142-2"><a href="#cb142-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[backend=biber]{<span class="ex">biblatex</span>}</span> -<span id="cb142-3"><a href="#cb142-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\addbibresource</span>{document.bib}</span> -<span id="cb142-4"><a href="#cb142-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[citations]{<span class="ex">markdown</span>}</span> -<span id="cb142-5"><a href="#cb142-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb142-6"><a href="#cb142-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb142-7"><a href="#cb142-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb142-8"><a href="#cb142-8" aria-hidden="true" tabindex="-1"></a>The TeXbook [@knuth:tex, p. 123 and 130] was written by @knuth:tex.</span> -<span id="cb142-9"><a href="#cb142-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb142-10"><a href="#cb142-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb142-11"><a href="#cb142-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\printbibliography</span></span> -<span id="cb142-12"><a href="#cb142-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb168"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb168-1"><a href="#cb168-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb168-2"><a href="#cb168-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[backend=biber]{<span class="ex">biblatex</span>}</span> +<span id="cb168-3"><a href="#cb168-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\addbibresource</span>{document.bib}</span> +<span id="cb168-4"><a href="#cb168-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[citations]{<span class="ex">markdown</span>}</span> +<span id="cb168-5"><a href="#cb168-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb168-6"><a href="#cb168-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb168-7"><a href="#cb168-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb168-8"><a href="#cb168-8" aria-hidden="true" tabindex="-1"></a>The TeXbook [@knuth:tex, p. 123 and 130] was written by @knuth:tex.</span> +<span id="cb168-9"><a href="#cb168-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb168-10"><a href="#cb168-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb168-11"><a href="#cb168-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\printbibliography</span></span> +<span id="cb168-12"><a href="#cb168-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX and Biber from the terminal:</p> -<div class="sourceCode" id="cb143"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb143-1"><a href="#cb143-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span> -<span id="cb143-2"><a href="#cb143-2" aria-hidden="true" tabindex="-1"></a><span class="ex">biber</span> document.bcf</span> -<span id="cb143-3"><a href="#cb143-3" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span> -<span id="cb143-4"><a href="#cb143-4" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb169"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb169-1"><a href="#cb169-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span> +<span id="cb169-2"><a href="#cb169-2" aria-hidden="true" tabindex="-1"></a><span class="ex">biber</span> document.bcf</span> +<span id="cb169-3"><a href="#cb169-3" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span> +<span id="cb169-4"><a href="#cb169-4" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -2292,8 +2815,8 @@ href="https://datatracker.ietf.org/doc/html/rfc3986#section-4.2">1</a> Donald Ervin Knuth. <em>The <span class="tex">T<sub>e</sub>X</span>book, volume A of Computers and typesetting.</em> Addison-Wesley, 1984.</p> </blockquote> -<h4 data-number="2.2.1.13" id="option-codespans"><span -class="header-section-number">2.2.1.13</span> Option +<h4 data-number="2.2.1.17" id="option-codespans"><span +class="header-section-number">2.2.1.17</span> Option <code>codeSpans</code></h4> <dl> <dt><code>codeSpans</code> (default value: <code>true</code>)</dt> @@ -2302,9 +2825,9 @@ class="header-section-number">2.2.1.13</span> Option <dt>true</dt> <dd> <p>Enable the code span syntax:</p> -<div class="sourceCode" id="cb144"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb144-1"><a href="#cb144-1" aria-hidden="true" tabindex="-1"></a>Use the <span class="in">`printf()`</span> function.</span> -<span id="cb144-2"><a href="#cb144-2" aria-hidden="true" tabindex="-1"></a>`<span class="in">`There is a literal backtick (`</span>) here.``</span></code></pre></div> +<div class="sourceCode" id="cb170"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb170-1"><a href="#cb170-1" aria-hidden="true" tabindex="-1"></a>Use the <span class="in">`printf()`</span> function.</span> +<span id="cb170-2"><a href="#cb170-2" aria-hidden="true" tabindex="-1"></a>`<span class="in">`There is a literal backtick (`</span>) here.``</span></code></pre></div> </dd> </dl> </dd> @@ -2319,31 +2842,35 @@ quotation mark ligatures in texts that do not contain code spans:</p> </dl> </dd> </dl> -<h5 class="unnumbered" id="lua-module-example-6">Lua Module Example</h5> +<h5 class="unnumbered" id="lua-module-example-8">Lua Module Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb146"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb146-1"><a href="#cb146-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb146-2"><a href="#cb146-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb146-3"><a href="#cb146-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> -<span id="cb146-4"><a href="#cb146-4" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> -<span id="cb146-5"><a href="#cb146-5" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new()</span> -<span id="cb146-6"><a href="#cb146-6" aria-hidden="true" tabindex="-1"></a> local input =</span> -<span id="cb146-7"><a href="#cb146-7" aria-hidden="true" tabindex="-1"></a> "``This is a code span.'' " ..</span> -<span id="cb146-8"><a href="#cb146-8" aria-hidden="true" tabindex="-1"></a> "``This is no longer a code span.''"</span> -<span id="cb146-9"><a href="#cb146-9" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> -<span id="cb146-10"><a href="#cb146-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> -<span id="cb146-11"><a href="#cb146-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> -<span id="cb146-12"><a href="#cb146-12" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> -<span id="cb146-13"><a href="#cb146-13" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({codeSpans = false})</span> -<span id="cb146-14"><a href="#cb146-14" aria-hidden="true" tabindex="-1"></a> local input =</span> -<span id="cb146-15"><a href="#cb146-15" aria-hidden="true" tabindex="-1"></a> "``This is a quote.'' " ..</span> -<span id="cb146-16"><a href="#cb146-16" aria-hidden="true" tabindex="-1"></a> "``This is another quote.''"</span> -<span id="cb146-17"><a href="#cb146-17" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> -<span id="cb146-18"><a href="#cb146-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb172"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb172-1"><a href="#cb172-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb172-2"><a href="#cb172-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb172-3"><a href="#cb172-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb172-4"><a href="#cb172-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb172-5"><a href="#cb172-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb172-6"><a href="#cb172-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb172-7"><a href="#cb172-7" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb172-8"><a href="#cb172-8" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new()</span> +<span id="cb172-9"><a href="#cb172-9" aria-hidden="true" tabindex="-1"></a> local input =</span> +<span id="cb172-10"><a href="#cb172-10" aria-hidden="true" tabindex="-1"></a> "``This is a code span.'' " ..</span> +<span id="cb172-11"><a href="#cb172-11" aria-hidden="true" tabindex="-1"></a> "``This is no longer a code span.''"</span> +<span id="cb172-12"><a href="#cb172-12" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> +<span id="cb172-13"><a href="#cb172-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> +<span id="cb172-14"><a href="#cb172-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb172-15"><a href="#cb172-15" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb172-16"><a href="#cb172-16" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({codeSpans = false})</span> +<span id="cb172-17"><a href="#cb172-17" aria-hidden="true" tabindex="-1"></a> local input =</span> +<span id="cb172-18"><a href="#cb172-18" aria-hidden="true" tabindex="-1"></a> "``This is a quote.'' " ..</span> +<span id="cb172-19"><a href="#cb172-19" aria-hidden="true" tabindex="-1"></a> "``This is another quote.''"</span> +<span id="cb172-20"><a href="#cb172-20" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> +<span id="cb172-21"><a href="#cb172-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb172-22"><a href="#cb172-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Then, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb147"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb147-1"><a href="#cb147-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb173"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb173-1"><a href="#cb173-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -2351,25 +2878,29 @@ contain the following text:</p> span.’’</p> <p>“This is a quote.” “This is another quote.”</p> </blockquote> -<h5 class="unnumbered" id="lua-cli-example-6">Lua CLI Example</h5> +<h5 class="unnumbered" id="lua-cli-example-8">Lua CLI Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb148"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb148-1"><a href="#cb148-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb148-2"><a href="#cb148-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb148-3"><a href="#cb148-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> -<span id="cb148-4"><a href="#cb148-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> -<span id="cb148-5"><a href="#cb148-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> -<span id="cb148-6"><a href="#cb148-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb174"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb174-1"><a href="#cb174-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb174-2"><a href="#cb174-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb174-3"><a href="#cb174-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb174-4"><a href="#cb174-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb174-5"><a href="#cb174-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb174-6"><a href="#cb174-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> +<span id="cb174-7"><a href="#cb174-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> +<span id="cb174-8"><a href="#cb174-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> +<span id="cb174-9"><a href="#cb174-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb174-10"><a href="#cb174-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Using a text editor, create a text document named <code>content.md</code> with the following content:</p> -<div class="sourceCode" id="cb149"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb149-1"><a href="#cb149-1" aria-hidden="true" tabindex="-1"></a>``Is this a code span?'' ``Or a quote?''</span></code></pre></div> +<div class="sourceCode" id="cb175"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb175-1"><a href="#cb175-1" aria-hidden="true" tabindex="-1"></a>``Is this a code span?'' ``Or a quote?''</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb150"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb150-1"><a href="#cb150-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ codeSpans=false <span class="at">--</span> content.md optionfalse.tex</span> -<span id="cb150-2"><a href="#cb150-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optiontrue.tex</span> -<span id="cb150-3"><a href="#cb150-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb176"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb176-1"><a href="#cb176-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ codeSpans=false <span class="at">--</span> content.md optionfalse.tex</span> +<span id="cb176-2"><a href="#cb176-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optiontrue.tex</span> +<span id="cb176-3"><a href="#cb176-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua CLI script file, such as <code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems @@ -2385,28 +2916,28 @@ contain the following text:</p> <p>“Is this a code span?” “Or a quote?”</p> <p><code>Is this a code span?''</code>Or a quote?’’</p> </blockquote> -<h5 class="unnumbered" id="plain-tex-example-6">Plain <span +<h5 class="unnumbered" id="plain-tex-example-7">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb151"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb151-1"><a href="#cb151-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb151-2"><a href="#cb151-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb151-3"><a href="#cb151-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb151-4"><a href="#cb151-4" aria-hidden="true" tabindex="-1"></a>``This is a code span.''</span> -<span id="cb151-5"><a href="#cb151-5" aria-hidden="true" tabindex="-1"></a>``This is no longer a code span.''</span> -<span id="cb151-6"><a href="#cb151-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb151-7"><a href="#cb151-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb151-8"><a href="#cb151-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionCodeSpans</span>{false}</span> -<span id="cb151-9"><a href="#cb151-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb151-10"><a href="#cb151-10" aria-hidden="true" tabindex="-1"></a>``This is a quote.''</span> -<span id="cb151-11"><a href="#cb151-11" aria-hidden="true" tabindex="-1"></a>``This is another quote.''</span> -<span id="cb151-12"><a href="#cb151-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb151-13"><a href="#cb151-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb151-14"><a href="#cb151-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb177"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb177-1"><a href="#cb177-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb177-2"><a href="#cb177-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb177-3"><a href="#cb177-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb177-4"><a href="#cb177-4" aria-hidden="true" tabindex="-1"></a>``This is a code span.''</span> +<span id="cb177-5"><a href="#cb177-5" aria-hidden="true" tabindex="-1"></a>``This is no longer a code span.''</span> +<span id="cb177-6"><a href="#cb177-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb177-7"><a href="#cb177-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb177-8"><a href="#cb177-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionCodeSpans</span>{false}</span> +<span id="cb177-9"><a href="#cb177-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb177-10"><a href="#cb177-10" aria-hidden="true" tabindex="-1"></a>``This is a quote.''</span> +<span id="cb177-11"><a href="#cb177-11" aria-hidden="true" tabindex="-1"></a>``This is another quote.''</span> +<span id="cb177-12"><a href="#cb177-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb177-13"><a href="#cb177-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb177-14"><a href="#cb177-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb152"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb152-1"><a href="#cb152-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb178"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb178-1"><a href="#cb178-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -2414,29 +2945,29 @@ contain the following text:</p> span.’’</p> <p>“This is a quote.” “This is another quote.”</p> </blockquote> -<h5 class="unnumbered" id="latex-example-11"><span +<h5 class="unnumbered" id="latex-example-12"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb153"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb153-1"><a href="#cb153-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb153-2"><a href="#cb153-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb153-3"><a href="#cb153-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb153-4"><a href="#cb153-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb153-5"><a href="#cb153-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb153-6"><a href="#cb153-6" aria-hidden="true" tabindex="-1"></a>``This is a code span.''</span> -<span id="cb153-7"><a href="#cb153-7" aria-hidden="true" tabindex="-1"></a>``This is no longer a code span.''</span> -<span id="cb153-8"><a href="#cb153-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb153-9"><a href="#cb153-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb153-10"><a href="#cb153-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{codeSpans=false}</span> -<span id="cb153-11"><a href="#cb153-11" aria-hidden="true" tabindex="-1"></a>``This is a quote.''</span> -<span id="cb153-12"><a href="#cb153-12" aria-hidden="true" tabindex="-1"></a>``This is another quote.''</span> -<span id="cb153-13"><a href="#cb153-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb153-14"><a href="#cb153-14" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb153-15"><a href="#cb153-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb179"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb179-1"><a href="#cb179-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb179-2"><a href="#cb179-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb179-3"><a href="#cb179-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb179-4"><a href="#cb179-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb179-5"><a href="#cb179-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb179-6"><a href="#cb179-6" aria-hidden="true" tabindex="-1"></a>``This is a code span.''</span> +<span id="cb179-7"><a href="#cb179-7" aria-hidden="true" tabindex="-1"></a>``This is no longer a code span.''</span> +<span id="cb179-8"><a href="#cb179-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb179-9"><a href="#cb179-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb179-10"><a href="#cb179-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[codeSpans=false]</span> +<span id="cb179-11"><a href="#cb179-11" aria-hidden="true" tabindex="-1"></a>``This is a quote.''</span> +<span id="cb179-12"><a href="#cb179-12" aria-hidden="true" tabindex="-1"></a>``This is another quote.''</span> +<span id="cb179-13"><a href="#cb179-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb179-14"><a href="#cb179-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb179-15"><a href="#cb179-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb154"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb154-1"><a href="#cb154-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb180"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb180-1"><a href="#cb180-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -2444,29 +2975,29 @@ contain the following text:</p> span.’’</p> <p>“This is a quote.” “This is another quote.”</p> </blockquote> -<h5 class="unnumbered" id="context-example-7">Con<span +<h5 class="unnumbered" id="context-example-8">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb155"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb155-1"><a href="#cb155-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb155-2"><a href="#cb155-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb155-3"><a href="#cb155-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb155-4"><a href="#cb155-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb155-5"><a href="#cb155-5" aria-hidden="true" tabindex="-1"></a>``This is a code span.''</span> -<span id="cb155-6"><a href="#cb155-6" aria-hidden="true" tabindex="-1"></a>``This is no longer a code span.''</span> -<span id="cb155-7"><a href="#cb155-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb155-8"><a href="#cb155-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb155-9"><a href="#cb155-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[codeSpans = no]</span> -<span id="cb155-10"><a href="#cb155-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb155-11"><a href="#cb155-11" aria-hidden="true" tabindex="-1"></a>``This is a quote.''</span> -<span id="cb155-12"><a href="#cb155-12" aria-hidden="true" tabindex="-1"></a>``This is another quote.''</span> -<span id="cb155-13"><a href="#cb155-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb155-14"><a href="#cb155-14" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb155-15"><a href="#cb155-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> -<p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb156"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb156-1"><a href="#cb156-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb181"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb181-1"><a href="#cb181-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb181-2"><a href="#cb181-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb181-3"><a href="#cb181-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb181-4"><a href="#cb181-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb181-5"><a href="#cb181-5" aria-hidden="true" tabindex="-1"></a>``This is a code span.''</span> +<span id="cb181-6"><a href="#cb181-6" aria-hidden="true" tabindex="-1"></a>``This is no longer a code span.''</span> +<span id="cb181-7"><a href="#cb181-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb181-8"><a href="#cb181-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb181-9"><a href="#cb181-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[codeSpans = no]</span> +<span id="cb181-10"><a href="#cb181-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb181-11"><a href="#cb181-11" aria-hidden="true" tabindex="-1"></a>``This is a quote.''</span> +<span id="cb181-12"><a href="#cb181-12" aria-hidden="true" tabindex="-1"></a>``This is another quote.''</span> +<span id="cb181-13"><a href="#cb181-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb181-14"><a href="#cb181-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb181-15"><a href="#cb181-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb182"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb182-1"><a href="#cb182-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -2474,8 +3005,8 @@ contain the following text:</p> span.’’</p> <p>“This is a quote.” “This is another quote.”</p> </blockquote> -<h4 data-number="2.2.1.14" id="option-contentblocks"><span -class="header-section-number">2.2.1.14</span> Option +<h4 data-number="2.2.1.18" id="option-contentblocks"><span +class="header-section-number">2.2.1.18</span> Option <code>contentBlocks</code></h4> <dl> <dt><code>contentBlocks</code> (default value: <code>false</code>)</dt> @@ -2483,14 +3014,14 @@ class="header-section-number">2.2.1.14</span> Option <dl> <dt>true</dt> <dd> -<p>Enable the iA Writer content blocks syntax extension:</p> -<div class="sourceCode" id="cb157"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb157-1"><a href="#cb157-1" aria-hidden="true" tabindex="-1"></a>http://example.com/minard.jpg (Napoleon's</span> -<span id="cb157-2"><a href="#cb157-2" aria-hidden="true" tabindex="-1"></a> disastrous Russian campaign of 1812)</span> -<span id="cb157-3"><a href="#cb157-3" aria-hidden="true" tabindex="-1"></a>/Flowchart.png "Engineering Flowchart"</span> -<span id="cb157-4"><a href="#cb157-4" aria-hidden="true" tabindex="-1"></a>/Savings Account.csv 'Recent Transactions'</span> -<span id="cb157-5"><a href="#cb157-5" aria-hidden="true" tabindex="-1"></a>/Example.swift</span> -<span id="cb157-6"><a href="#cb157-6" aria-hidden="true" tabindex="-1"></a>/Lorem Ipsum.txt</span></code></pre></div> +<p>Enable the iA Writer content blocks syntax extension:</p> +<div class="sourceCode" id="cb183"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb183-1"><a href="#cb183-1" aria-hidden="true" tabindex="-1"></a>http://example.com/minard.jpg (Napoleon's</span> +<span id="cb183-2"><a href="#cb183-2" aria-hidden="true" tabindex="-1"></a> disastrous Russian campaign of 1812)</span> +<span id="cb183-3"><a href="#cb183-3" aria-hidden="true" tabindex="-1"></a>/Flowchart.png "Engineering Flowchart"</span> +<span id="cb183-4"><a href="#cb183-4" aria-hidden="true" tabindex="-1"></a>/Savings Account.csv 'Recent Transactions'</span> +<span id="cb183-5"><a href="#cb183-5" aria-hidden="true" tabindex="-1"></a>/Example.swift</span> +<span id="cb183-6"><a href="#cb183-6" aria-hidden="true" tabindex="-1"></a>/Lorem Ipsum.txt</span></code></pre></div> </dd> </dl> </dd> @@ -2498,12 +3029,12 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb157-1"><a hr <dl> <dt>false</dt> <dd> -<p>Disable the iA Writer content blocks syntax extension.</p> +<p>Disable the iA Writer content blocks syntax extension.</p> </dd> </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-12"><span +<h5 class="unnumbered" id="latex-example-13"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>table.csv</code> with the following content:</p> @@ -2513,34 +3044,34 @@ Marie,Curie,1867 Thomas,Edison,1847</code></pre> <p>Create also a text document named <code>markdown-languages.json</code> with the following content:</p> -<div class="sourceCode" id="cb159"><pre -class="sourceCode js"><code class="sourceCode javascript"><span id="cb159-1"><a href="#cb159-1" aria-hidden="true" tabindex="-1"></a>{</span> -<span id="cb159-2"><a href="#cb159-2" aria-hidden="true" tabindex="-1"></a> <span class="st">"tex"</span><span class="op">:</span> <span class="st">"LaTeX"</span></span> -<span id="cb159-3"><a href="#cb159-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> +<div class="sourceCode" id="cb185"><pre +class="sourceCode js"><code class="sourceCode javascript"><span id="cb185-1"><a href="#cb185-1" aria-hidden="true" tabindex="-1"></a>{</span> +<span id="cb185-2"><a href="#cb185-2" aria-hidden="true" tabindex="-1"></a> <span class="st">"tex"</span><span class="op">:</span> <span class="st">"LaTeX"</span></span> +<span id="cb185-3"><a href="#cb185-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> <p>Create also a text document named <code>code.tex</code> with the following content:</p> -<div class="sourceCode" id="cb160"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb160-1"><a href="#cb160-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\LaTeX</span>.</span></code></pre></div> +<div class="sourceCode" id="cb186"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb186-1"><a href="#cb186-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\LaTeX</span>.</span></code></pre></div> <p>Create also a text document named <code>part.md</code> with the following content:</p> -<div class="sourceCode" id="cb161"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb161-1"><a href="#cb161-1" aria-hidden="true" tabindex="-1"></a>This is a *transcluded markdown document*.</span></code></pre></div> +<div class="sourceCode" id="cb187"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb187-1"><a href="#cb187-1" aria-hidden="true" tabindex="-1"></a>This is a *transcluded markdown document*.</span></code></pre></div> <p>Create also a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb162"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb162-1"><a href="#cb162-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb162-2"><a href="#cb162-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span> -<span id="cb162-3"><a href="#cb162-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span> -<span id="cb162-4"><a href="#cb162-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb162-5"><a href="#cb162-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb162-6"><a href="#cb162-6" aria-hidden="true" tabindex="-1"></a>/table.csv (An example table)</span> -<span id="cb162-7"><a href="#cb162-7" aria-hidden="true" tabindex="-1"></a>/code.tex (An example code listing)</span> -<span id="cb162-8"><a href="#cb162-8" aria-hidden="true" tabindex="-1"></a>/part.md (A file transclusion example)</span> -<span id="cb162-9"><a href="#cb162-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb162-10"><a href="#cb162-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb188"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb188-1"><a href="#cb188-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb188-2"><a href="#cb188-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span> +<span id="cb188-3"><a href="#cb188-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span> +<span id="cb188-4"><a href="#cb188-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb188-5"><a href="#cb188-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb188-6"><a href="#cb188-6" aria-hidden="true" tabindex="-1"></a>/table.csv (An example table)</span> +<span id="cb188-7"><a href="#cb188-7" aria-hidden="true" tabindex="-1"></a>/code.tex (An example code listing)</span> +<span id="cb188-8"><a href="#cb188-8" aria-hidden="true" tabindex="-1"></a>/part.md (A file transclusion example)</span> +<span id="cb188-9"><a href="#cb188-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb188-10"><a href="#cb188-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb163"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb163-1"><a href="#cb163-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb189"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb189-1"><a href="#cb189-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -2571,11 +3102,11 @@ contain the following text:</p> </tbody> </table> <p>Table 1: An example table</p> -<div class="sourceCode" id="cb164"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb164-1"><a href="#cb164-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\LaTeX</span>.</span></code></pre></div> +<div class="sourceCode" id="cb190"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb190-1"><a href="#cb190-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\LaTeX</span>.</span></code></pre></div> <p>This is a <em>transcluded markdown document</em>.</p> </blockquote> -<h5 class="unnumbered" id="context-example-8">Con<span +<h5 class="unnumbered" id="context-example-9">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>table.csv</code> with the following content:</p> @@ -2585,35 +3116,35 @@ Marie,Curie,1867 Thomas,Edison,1847</code></pre> <p>Create also a text document named <code>markdown-languages.json</code> with the following content:</p> -<div class="sourceCode" id="cb166"><pre -class="sourceCode js"><code class="sourceCode javascript"><span id="cb166-1"><a href="#cb166-1" aria-hidden="true" tabindex="-1"></a>{</span> -<span id="cb166-2"><a href="#cb166-2" aria-hidden="true" tabindex="-1"></a> <span class="st">"tex"</span><span class="op">:</span> <span class="st">"ConTeXt"</span></span> -<span id="cb166-3"><a href="#cb166-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> +<div class="sourceCode" id="cb192"><pre +class="sourceCode js"><code class="sourceCode javascript"><span id="cb192-1"><a href="#cb192-1" aria-hidden="true" tabindex="-1"></a>{</span> +<span id="cb192-2"><a href="#cb192-2" aria-hidden="true" tabindex="-1"></a> <span class="st">"tex"</span><span class="op">:</span> <span class="st">"ConTeXt"</span></span> +<span id="cb192-3"><a href="#cb192-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> <p>Create also a text document named <code>code.tex</code> with the following content:</p> -<div class="sourceCode" id="cb167"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb167-1"><a href="#cb167-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\ConTeXt</span>.</span></code></pre></div> +<div class="sourceCode" id="cb193"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb193-1"><a href="#cb193-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\ConTeXt</span>.</span></code></pre></div> <p>Create also a text document named <code>part.md</code> with the following content:</p> -<div class="sourceCode" id="cb168"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb168-1"><a href="#cb168-1" aria-hidden="true" tabindex="-1"></a>This is a *transcluded markdown document*.</span></code></pre></div> +<div class="sourceCode" id="cb194"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb194-1"><a href="#cb194-1" aria-hidden="true" tabindex="-1"></a>This is a *transcluded markdown document*.</span></code></pre></div> <p>Create also a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb169"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb169-1"><a href="#cb169-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb169-2"><a href="#cb169-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[contentBlocks = yes]</span> -<span id="cb169-3"><a href="#cb169-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\definetyping</span> [ConTeXt]</span> -<span id="cb169-4"><a href="#cb169-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\setuptyping</span> [ConTeXt] [option=TEX]</span> -<span id="cb169-5"><a href="#cb169-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb169-6"><a href="#cb169-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb169-7"><a href="#cb169-7" aria-hidden="true" tabindex="-1"></a>/table.csv (An example table)</span> -<span id="cb169-8"><a href="#cb169-8" aria-hidden="true" tabindex="-1"></a>/code.tex (An example code listing)</span> -<span id="cb169-9"><a href="#cb169-9" aria-hidden="true" tabindex="-1"></a>/part.md (A file transclusion example)</span> -<span id="cb169-10"><a href="#cb169-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb169-11"><a href="#cb169-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb195"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb195-1"><a href="#cb195-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb195-2"><a href="#cb195-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[contentBlocks = yes]</span> +<span id="cb195-3"><a href="#cb195-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\definetyping</span> [ConTeXt]</span> +<span id="cb195-4"><a href="#cb195-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\setuptyping</span> [ConTeXt] [option=TEX]</span> +<span id="cb195-5"><a href="#cb195-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb195-6"><a href="#cb195-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb195-7"><a href="#cb195-7" aria-hidden="true" tabindex="-1"></a>/table.csv (An example table)</span> +<span id="cb195-8"><a href="#cb195-8" aria-hidden="true" tabindex="-1"></a>/code.tex (An example code listing)</span> +<span id="cb195-9"><a href="#cb195-9" aria-hidden="true" tabindex="-1"></a>/part.md (A file transclusion example)</span> +<span id="cb195-10"><a href="#cb195-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb195-11"><a href="#cb195-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb170"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb170-1"><a href="#cb170-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb196"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb196-1"><a href="#cb196-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -2644,12 +3175,124 @@ contain the following text:</p> </tbody> </table> <p>Table 1: An example table</p> -<div class="sourceCode" id="cb171"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb171-1"><a href="#cb171-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\ConTeXt</span>.</span></code></pre></div> +<div class="sourceCode" id="cb197"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb197-1"><a href="#cb197-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\ConTeXt</span>.</span></code></pre></div> <p>This is a <em>transcluded markdown document</em>.</p> </blockquote> -<h4 data-number="2.2.1.15" id="option-debugextensions"><span -class="header-section-number">2.2.1.15</span> Option +<h4 data-number="2.2.1.19" id="option-contentlevel"><span +class="header-section-number">2.2.1.19</span> Option +<code>contentLevel</code></h4> +<dl> +<dt><code>contentLevel</code> (default value: <code>block</code>)</dt> +<dd> +<dl> +<dt>block</dt> +<dd> +<p>Treat content as a sequence of blocks.</p> +<div class="sourceCode" id="cb198"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb198-1"><a href="#cb198-1" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>this is a list</span> +<span id="cb198-2"><a href="#cb198-2" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>it contains two items</span></code></pre></div> +</dd> +</dl> +</dd> +<dd> +<dl> +<dt>inline</dt> +<dd> +<p>Treat all content as inline content.</p> +<div class="sourceCode" id="cb199"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb199-1"><a href="#cb199-1" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>this is a text</span> +<span id="cb199-2"><a href="#cb199-2" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>not a list</span></code></pre></div> +</dd> +</dl> +</dd> +</dl> +<h5 class="unnumbered" id="plain-tex-example-8">Plain <span +class="tex">T<sub>e</sub>X</span> Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb200"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb200-1"><a href="#cb200-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb200-2"><a href="#cb200-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionContentLevel</span>{inline}</span> +<span id="cb200-3"><a href="#cb200-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb200-4"><a href="#cb200-4" aria-hidden="true" tabindex="-1"></a>- this is</span> +<span id="cb200-5"><a href="#cb200-5" aria-hidden="true" tabindex="-1"></a>- a text</span> +<span id="cb200-6"><a href="#cb200-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb200-7"><a href="#cb200-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb201"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb201-1"><a href="#cb201-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<p>- this is - a text</p> +</blockquote> +<h5 class="unnumbered" id="latex-example-14"><span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb202"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb202-1"><a href="#cb202-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb202-2"><a href="#cb202-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb202-3"><a href="#cb202-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb202-4"><a href="#cb202-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb202-5"><a href="#cb202-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb202-6"><a href="#cb202-6" aria-hidden="true" tabindex="-1"></a>- this is</span> +<span id="cb202-7"><a href="#cb202-7" aria-hidden="true" tabindex="-1"></a>- a list</span> +<span id="cb202-8"><a href="#cb202-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb202-9"><a href="#cb202-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb202-10"><a href="#cb202-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[contentLevel=inline]</span> +<span id="cb202-11"><a href="#cb202-11" aria-hidden="true" tabindex="-1"></a>- this is</span> +<span id="cb202-12"><a href="#cb202-12" aria-hidden="true" tabindex="-1"></a>- a text</span> +<span id="cb202-13"><a href="#cb202-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb202-14"><a href="#cb202-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb202-15"><a href="#cb202-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb203"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb203-1"><a href="#cb203-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<ul> +<li>this is</li> +<li>a list</li> +</ul> +<p>- this is - a text</p> +</blockquote> +<h5 class="unnumbered" id="context-example-10">Con<span +class="tex">T<sub>e</sub>X</span>t Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb204"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb204-1"><a href="#cb204-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb204-2"><a href="#cb204-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb204-3"><a href="#cb204-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb204-4"><a href="#cb204-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb204-5"><a href="#cb204-5" aria-hidden="true" tabindex="-1"></a>- this is</span> +<span id="cb204-6"><a href="#cb204-6" aria-hidden="true" tabindex="-1"></a>- a list</span> +<span id="cb204-7"><a href="#cb204-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb204-8"><a href="#cb204-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb204-9"><a href="#cb204-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[contentLevel = inline]</span> +<span id="cb204-10"><a href="#cb204-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb204-11"><a href="#cb204-11" aria-hidden="true" tabindex="-1"></a>- this is</span> +<span id="cb204-12"><a href="#cb204-12" aria-hidden="true" tabindex="-1"></a>- a text</span> +<span id="cb204-13"><a href="#cb204-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb204-14"><a href="#cb204-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb204-15"><a href="#cb204-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb205"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb205-1"><a href="#cb205-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<ul> +<li>this is</li> +<li>a list</li> +</ul> +<p>- this is - a text</p> +</blockquote> +<h4 data-number="2.2.1.20" id="option-debugextensions"><span +class="header-section-number">2.2.1.20</span> Option <code>debugExtensions</code></h4> <dl> <dt><code>debugExtensions</code> (default value: @@ -2680,49 +3323,49 @@ grammar of markdown.</p> </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-13"><span +<h5 class="unnumbered" id="latex-example-15"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>strike-through.lua</code> with the following content:</p> -<div class="sourceCode" id="cb172"><pre -class="sourceCode lua"><code class="sourceCode lua"><span id="cb172-1"><a href="#cb172-1" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> strike_through <span class="op">=</span> <span class="op">{</span></span> -<span id="cb172-2"><a href="#cb172-2" aria-hidden="true" tabindex="-1"></a> api_version <span class="op">=</span> <span class="dv">2</span><span class="op">,</span></span> -<span id="cb172-3"><a href="#cb172-3" aria-hidden="true" tabindex="-1"></a> grammar_version <span class="op">=</span> <span class="dv">2</span><span class="op">,</span></span> -<span id="cb172-4"><a href="#cb172-4" aria-hidden="true" tabindex="-1"></a> finalize_grammar <span class="op">=</span> <span class="kw">function</span><span class="op">(</span>reader<span class="op">)</span></span> -<span id="cb172-5"><a href="#cb172-5" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> nonspacechar <span class="op">=</span> lpeg<span class="op">.</span>P<span class="op">(</span><span class="dv">1</span><span class="op">)</span> <span class="op">-</span> lpeg<span class="op">.</span>S<span class="op">(</span><span class="st">"</span><span class="sc">\t</span><span class="st"> "</span><span class="op">)</span></span> -<span id="cb172-6"><a href="#cb172-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> doubleslashes <span class="op">=</span> lpeg<span class="op">.</span>P<span class="op">(</span><span class="st">"//"</span><span class="op">)</span></span> -<span id="cb172-7"><a href="#cb172-7" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="kw">function</span> between<span class="op">(</span>p<span class="op">,</span> starter<span class="op">,</span> ender<span class="op">)</span></span> -<span id="cb172-8"><a href="#cb172-8" aria-hidden="true" tabindex="-1"></a> ender <span class="op">=</span> lpeg<span class="op">.</span>B<span class="op">(</span>nonspacechar<span class="op">)</span> <span class="op">*</span> ender</span> -<span id="cb172-9"><a href="#cb172-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="op">(</span>starter <span class="op">*</span> <span class="op">#</span>nonspacechar</span> -<span id="cb172-10"><a href="#cb172-10" aria-hidden="true" tabindex="-1"></a> <span class="op">*</span> lpeg<span class="op">.</span>Ct<span class="op">(</span>p <span class="op">*</span> <span class="op">(</span>p <span class="op">-</span> ender<span class="op">)^</span><span class="dv">0</span><span class="op">)</span> <span class="op">*</span> ender<span class="op">)</span></span> -<span id="cb172-11"><a href="#cb172-11" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span> -<span id="cb172-12"><a href="#cb172-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb172-13"><a href="#cb172-13" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> read_strike_through <span class="op">=</span> between<span class="op">(</span></span> -<span id="cb172-14"><a href="#cb172-14" aria-hidden="true" tabindex="-1"></a> lpeg<span class="op">.</span>V<span class="op">(</span><span class="st">"Inline"</span><span class="op">),</span> doubleslashes<span class="op">,</span> doubleslashes</span> -<span id="cb172-15"><a href="#cb172-15" aria-hidden="true" tabindex="-1"></a> <span class="op">)</span> <span class="op">/</span> <span class="kw">function</span><span class="op">(</span>s<span class="op">)</span> <span class="cf">return</span> <span class="op">{</span><span class="st">"</span><span class="sc">\\</span><span class="st">st{"</span><span class="op">,</span> s<span class="op">,</span> <span class="st">"}"</span><span class="op">}</span> <span class="kw">end</span></span> -<span id="cb172-16"><a href="#cb172-16" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb172-17"><a href="#cb172-17" aria-hidden="true" tabindex="-1"></a> reader<span class="op">.</span>insert_pattern<span class="op">(</span><span class="st">"Inline after Emph"</span><span class="op">,</span> read_strike_through<span class="op">,</span></span> -<span id="cb172-18"><a href="#cb172-18" aria-hidden="true" tabindex="-1"></a> <span class="st">"StrikeThrough"</span><span class="op">)</span></span> -<span id="cb172-19"><a href="#cb172-19" aria-hidden="true" tabindex="-1"></a> reader<span class="op">.</span>add_special_character<span class="op">(</span><span class="st">"/"</span><span class="op">)</span></span> -<span id="cb172-20"><a href="#cb172-20" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span> -<span id="cb172-21"><a href="#cb172-21" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span> -<span id="cb172-22"><a href="#cb172-22" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb172-23"><a href="#cb172-23" aria-hidden="true" tabindex="-1"></a><span class="cf">return</span> strike_through</span></code></pre></div> +<div class="sourceCode" id="cb206"><pre +class="sourceCode lua"><code class="sourceCode lua"><span id="cb206-1"><a href="#cb206-1" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> <span class="va">strike_through</span> <span class="op">=</span> <span class="op">{</span></span> +<span id="cb206-2"><a href="#cb206-2" aria-hidden="true" tabindex="-1"></a> <span class="va">api_version</span> <span class="op">=</span> <span class="dv">2</span><span class="op">,</span></span> +<span id="cb206-3"><a href="#cb206-3" aria-hidden="true" tabindex="-1"></a> <span class="va">grammar_version</span> <span class="op">=</span> <span class="dv">4</span><span class="op">,</span></span> +<span id="cb206-4"><a href="#cb206-4" aria-hidden="true" tabindex="-1"></a> <span class="va">finalize_grammar</span> <span class="op">=</span> <span class="kw">function</span><span class="op">(</span><span class="va">reader</span><span class="op">)</span></span> +<span id="cb206-5"><a href="#cb206-5" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="va">nonspacechar</span> <span class="op">=</span> <span class="va">lpeg</span><span class="op">.</span>P<span class="op">(</span><span class="dv">1</span><span class="op">)</span> <span class="op">-</span> <span class="va">lpeg</span><span class="op">.</span>S<span class="op">(</span><span class="st">"</span><span class="sc">\t</span><span class="st"> "</span><span class="op">)</span></span> +<span id="cb206-6"><a href="#cb206-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="va">doubleslashes</span> <span class="op">=</span> <span class="va">lpeg</span><span class="op">.</span>P<span class="op">(</span><span class="st">"//"</span><span class="op">)</span></span> +<span id="cb206-7"><a href="#cb206-7" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="kw">function</span> between<span class="op">(</span><span class="va">p</span><span class="op">,</span> <span class="va">starter</span><span class="op">,</span> <span class="va">ender</span><span class="op">)</span></span> +<span id="cb206-8"><a href="#cb206-8" aria-hidden="true" tabindex="-1"></a> <span class="va">ender</span> <span class="op">=</span> <span class="va">lpeg</span><span class="op">.</span>B<span class="op">(</span><span class="va">nonspacechar</span><span class="op">)</span> <span class="op">*</span> <span class="va">ender</span></span> +<span id="cb206-9"><a href="#cb206-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="op">(</span><span class="va">starter</span> <span class="op">*</span> <span class="op">#</span><span class="va">nonspacechar</span></span> +<span id="cb206-10"><a href="#cb206-10" aria-hidden="true" tabindex="-1"></a> <span class="op">*</span> <span class="va">lpeg</span><span class="op">.</span>Ct<span class="op">(</span><span class="va">p</span> <span class="op">*</span> <span class="op">(</span><span class="va">p</span> <span class="op">-</span> <span class="va">ender</span><span class="op">)^</span><span class="dv">0</span><span class="op">)</span> <span class="op">*</span> <span class="va">ender</span><span class="op">)</span></span> +<span id="cb206-11"><a href="#cb206-11" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span> +<span id="cb206-12"><a href="#cb206-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb206-13"><a href="#cb206-13" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="va">read_strike_through</span> <span class="op">=</span> between<span class="op">(</span></span> +<span id="cb206-14"><a href="#cb206-14" aria-hidden="true" tabindex="-1"></a> <span class="va">lpeg</span><span class="op">.</span>V<span class="op">(</span><span class="st">"Inline"</span><span class="op">),</span> <span class="va">doubleslashes</span><span class="op">,</span> <span class="va">doubleslashes</span></span> +<span id="cb206-15"><a href="#cb206-15" aria-hidden="true" tabindex="-1"></a> <span class="op">)</span> <span class="op">/</span> <span class="kw">function</span><span class="op">(</span><span class="va">s</span><span class="op">)</span> <span class="cf">return</span> <span class="op">{</span><span class="st">"</span><span class="sc">\\</span><span class="st">st{"</span><span class="op">,</span> <span class="va">s</span><span class="op">,</span> <span class="st">"}"</span><span class="op">}</span> <span class="kw">end</span></span> +<span id="cb206-16"><a href="#cb206-16" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb206-17"><a href="#cb206-17" aria-hidden="true" tabindex="-1"></a> <span class="va">reader</span><span class="op">.</span>insert_pattern<span class="op">(</span><span class="st">"Inline after LinkAndEmph"</span><span class="op">,</span> <span class="va">read_strike_through</span><span class="op">,</span></span> +<span id="cb206-18"><a href="#cb206-18" aria-hidden="true" tabindex="-1"></a> <span class="st">"StrikeThrough"</span><span class="op">)</span></span> +<span id="cb206-19"><a href="#cb206-19" aria-hidden="true" tabindex="-1"></a> <span class="va">reader</span><span class="op">.</span>add_special_character<span class="op">(</span><span class="st">"/"</span><span class="op">)</span></span> +<span id="cb206-20"><a href="#cb206-20" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span> +<span id="cb206-21"><a href="#cb206-21" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span> +<span id="cb206-22"><a href="#cb206-22" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb206-23"><a href="#cb206-23" aria-hidden="true" tabindex="-1"></a><span class="cf">return</span> <span class="va">strike_through</span></span></code></pre></div> <p>Using a text editor, create also a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb173"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb173-1"><a href="#cb173-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb173-2"><a href="#cb173-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soul</span>}</span> -<span id="cb173-3"><a href="#cb173-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[extension = strike-through.lua,</span> -<span id="cb173-4"><a href="#cb173-4" aria-hidden="true" tabindex="-1"></a> debugExtensions]{<span class="ex">markdown</span>}</span> -<span id="cb173-5"><a href="#cb173-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb173-6"><a href="#cb173-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb173-7"><a href="#cb173-7" aria-hidden="true" tabindex="-1"></a>This is //a lunar roving vehicle// strike-through text.</span> -<span id="cb173-8"><a href="#cb173-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb173-9"><a href="#cb173-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb207"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb207-1"><a href="#cb207-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb207-2"><a href="#cb207-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soul</span>}</span> +<span id="cb207-3"><a href="#cb207-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[extension = strike-through.lua,</span> +<span id="cb207-4"><a href="#cb207-4" aria-hidden="true" tabindex="-1"></a> debugExtensions]{<span class="ex">markdown</span>}</span> +<span id="cb207-5"><a href="#cb207-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb207-6"><a href="#cb207-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb207-7"><a href="#cb207-7" aria-hidden="true" tabindex="-1"></a>This is //a lunar roving vehicle// strike-through text.</span> +<span id="cb207-8"><a href="#cb207-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb207-9"><a href="#cb207-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb174"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb174-1"><a href="#cb174-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb208"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb208-1"><a href="#cb208-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -2731,44 +3374,48 @@ contain the following text:</p> <p>Furthermore, a JSON document named <code>document.debug-extensions.json</code> should also be produced and contain the following text:</p> -<div class="sourceCode" id="cb175"><pre -class="sourceCode json"><code class="sourceCode json"><span id="cb175-1"><a href="#cb175-1" aria-hidden="true" tabindex="-1"></a><span class="fu">{</span></span> -<span id="cb175-2"><a href="#cb175-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">"Block"</span><span class="fu">:</span> <span class="ot">[</span></span> -<span id="cb175-3"><a href="#cb175-3" aria-hidden="true" tabindex="-1"></a> <span class="st">"Blockquote"</span><span class="ot">,</span></span> -<span id="cb175-4"><a href="#cb175-4" aria-hidden="true" tabindex="-1"></a> <span class="st">"Verbatim"</span><span class="ot">,</span></span> -<span id="cb175-5"><a href="#cb175-5" aria-hidden="true" tabindex="-1"></a> <span class="st">"ThematicBreak"</span><span class="ot">,</span></span> -<span id="cb175-6"><a href="#cb175-6" aria-hidden="true" tabindex="-1"></a> <span class="st">"BulletList"</span><span class="ot">,</span></span> -<span id="cb175-7"><a href="#cb175-7" aria-hidden="true" tabindex="-1"></a> <span class="st">"OrderedList"</span><span class="ot">,</span></span> -<span id="cb175-8"><a href="#cb175-8" aria-hidden="true" tabindex="-1"></a> <span class="st">"Heading"</span><span class="ot">,</span></span> -<span id="cb175-9"><a href="#cb175-9" aria-hidden="true" tabindex="-1"></a> <span class="st">"DisplayHtml"</span><span class="ot">,</span></span> -<span id="cb175-10"><a href="#cb175-10" aria-hidden="true" tabindex="-1"></a> <span class="st">"Paragraph"</span><span class="ot">,</span></span> -<span id="cb175-11"><a href="#cb175-11" aria-hidden="true" tabindex="-1"></a> <span class="st">"Plain"</span></span> -<span id="cb175-12"><a href="#cb175-12" aria-hidden="true" tabindex="-1"></a> <span class="ot">]</span><span class="fu">,</span></span> -<span id="cb175-13"><a href="#cb175-13" aria-hidden="true" tabindex="-1"></a> <span class="dt">"Inline"</span><span class="fu">:</span> <span class="ot">[</span></span> -<span id="cb175-14"><a href="#cb175-14" aria-hidden="true" tabindex="-1"></a> <span class="st">"Str"</span><span class="ot">,</span></span> -<span id="cb175-15"><a href="#cb175-15" aria-hidden="true" tabindex="-1"></a> <span class="st">"Space"</span><span class="ot">,</span></span> -<span id="cb175-16"><a href="#cb175-16" aria-hidden="true" tabindex="-1"></a> <span class="st">"Endline"</span><span class="ot">,</span></span> -<span id="cb175-17"><a href="#cb175-17" aria-hidden="true" tabindex="-1"></a> <span class="st">"UlOrStarLine"</span><span class="ot">,</span></span> -<span id="cb175-18"><a href="#cb175-18" aria-hidden="true" tabindex="-1"></a> <span class="st">"Strong"</span><span class="ot">,</span></span> -<span id="cb175-19"><a href="#cb175-19" aria-hidden="true" tabindex="-1"></a> <span class="st">"Emph"</span><span class="ot">,</span></span> -<span id="cb175-20"><a href="#cb175-20" aria-hidden="true" tabindex="-1"></a> <span class="st">"StrikeThrough (user-defined </span><span class="ch">\"</span><span class="st">./strike-through.lua</span><span class="ch">\"</span><span class="st"> syntax extension)"</span><span class="ot">,</span></span> -<span id="cb175-21"><a href="#cb175-21" aria-hidden="true" tabindex="-1"></a> <span class="st">"Link"</span><span class="ot">,</span></span> -<span id="cb175-22"><a href="#cb175-22" aria-hidden="true" tabindex="-1"></a> <span class="st">"Image"</span><span class="ot">,</span></span> -<span id="cb175-23"><a href="#cb175-23" aria-hidden="true" tabindex="-1"></a> <span class="st">"Code"</span><span class="ot">,</span></span> -<span id="cb175-24"><a href="#cb175-24" aria-hidden="true" tabindex="-1"></a> <span class="st">"AutoLinkUrl"</span><span class="ot">,</span></span> -<span id="cb175-25"><a href="#cb175-25" aria-hidden="true" tabindex="-1"></a> <span class="st">"AutoLinkEmail"</span><span class="ot">,</span></span> -<span id="cb175-26"><a href="#cb175-26" aria-hidden="true" tabindex="-1"></a> <span class="st">"AutoLinkRelativeReference"</span><span class="ot">,</span></span> -<span id="cb175-27"><a href="#cb175-27" aria-hidden="true" tabindex="-1"></a> <span class="st">"InlineHtml"</span><span class="ot">,</span></span> -<span id="cb175-28"><a href="#cb175-28" aria-hidden="true" tabindex="-1"></a> <span class="st">"HtmlEntity"</span><span class="ot">,</span></span> -<span id="cb175-29"><a href="#cb175-29" aria-hidden="true" tabindex="-1"></a> <span class="st">"EscapedChar"</span><span class="ot">,</span></span> -<span id="cb175-30"><a href="#cb175-30" aria-hidden="true" tabindex="-1"></a> <span class="st">"Smart"</span><span class="ot">,</span></span> -<span id="cb175-31"><a href="#cb175-31" aria-hidden="true" tabindex="-1"></a> <span class="st">"Symbol"</span></span> -<span id="cb175-32"><a href="#cb175-32" aria-hidden="true" tabindex="-1"></a> <span class="ot">]</span></span> -<span id="cb175-33"><a href="#cb175-33" aria-hidden="true" tabindex="-1"></a><span class="fu">}</span></span></code></pre></div> +<div class="sourceCode" id="cb209"><pre +class="sourceCode json"><code class="sourceCode json"><span id="cb209-1"><a href="#cb209-1" aria-hidden="true" tabindex="-1"></a><span class="fu">{</span></span> +<span id="cb209-2"><a href="#cb209-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">"Block"</span><span class="fu">:</span> <span class="ot">[</span></span> +<span id="cb209-3"><a href="#cb209-3" aria-hidden="true" tabindex="-1"></a> <span class="st">"Blockquote"</span><span class="ot">,</span></span> +<span id="cb209-4"><a href="#cb209-4" aria-hidden="true" tabindex="-1"></a> <span class="st">"Verbatim"</span><span class="ot">,</span></span> +<span id="cb209-5"><a href="#cb209-5" aria-hidden="true" tabindex="-1"></a> <span class="st">"FencedCode (built-in fenced_code syntax extension)"</span><span class="ot">,</span></span> +<span id="cb209-6"><a href="#cb209-6" aria-hidden="true" tabindex="-1"></a> <span class="st">"ThematicBreak"</span><span class="ot">,</span></span> +<span id="cb209-7"><a href="#cb209-7" aria-hidden="true" tabindex="-1"></a> <span class="st">"BulletList"</span><span class="ot">,</span></span> +<span id="cb209-8"><a href="#cb209-8" aria-hidden="true" tabindex="-1"></a> <span class="st">"OrderedList"</span><span class="ot">,</span></span> +<span id="cb209-9"><a href="#cb209-9" aria-hidden="true" tabindex="-1"></a> <span class="st">"DisplayHtml"</span><span class="ot">,</span></span> +<span id="cb209-10"><a href="#cb209-10" aria-hidden="true" tabindex="-1"></a> <span class="st">"Heading"</span></span> +<span id="cb209-11"><a href="#cb209-11" aria-hidden="true" tabindex="-1"></a> <span class="ot">]</span><span class="fu">,</span></span> +<span id="cb209-12"><a href="#cb209-12" aria-hidden="true" tabindex="-1"></a> <span class="dt">"BlockOrParagraph"</span><span class="fu">:</span> <span class="ot">[</span></span> +<span id="cb209-13"><a href="#cb209-13" aria-hidden="true" tabindex="-1"></a> <span class="st">"Block"</span><span class="ot">,</span></span> +<span id="cb209-14"><a href="#cb209-14" aria-hidden="true" tabindex="-1"></a> <span class="st">"Paragraph"</span><span class="ot">,</span></span> +<span id="cb209-15"><a href="#cb209-15" aria-hidden="true" tabindex="-1"></a> <span class="st">"Plain"</span></span> +<span id="cb209-16"><a href="#cb209-16" aria-hidden="true" tabindex="-1"></a> <span class="ot">]</span><span class="fu">,</span></span> +<span id="cb209-17"><a href="#cb209-17" aria-hidden="true" tabindex="-1"></a> <span class="dt">"EndlineExceptions"</span><span class="fu">:</span> <span class="ot">[</span></span> +<span id="cb209-18"><a href="#cb209-18" aria-hidden="true" tabindex="-1"></a> <span class="st">"EndlineExceptions (built-in fenced_code syntax extension)"</span></span> +<span id="cb209-19"><a href="#cb209-19" aria-hidden="true" tabindex="-1"></a> <span class="ot">]</span><span class="fu">,</span></span> +<span id="cb209-20"><a href="#cb209-20" aria-hidden="true" tabindex="-1"></a> <span class="dt">"Inline"</span><span class="fu">:</span> <span class="ot">[</span></span> +<span id="cb209-21"><a href="#cb209-21" aria-hidden="true" tabindex="-1"></a> <span class="st">"Str"</span><span class="ot">,</span></span> +<span id="cb209-22"><a href="#cb209-22" aria-hidden="true" tabindex="-1"></a> <span class="st">"Space"</span><span class="ot">,</span></span> +<span id="cb209-23"><a href="#cb209-23" aria-hidden="true" tabindex="-1"></a> <span class="st">"Endline"</span><span class="ot">,</span></span> +<span id="cb209-24"><a href="#cb209-24" aria-hidden="true" tabindex="-1"></a> <span class="st">"EndlineBreak"</span><span class="ot">,</span></span> +<span id="cb209-25"><a href="#cb209-25" aria-hidden="true" tabindex="-1"></a> <span class="st">"LinkAndEmph"</span><span class="ot">,</span></span> +<span id="cb209-26"><a href="#cb209-26" aria-hidden="true" tabindex="-1"></a> <span class="st">"StrikeThrough (user-defined </span><span class="ch">\"</span><span class="st">./strike-through.lua</span><span class="ch">\"</span><span class="st"> syntax extension)"</span><span class="ot">,</span></span> +<span id="cb209-27"><a href="#cb209-27" aria-hidden="true" tabindex="-1"></a> <span class="st">"Code"</span><span class="ot">,</span></span> +<span id="cb209-28"><a href="#cb209-28" aria-hidden="true" tabindex="-1"></a> <span class="st">"AutoLinkUrl"</span><span class="ot">,</span></span> +<span id="cb209-29"><a href="#cb209-29" aria-hidden="true" tabindex="-1"></a> <span class="st">"AutoLinkEmail"</span><span class="ot">,</span></span> +<span id="cb209-30"><a href="#cb209-30" aria-hidden="true" tabindex="-1"></a> <span class="st">"AutoLinkRelativeReference"</span><span class="ot">,</span></span> +<span id="cb209-31"><a href="#cb209-31" aria-hidden="true" tabindex="-1"></a> <span class="st">"InlineHtml"</span><span class="ot">,</span></span> +<span id="cb209-32"><a href="#cb209-32" aria-hidden="true" tabindex="-1"></a> <span class="st">"HtmlEntity"</span><span class="ot">,</span></span> +<span id="cb209-33"><a href="#cb209-33" aria-hidden="true" tabindex="-1"></a> <span class="st">"EscapedChar"</span><span class="ot">,</span></span> +<span id="cb209-34"><a href="#cb209-34" aria-hidden="true" tabindex="-1"></a> <span class="st">"Smart"</span><span class="ot">,</span></span> +<span id="cb209-35"><a href="#cb209-35" aria-hidden="true" tabindex="-1"></a> <span class="st">"Symbol"</span></span> +<span id="cb209-36"><a href="#cb209-36" aria-hidden="true" tabindex="-1"></a> <span class="ot">]</span></span> +<span id="cb209-37"><a href="#cb209-37" aria-hidden="true" tabindex="-1"></a><span class="fu">}</span></span></code></pre></div> <p>This output shows us that our user-defined syntax extension has been correctly inserted to the grammar of markdown.</p> -<h4 data-number="2.2.1.16" id="option-definitionlists"><span -class="header-section-number">2.2.1.16</span> Option +<h4 data-number="2.2.1.21" id="option-definitionlists"><span +class="header-section-number">2.2.1.21</span> Option <code>definitionLists</code></h4> <dl> <dt><code>definitionLists</code> (default value: @@ -2778,18 +3425,18 @@ class="header-section-number">2.2.1.16</span> Option <dt>true</dt> <dd> <p>Enable the pandoc definition list syntax extension:</p> -<div class="sourceCode" id="cb176"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb176-1"><a href="#cb176-1" aria-hidden="true" tabindex="-1"></a>Term 1</span> -<span id="cb176-2"><a href="#cb176-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb176-3"><a href="#cb176-3" aria-hidden="true" tabindex="-1"></a>: Definition 1</span> -<span id="cb176-4"><a href="#cb176-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb176-5"><a href="#cb176-5" aria-hidden="true" tabindex="-1"></a>Term 2 with *inline markup*</span> -<span id="cb176-6"><a href="#cb176-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb176-7"><a href="#cb176-7" aria-hidden="true" tabindex="-1"></a>: Definition 2</span> -<span id="cb176-8"><a href="#cb176-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb176-9"><a href="#cb176-9" aria-hidden="true" tabindex="-1"></a><span class="in"> { some code, part of Definition 2 }</span></span> -<span id="cb176-10"><a href="#cb176-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb176-11"><a href="#cb176-11" aria-hidden="true" tabindex="-1"></a><span class="in"> Third paragraph of definition 2.</span></span></code></pre></div> +<div class="sourceCode" id="cb210"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb210-1"><a href="#cb210-1" aria-hidden="true" tabindex="-1"></a>Term 1</span> +<span id="cb210-2"><a href="#cb210-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb210-3"><a href="#cb210-3" aria-hidden="true" tabindex="-1"></a>: Definition 1</span> +<span id="cb210-4"><a href="#cb210-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb210-5"><a href="#cb210-5" aria-hidden="true" tabindex="-1"></a>Term 2 with *inline markup*</span> +<span id="cb210-6"><a href="#cb210-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb210-7"><a href="#cb210-7" aria-hidden="true" tabindex="-1"></a>: Definition 2</span> +<span id="cb210-8"><a href="#cb210-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb210-9"><a href="#cb210-9" aria-hidden="true" tabindex="-1"></a><span class="in"> { some code, part of Definition 2 }</span></span> +<span id="cb210-10"><a href="#cb210-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb210-11"><a href="#cb210-11" aria-hidden="true" tabindex="-1"></a><span class="in"> Third paragraph of definition 2.</span></span></code></pre></div> </dd> </dl> </dd> @@ -2802,31 +3449,31 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb176-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-14"><span +<h5 class="unnumbered" id="latex-example-16"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb177"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb177-1"><a href="#cb177-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb177-2"><a href="#cb177-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[definitionLists]{<span class="ex">markdown</span>}</span> -<span id="cb177-3"><a href="#cb177-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb177-4"><a href="#cb177-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb177-5"><a href="#cb177-5" aria-hidden="true" tabindex="-1"></a>Term 1</span> -<span id="cb177-6"><a href="#cb177-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb177-7"><a href="#cb177-7" aria-hidden="true" tabindex="-1"></a>: Definition 1</span> -<span id="cb177-8"><a href="#cb177-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb177-9"><a href="#cb177-9" aria-hidden="true" tabindex="-1"></a>Term 2 with *inline markup*</span> -<span id="cb177-10"><a href="#cb177-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb177-11"><a href="#cb177-11" aria-hidden="true" tabindex="-1"></a>: Definition 2</span> -<span id="cb177-12"><a href="#cb177-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb177-13"><a href="#cb177-13" aria-hidden="true" tabindex="-1"></a> { some code, part of Definition 2 }</span> -<span id="cb177-14"><a href="#cb177-14" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb177-15"><a href="#cb177-15" aria-hidden="true" tabindex="-1"></a> Third paragraph of definition 2.</span> -<span id="cb177-16"><a href="#cb177-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb177-17"><a href="#cb177-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb211"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb211-1"><a href="#cb211-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb211-2"><a href="#cb211-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[definitionLists]{<span class="ex">markdown</span>}</span> +<span id="cb211-3"><a href="#cb211-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb211-4"><a href="#cb211-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb211-5"><a href="#cb211-5" aria-hidden="true" tabindex="-1"></a>Term 1</span> +<span id="cb211-6"><a href="#cb211-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb211-7"><a href="#cb211-7" aria-hidden="true" tabindex="-1"></a>: Definition 1</span> +<span id="cb211-8"><a href="#cb211-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb211-9"><a href="#cb211-9" aria-hidden="true" tabindex="-1"></a>Term 2 with *inline markup*</span> +<span id="cb211-10"><a href="#cb211-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb211-11"><a href="#cb211-11" aria-hidden="true" tabindex="-1"></a>: Definition 2</span> +<span id="cb211-12"><a href="#cb211-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb211-13"><a href="#cb211-13" aria-hidden="true" tabindex="-1"></a> { some code, part of Definition 2 }</span> +<span id="cb211-14"><a href="#cb211-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb211-15"><a href="#cb211-15" aria-hidden="true" tabindex="-1"></a> Third paragraph of definition 2.</span> +<span id="cb211-16"><a href="#cb211-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb211-17"><a href="#cb211-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb178"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb178-1"><a href="#cb178-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb212"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb212-1"><a href="#cb212-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -2843,31 +3490,31 @@ contain the following text:</p> </dd> </dl> </blockquote> -<h5 class="unnumbered" id="context-example-9">Con<span +<h5 class="unnumbered" id="context-example-11">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb180"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb180-1"><a href="#cb180-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb180-2"><a href="#cb180-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[definitionLists = yes]</span> -<span id="cb180-3"><a href="#cb180-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb180-4"><a href="#cb180-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb180-5"><a href="#cb180-5" aria-hidden="true" tabindex="-1"></a>Term 1</span> -<span id="cb180-6"><a href="#cb180-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb180-7"><a href="#cb180-7" aria-hidden="true" tabindex="-1"></a>: Definition 1</span> -<span id="cb180-8"><a href="#cb180-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb180-9"><a href="#cb180-9" aria-hidden="true" tabindex="-1"></a>Term 2 with *inline markup*</span> -<span id="cb180-10"><a href="#cb180-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb180-11"><a href="#cb180-11" aria-hidden="true" tabindex="-1"></a>: Definition 2</span> -<span id="cb180-12"><a href="#cb180-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb180-13"><a href="#cb180-13" aria-hidden="true" tabindex="-1"></a> { some code, part of Definition 2 }</span> -<span id="cb180-14"><a href="#cb180-14" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb180-15"><a href="#cb180-15" aria-hidden="true" tabindex="-1"></a> Third paragraph of definition 2.</span> -<span id="cb180-16"><a href="#cb180-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb180-17"><a href="#cb180-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb214"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb214-1"><a href="#cb214-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb214-2"><a href="#cb214-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[definitionLists = yes]</span> +<span id="cb214-3"><a href="#cb214-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb214-4"><a href="#cb214-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb214-5"><a href="#cb214-5" aria-hidden="true" tabindex="-1"></a>Term 1</span> +<span id="cb214-6"><a href="#cb214-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb214-7"><a href="#cb214-7" aria-hidden="true" tabindex="-1"></a>: Definition 1</span> +<span id="cb214-8"><a href="#cb214-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb214-9"><a href="#cb214-9" aria-hidden="true" tabindex="-1"></a>Term 2 with *inline markup*</span> +<span id="cb214-10"><a href="#cb214-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb214-11"><a href="#cb214-11" aria-hidden="true" tabindex="-1"></a>: Definition 2</span> +<span id="cb214-12"><a href="#cb214-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb214-13"><a href="#cb214-13" aria-hidden="true" tabindex="-1"></a> { some code, part of Definition 2 }</span> +<span id="cb214-14"><a href="#cb214-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb214-15"><a href="#cb214-15" aria-hidden="true" tabindex="-1"></a> Third paragraph of definition 2.</span> +<span id="cb214-16"><a href="#cb214-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb214-17"><a href="#cb214-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb181"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb181-1"><a href="#cb181-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb215"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb215-1"><a href="#cb215-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -2884,81 +3531,8 @@ contain the following text:</p> </dd> </dl> </blockquote> -<h4 data-number="2.2.1.17" id="option-eagercache"><span -class="header-section-number">2.2.1.17</span> Option -<code>eagerCache</code></h4> -<dl> -<dt><code>eagerCache</code> (default value: <code>true</code>)</dt> -<dd> -<dl> -<dt>true</dt> -<dd> -<p>Converted markdown documents will be cached in -<strong><code>cacheDir</code></strong>. This can be useful for -post-processing the converted documents and for recovering historical -versions of the documents from the cache. However, it also produces a -large number of auxiliary files on the disk and obscures the output of -the Lua command-line interface when it is used for plumbing.</p> -<p>This behavior will always be used if the -<strong><code>finalizeCache</code></strong> option is enabled.</p> -</dd> -</dl> -</dd> -<dd> -<dl> -<dt>false</dt> -<dd> -<p>Converted markdown documents will not be cached. This decreases the -number of auxiliary files that we produce and makes it easier to use the -Lua command-line interface for plumbing.</p> -<p>This behavior will only be used when the -<strong><code>finalizeCache</code></strong> option is disabled. -Recursive nesting of markdown document fragments is undefined behavior -when <strong><code>eagerCache</code></strong> is disabled.</p> -</dd> -</dl> -</dd> -</dl> -<h5 class="unnumbered" id="lua-module-example-7">Lua Module Example</h5> -<p>Using a text editor, create a text document named -<code>hello.md</code> with the following content:</p> -<div class="sourceCode" id="cb183"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb183-1"><a href="#cb183-1" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span></code></pre></div> -<p>Next, invoke LuaTeX from the terminal with the -<strong><code>eagerCache</code></strong> option disabled:</p> -<div class="sourceCode" id="cb184"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb184-1"><a href="#cb184-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ eagerCache=false <span class="at">--</span> hello.md hello.tex</span></code></pre></div> -<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua -CLI script file, such as -<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems -or <code>C:\Users\</code>⟨<em>Your -username</em>⟩<code>\texmf\scripts\markdown\markdown-cli.lua</code> on -Windows systems. Use the command -<code>kpsewhich -a markdown-cli.lua</code> to locate the Lua CLI script -file using <a href="https://tug.org/kpathsea/" -title="Kpathsea - TeX Users Group">Kpathsea</a>.</p> -<p>A <span class="tex">T<sub>e</sub>X</span> document named -<code>hello.tex</code> should be produced and contain the following -code:</p> -<div class="sourceCode" id="cb185"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb185-1"><a href="#cb185-1" aria-hidden="true" tabindex="-1"></a>Hello <span class="fu">\markdownRendererEmphasis</span>{world}!<span class="fu">\relax</span></span></code></pre></div> -<hr /> -<p>Invoke LuaTeX from the terminal again, this time with the -<strong><code>eagerCache</code></strong> option enabled:</p> -<div class="sourceCode" id="cb186"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb186-1"><a href="#cb186-1" aria-hidden="true" tabindex="-1"></a>texlua ⟨CLI pathname⟩ eagerCache=true -- hello.md hello.tex</span></code></pre></div> -<p>A <span class="tex">T<sub>e</sub>X</span> document named -<code>hello.tex</code> should be produced and contain the following -code:</p> -<div class="sourceCode" id="cb187"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb187-1"><a href="#cb187-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> ./⟨hash⟩.md.tex<span class="fu">\relax</span></span></code></pre></div> -<p>Additionally, a <span class="tex">T<sub>e</sub>X</span> document -named <code>⟨hash⟩.md.tex</code> should be produced and contain the -following code:</p> -<div class="sourceCode" id="cb188"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb188-1"><a href="#cb188-1" aria-hidden="true" tabindex="-1"></a>Hello <span class="fu">\markdownRendererEmphasis</span>{world}!<span class="fu">\relax</span></span></code></pre></div> -<h4 data-number="2.2.1.18" id="option-expectjekylldata"><span -class="header-section-number">2.2.1.18</span> Option +<h4 data-number="2.2.1.22" id="option-expectjekylldata"><span +class="header-section-number">2.2.1.22</span> Option <code>expectJekyllData</code></h4> <dl> <dt><code>expectJekyllData</code> (default value: @@ -2972,26 +3546,26 @@ then a markdown document may begin with <abbr>yaml</abbr> metadata if and only if the metadata begin with the end-of-directives marker (<code>---</code>) and they end with either the end-of-directives or the end-of-document marker (<code>...</code>):</p> -<div class="sourceCode" id="cb189"><pre -class="sourceCode latex"><code class="sourceCode latex"><span id="cb189-1"><a href="#cb189-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb189-2"><a href="#cb189-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span> -<span id="cb189-3"><a href="#cb189-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb189-4"><a href="#cb189-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb189-5"><a href="#cb189-5" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb189-6"><a href="#cb189-6" aria-hidden="true" tabindex="-1"></a>- this</span> -<span id="cb189-7"><a href="#cb189-7" aria-hidden="true" tabindex="-1"></a>- is</span> -<span id="cb189-8"><a href="#cb189-8" aria-hidden="true" tabindex="-1"></a>- YAML</span> -<span id="cb189-9"><a href="#cb189-9" aria-hidden="true" tabindex="-1"></a>...</span> -<span id="cb189-10"><a href="#cb189-10" aria-hidden="true" tabindex="-1"></a>- followed</span> -<span id="cb189-11"><a href="#cb189-11" aria-hidden="true" tabindex="-1"></a>- by</span> -<span id="cb189-12"><a href="#cb189-12" aria-hidden="true" tabindex="-1"></a>- Markdown</span> -<span id="cb189-13"><a href="#cb189-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb189-14"><a href="#cb189-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb189-15"><a href="#cb189-15" aria-hidden="true" tabindex="-1"></a>- this</span> -<span id="cb189-16"><a href="#cb189-16" aria-hidden="true" tabindex="-1"></a>- is</span> -<span id="cb189-17"><a href="#cb189-17" aria-hidden="true" tabindex="-1"></a>- Markdown</span> -<span id="cb189-18"><a href="#cb189-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb189-19"><a href="#cb189-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb217"><pre +class="sourceCode latex"><code class="sourceCode latex"><span id="cb217-1"><a href="#cb217-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb217-2"><a href="#cb217-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span> +<span id="cb217-3"><a href="#cb217-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb217-4"><a href="#cb217-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb217-5"><a href="#cb217-5" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb217-6"><a href="#cb217-6" aria-hidden="true" tabindex="-1"></a>- this</span> +<span id="cb217-7"><a href="#cb217-7" aria-hidden="true" tabindex="-1"></a>- is</span> +<span id="cb217-8"><a href="#cb217-8" aria-hidden="true" tabindex="-1"></a>- YAML</span> +<span id="cb217-9"><a href="#cb217-9" aria-hidden="true" tabindex="-1"></a>...</span> +<span id="cb217-10"><a href="#cb217-10" aria-hidden="true" tabindex="-1"></a>- followed</span> +<span id="cb217-11"><a href="#cb217-11" aria-hidden="true" tabindex="-1"></a>- by</span> +<span id="cb217-12"><a href="#cb217-12" aria-hidden="true" tabindex="-1"></a>- Markdown</span> +<span id="cb217-13"><a href="#cb217-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb217-14"><a href="#cb217-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb217-15"><a href="#cb217-15" aria-hidden="true" tabindex="-1"></a>- this</span> +<span id="cb217-16"><a href="#cb217-16" aria-hidden="true" tabindex="-1"></a>- is</span> +<span id="cb217-17"><a href="#cb217-17" aria-hidden="true" tabindex="-1"></a>- Markdown</span> +<span id="cb217-18"><a href="#cb217-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb217-19"><a href="#cb217-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> </dd> </dl> </dd> @@ -3002,63 +3576,63 @@ class="sourceCode latex"><code class="sourceCode latex"><span id="cb189-1"><a hr <p>When the <strong><code>jekyllData</code></strong> option is enabled, then a markdown document may begin directly with <abbr>yaml</abbr> metadata and may contain nothing but <abbr>yaml</abbr> metadata.</p> -<div class="sourceCode" id="cb190"><pre -class="sourceCode latex"><code class="sourceCode latex"><span id="cb190-1"><a href="#cb190-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb190-2"><a href="#cb190-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData, expectJekyllData]{<span class="ex">markdown</span>}</span> -<span id="cb190-3"><a href="#cb190-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb190-4"><a href="#cb190-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb190-5"><a href="#cb190-5" aria-hidden="true" tabindex="-1"></a>- this</span> -<span id="cb190-6"><a href="#cb190-6" aria-hidden="true" tabindex="-1"></a>- is</span> -<span id="cb190-7"><a href="#cb190-7" aria-hidden="true" tabindex="-1"></a>- YAML</span> -<span id="cb190-8"><a href="#cb190-8" aria-hidden="true" tabindex="-1"></a>...</span> -<span id="cb190-9"><a href="#cb190-9" aria-hidden="true" tabindex="-1"></a>- followed</span> -<span id="cb190-10"><a href="#cb190-10" aria-hidden="true" tabindex="-1"></a>- by</span> -<span id="cb190-11"><a href="#cb190-11" aria-hidden="true" tabindex="-1"></a>- Markdown</span> -<span id="cb190-12"><a href="#cb190-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb190-13"><a href="#cb190-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb190-14"><a href="#cb190-14" aria-hidden="true" tabindex="-1"></a>- this</span> -<span id="cb190-15"><a href="#cb190-15" aria-hidden="true" tabindex="-1"></a>- is</span> -<span id="cb190-16"><a href="#cb190-16" aria-hidden="true" tabindex="-1"></a>- YAML</span> -<span id="cb190-17"><a href="#cb190-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb190-18"><a href="#cb190-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb218"><pre +class="sourceCode latex"><code class="sourceCode latex"><span id="cb218-1"><a href="#cb218-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb218-2"><a href="#cb218-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData, expectJekyllData]{<span class="ex">markdown</span>}</span> +<span id="cb218-3"><a href="#cb218-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb218-4"><a href="#cb218-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb218-5"><a href="#cb218-5" aria-hidden="true" tabindex="-1"></a>- this</span> +<span id="cb218-6"><a href="#cb218-6" aria-hidden="true" tabindex="-1"></a>- is</span> +<span id="cb218-7"><a href="#cb218-7" aria-hidden="true" tabindex="-1"></a>- YAML</span> +<span id="cb218-8"><a href="#cb218-8" aria-hidden="true" tabindex="-1"></a>...</span> +<span id="cb218-9"><a href="#cb218-9" aria-hidden="true" tabindex="-1"></a>- followed</span> +<span id="cb218-10"><a href="#cb218-10" aria-hidden="true" tabindex="-1"></a>- by</span> +<span id="cb218-11"><a href="#cb218-11" aria-hidden="true" tabindex="-1"></a>- Markdown</span> +<span id="cb218-12"><a href="#cb218-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb218-13"><a href="#cb218-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb218-14"><a href="#cb218-14" aria-hidden="true" tabindex="-1"></a>- this</span> +<span id="cb218-15"><a href="#cb218-15" aria-hidden="true" tabindex="-1"></a>- is</span> +<span id="cb218-16"><a href="#cb218-16" aria-hidden="true" tabindex="-1"></a>- YAML</span> +<span id="cb218-17"><a href="#cb218-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb218-18"><a href="#cb218-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> </dd> </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-15"><span +<h5 class="unnumbered" id="latex-example-17"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>jane-doe.yml</code> with the following content:</p> -<div class="sourceCode" id="cb191"><pre -class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb191-1"><a href="#cb191-1" aria-hidden="true" tabindex="-1"></a><span class="fu">name</span><span class="kw">:</span><span class="at"> Jane Doe</span></span> -<span id="cb191-2"><a href="#cb191-2" aria-hidden="true" tabindex="-1"></a><span class="fu">age</span><span class="kw">:</span><span class="at"> </span><span class="dv">99</span></span></code></pre></div> +<div class="sourceCode" id="cb219"><pre +class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb219-1"><a href="#cb219-1" aria-hidden="true" tabindex="-1"></a><span class="fu">name</span><span class="kw">:</span><span class="at"> Jane Doe</span></span> +<span id="cb219-2"><a href="#cb219-2" aria-hidden="true" tabindex="-1"></a><span class="fu">age</span><span class="kw">:</span><span class="at"> </span><span class="dv">99</span></span></code></pre></div> <p>Using a text editor, create also a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb192"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb192-1"><a href="#cb192-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb192-2"><a href="#cb192-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span> -<span id="cb192-3"><a href="#cb192-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb192-4"><a href="#cb192-4" aria-hidden="true" tabindex="-1"></a> jekyllDataRenderers = {</span> -<span id="cb192-5"><a href="#cb192-5" aria-hidden="true" tabindex="-1"></a> name = {<span class="fu">\gdef\name</span>{#1}},</span> -<span id="cb192-6"><a href="#cb192-6" aria-hidden="true" tabindex="-1"></a> code = {<span class="fu">\gdef\age</span>{#1}},</span> -<span id="cb192-7"><a href="#cb192-7" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb192-8"><a href="#cb192-8" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb192-9"><a href="#cb192-9" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span> -<span id="cb192-10"><a href="#cb192-10" aria-hidden="true" tabindex="-1"></a> }</span> -<span id="cb192-11"><a href="#cb192-11" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb192-12"><a href="#cb192-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb192-13"><a href="#cb192-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[expectJekyllData]{jane-doe.yml}</span> -<span id="cb192-14"><a href="#cb192-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb220"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb220-1"><a href="#cb220-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb220-2"><a href="#cb220-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span> +<span id="cb220-3"><a href="#cb220-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb220-4"><a href="#cb220-4" aria-hidden="true" tabindex="-1"></a> jekyllDataRenderers = {</span> +<span id="cb220-5"><a href="#cb220-5" aria-hidden="true" tabindex="-1"></a> name = {<span class="fu">\gdef\name</span>{#1}},</span> +<span id="cb220-6"><a href="#cb220-6" aria-hidden="true" tabindex="-1"></a> code = {<span class="fu">\gdef\age</span>{#1}},</span> +<span id="cb220-7"><a href="#cb220-7" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb220-8"><a href="#cb220-8" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb220-9"><a href="#cb220-9" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span> +<span id="cb220-10"><a href="#cb220-10" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb220-11"><a href="#cb220-11" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb220-12"><a href="#cb220-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb220-13"><a href="#cb220-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[expectJekyllData]{jane-doe.yml}</span> +<span id="cb220-14"><a href="#cb220-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb193"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb193-1"><a href="#cb193-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb221"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb221-1"><a href="#cb221-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>Jane Doe is 99 years old.</p> </blockquote> -<h4 data-number="2.2.1.19" id="option-extensions"><span -class="header-section-number">2.2.1.19</span> Option +<h4 data-number="2.2.1.23" id="option-extensions"><span +class="header-section-number">2.2.1.23</span> Option <code>extensions</code></h4> <dl> <dt><code>extensions</code> (default value: <code>{}</code>)</dt> @@ -3070,55 +3644,55 @@ working directory but also in the <span class="tex">T<sub>e</sub>X</span> directory structure.</p> </dd> </dl> -<h5 class="unnumbered" id="latex-example-16"><span +<h5 class="unnumbered" id="latex-example-18"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>strike-through.lua</code> with the following content:</p> -<div class="sourceCode" id="cb194"><pre -class="sourceCode lua"><code class="sourceCode lua"><span id="cb194-1"><a href="#cb194-1" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> strike_through <span class="op">=</span> <span class="op">{</span></span> -<span id="cb194-2"><a href="#cb194-2" aria-hidden="true" tabindex="-1"></a> api_version <span class="op">=</span> <span class="dv">2</span><span class="op">,</span></span> -<span id="cb194-3"><a href="#cb194-3" aria-hidden="true" tabindex="-1"></a> grammar_version <span class="op">=</span> <span class="dv">2</span><span class="op">,</span></span> -<span id="cb194-4"><a href="#cb194-4" aria-hidden="true" tabindex="-1"></a> finalize_grammar <span class="op">=</span> <span class="kw">function</span><span class="op">(</span>reader<span class="op">)</span></span> -<span id="cb194-5"><a href="#cb194-5" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> nonspacechar <span class="op">=</span> lpeg<span class="op">.</span>P<span class="op">(</span><span class="dv">1</span><span class="op">)</span> <span class="op">-</span> lpeg<span class="op">.</span>S<span class="op">(</span><span class="st">"</span><span class="sc">\t</span><span class="st"> "</span><span class="op">)</span></span> -<span id="cb194-6"><a href="#cb194-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> doubleslashes <span class="op">=</span> lpeg<span class="op">.</span>P<span class="op">(</span><span class="st">"//"</span><span class="op">)</span></span> -<span id="cb194-7"><a href="#cb194-7" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="kw">function</span> between<span class="op">(</span>p<span class="op">,</span> starter<span class="op">,</span> ender<span class="op">)</span></span> -<span id="cb194-8"><a href="#cb194-8" aria-hidden="true" tabindex="-1"></a> ender <span class="op">=</span> lpeg<span class="op">.</span>B<span class="op">(</span>nonspacechar<span class="op">)</span> <span class="op">*</span> ender</span> -<span id="cb194-9"><a href="#cb194-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="op">(</span>starter <span class="op">*</span> <span class="op">#</span>nonspacechar</span> -<span id="cb194-10"><a href="#cb194-10" aria-hidden="true" tabindex="-1"></a> <span class="op">*</span> lpeg<span class="op">.</span>Ct<span class="op">(</span>p <span class="op">*</span> <span class="op">(</span>p <span class="op">-</span> ender<span class="op">)^</span><span class="dv">0</span><span class="op">)</span> <span class="op">*</span> ender<span class="op">)</span></span> -<span id="cb194-11"><a href="#cb194-11" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span> -<span id="cb194-12"><a href="#cb194-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb194-13"><a href="#cb194-13" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> read_strike_through <span class="op">=</span> between<span class="op">(</span></span> -<span id="cb194-14"><a href="#cb194-14" aria-hidden="true" tabindex="-1"></a> lpeg<span class="op">.</span>V<span class="op">(</span><span class="st">"Inline"</span><span class="op">),</span> doubleslashes<span class="op">,</span> doubleslashes</span> -<span id="cb194-15"><a href="#cb194-15" aria-hidden="true" tabindex="-1"></a> <span class="op">)</span> <span class="op">/</span> <span class="kw">function</span><span class="op">(</span>s<span class="op">)</span> <span class="cf">return</span> <span class="op">{</span><span class="st">"</span><span class="sc">\\</span><span class="st">st{"</span><span class="op">,</span> s<span class="op">,</span> <span class="st">"}"</span><span class="op">}</span> <span class="kw">end</span></span> -<span id="cb194-16"><a href="#cb194-16" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb194-17"><a href="#cb194-17" aria-hidden="true" tabindex="-1"></a> reader<span class="op">.</span>insert_pattern<span class="op">(</span><span class="st">"Inline after Emph"</span><span class="op">,</span> read_strike_through<span class="op">,</span></span> -<span id="cb194-18"><a href="#cb194-18" aria-hidden="true" tabindex="-1"></a> <span class="st">"StrikeThrough"</span><span class="op">)</span></span> -<span id="cb194-19"><a href="#cb194-19" aria-hidden="true" tabindex="-1"></a> reader<span class="op">.</span>add_special_character<span class="op">(</span><span class="st">"/"</span><span class="op">)</span></span> -<span id="cb194-20"><a href="#cb194-20" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span> -<span id="cb194-21"><a href="#cb194-21" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span> -<span id="cb194-22"><a href="#cb194-22" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb194-23"><a href="#cb194-23" aria-hidden="true" tabindex="-1"></a><span class="cf">return</span> strike_through</span></code></pre></div> +<div class="sourceCode" id="cb222"><pre +class="sourceCode lua"><code class="sourceCode lua"><span id="cb222-1"><a href="#cb222-1" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> <span class="va">strike_through</span> <span class="op">=</span> <span class="op">{</span></span> +<span id="cb222-2"><a href="#cb222-2" aria-hidden="true" tabindex="-1"></a> <span class="va">api_version</span> <span class="op">=</span> <span class="dv">2</span><span class="op">,</span></span> +<span id="cb222-3"><a href="#cb222-3" aria-hidden="true" tabindex="-1"></a> <span class="va">grammar_version</span> <span class="op">=</span> <span class="dv">4</span><span class="op">,</span></span> +<span id="cb222-4"><a href="#cb222-4" aria-hidden="true" tabindex="-1"></a> <span class="va">finalize_grammar</span> <span class="op">=</span> <span class="kw">function</span><span class="op">(</span><span class="va">reader</span><span class="op">)</span></span> +<span id="cb222-5"><a href="#cb222-5" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="va">nonspacechar</span> <span class="op">=</span> <span class="va">lpeg</span><span class="op">.</span>P<span class="op">(</span><span class="dv">1</span><span class="op">)</span> <span class="op">-</span> <span class="va">lpeg</span><span class="op">.</span>S<span class="op">(</span><span class="st">"</span><span class="sc">\t</span><span class="st"> "</span><span class="op">)</span></span> +<span id="cb222-6"><a href="#cb222-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="va">doubleslashes</span> <span class="op">=</span> <span class="va">lpeg</span><span class="op">.</span>P<span class="op">(</span><span class="st">"//"</span><span class="op">)</span></span> +<span id="cb222-7"><a href="#cb222-7" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="kw">function</span> between<span class="op">(</span><span class="va">p</span><span class="op">,</span> <span class="va">starter</span><span class="op">,</span> <span class="va">ender</span><span class="op">)</span></span> +<span id="cb222-8"><a href="#cb222-8" aria-hidden="true" tabindex="-1"></a> <span class="va">ender</span> <span class="op">=</span> <span class="va">lpeg</span><span class="op">.</span>B<span class="op">(</span><span class="va">nonspacechar</span><span class="op">)</span> <span class="op">*</span> <span class="va">ender</span></span> +<span id="cb222-9"><a href="#cb222-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="op">(</span><span class="va">starter</span> <span class="op">*</span> <span class="op">#</span><span class="va">nonspacechar</span></span> +<span id="cb222-10"><a href="#cb222-10" aria-hidden="true" tabindex="-1"></a> <span class="op">*</span> <span class="va">lpeg</span><span class="op">.</span>Ct<span class="op">(</span><span class="va">p</span> <span class="op">*</span> <span class="op">(</span><span class="va">p</span> <span class="op">-</span> <span class="va">ender</span><span class="op">)^</span><span class="dv">0</span><span class="op">)</span> <span class="op">*</span> <span class="va">ender</span><span class="op">)</span></span> +<span id="cb222-11"><a href="#cb222-11" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span> +<span id="cb222-12"><a href="#cb222-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb222-13"><a href="#cb222-13" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="va">read_strike_through</span> <span class="op">=</span> between<span class="op">(</span></span> +<span id="cb222-14"><a href="#cb222-14" aria-hidden="true" tabindex="-1"></a> <span class="va">lpeg</span><span class="op">.</span>V<span class="op">(</span><span class="st">"Inline"</span><span class="op">),</span> <span class="va">doubleslashes</span><span class="op">,</span> <span class="va">doubleslashes</span></span> +<span id="cb222-15"><a href="#cb222-15" aria-hidden="true" tabindex="-1"></a> <span class="op">)</span> <span class="op">/</span> <span class="kw">function</span><span class="op">(</span><span class="va">s</span><span class="op">)</span> <span class="cf">return</span> <span class="op">{</span><span class="st">"</span><span class="sc">\\</span><span class="st">st{"</span><span class="op">,</span> <span class="va">s</span><span class="op">,</span> <span class="st">"}"</span><span class="op">}</span> <span class="kw">end</span></span> +<span id="cb222-16"><a href="#cb222-16" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb222-17"><a href="#cb222-17" aria-hidden="true" tabindex="-1"></a> <span class="va">reader</span><span class="op">.</span>insert_pattern<span class="op">(</span><span class="st">"Inline after LinkAndEmph"</span><span class="op">,</span> <span class="va">read_strike_through</span><span class="op">,</span></span> +<span id="cb222-18"><a href="#cb222-18" aria-hidden="true" tabindex="-1"></a> <span class="st">"StrikeThrough"</span><span class="op">)</span></span> +<span id="cb222-19"><a href="#cb222-19" aria-hidden="true" tabindex="-1"></a> <span class="va">reader</span><span class="op">.</span>add_special_character<span class="op">(</span><span class="st">"/"</span><span class="op">)</span></span> +<span id="cb222-20"><a href="#cb222-20" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span> +<span id="cb222-21"><a href="#cb222-21" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span> +<span id="cb222-22"><a href="#cb222-22" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb222-23"><a href="#cb222-23" aria-hidden="true" tabindex="-1"></a><span class="cf">return</span> <span class="va">strike_through</span></span></code></pre></div> <p>Using a text editor, create also a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb195"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb195-1"><a href="#cb195-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb195-2"><a href="#cb195-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soul</span>}</span> -<span id="cb195-3"><a href="#cb195-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[extension = strike-through.lua]{<span class="ex">markdown</span>}</span> -<span id="cb195-4"><a href="#cb195-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb195-5"><a href="#cb195-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb195-6"><a href="#cb195-6" aria-hidden="true" tabindex="-1"></a>This is //a lunar roving vehicle// strike-through text.</span> -<span id="cb195-7"><a href="#cb195-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb195-8"><a href="#cb195-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb223"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb223-1"><a href="#cb223-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb223-2"><a href="#cb223-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soul</span>}</span> +<span id="cb223-3"><a href="#cb223-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[extension = strike-through.lua]{<span class="ex">markdown</span>}</span> +<span id="cb223-4"><a href="#cb223-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb223-5"><a href="#cb223-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb223-6"><a href="#cb223-6" aria-hidden="true" tabindex="-1"></a>This is //a lunar roving vehicle// strike-through text.</span> +<span id="cb223-7"><a href="#cb223-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb223-8"><a href="#cb223-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb196"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb196-1"><a href="#cb196-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb224"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb224-1"><a href="#cb224-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>This is <del>a lunar roving vehicle</del> strike-through text.</p> </blockquote> -<h4 data-number="2.2.1.20" id="option-fancylists"><span -class="header-section-number">2.2.1.20</span> Option +<h4 data-number="2.2.1.24" id="option-fancylists"><span +class="header-section-number">2.2.1.24</span> Option <code>fancyLists</code></h4> <dl> <dt><code>fancyLists</code> (default value: <code>false</code>)</dt> @@ -3129,10 +3703,10 @@ class="header-section-number">2.2.1.20</span> Option <p>Enable the Pandoc <a href="https://pandoc.org/MANUAL.html#org-fancy-lists">fancy list syntax extension</a>:</p> -<div class="sourceCode" id="cb197"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb197-1"><a href="#cb197-1" aria-hidden="true" tabindex="-1"></a>a) first item</span> -<span id="cb197-2"><a href="#cb197-2" aria-hidden="true" tabindex="-1"></a>b) second item</span> -<span id="cb197-3"><a href="#cb197-3" aria-hidden="true" tabindex="-1"></a>c) third item</span></code></pre></div> +<div class="sourceCode" id="cb225"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb225-1"><a href="#cb225-1" aria-hidden="true" tabindex="-1"></a>a) first item</span> +<span id="cb225-2"><a href="#cb225-2" aria-hidden="true" tabindex="-1"></a>b) second item</span> +<span id="cb225-3"><a href="#cb225-3" aria-hidden="true" tabindex="-1"></a>c) third item</span></code></pre></div> </dd> </dl> </dd> @@ -3145,24 +3719,24 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb197-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-17"><span +<h5 class="unnumbered" id="latex-example-19"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb198"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb198-1"><a href="#cb198-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb198-2"><a href="#cb198-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span> -<span id="cb198-3"><a href="#cb198-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fancyLists]{<span class="ex">markdown</span>}</span> -<span id="cb198-4"><a href="#cb198-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb198-5"><a href="#cb198-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb198-6"><a href="#cb198-6" aria-hidden="true" tabindex="-1"></a>a) first item</span> -<span id="cb198-7"><a href="#cb198-7" aria-hidden="true" tabindex="-1"></a>b) second item</span> -<span id="cb198-8"><a href="#cb198-8" aria-hidden="true" tabindex="-1"></a>c) third item</span> -<span id="cb198-9"><a href="#cb198-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb198-10"><a href="#cb198-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb226"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb226-1"><a href="#cb226-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb226-2"><a href="#cb226-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span> +<span id="cb226-3"><a href="#cb226-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fancyLists]{<span class="ex">markdown</span>}</span> +<span id="cb226-4"><a href="#cb226-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb226-5"><a href="#cb226-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb226-6"><a href="#cb226-6" aria-hidden="true" tabindex="-1"></a>a) first item</span> +<span id="cb226-7"><a href="#cb226-7" aria-hidden="true" tabindex="-1"></a>b) second item</span> +<span id="cb226-8"><a href="#cb226-8" aria-hidden="true" tabindex="-1"></a>c) third item</span> +<span id="cb226-9"><a href="#cb226-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb226-10"><a href="#cb226-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb199"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb199-1"><a href="#cb199-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb227"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb227-1"><a href="#cb227-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -3172,23 +3746,23 @@ contain the following text:</p> <li>third item</li> </ol> </blockquote> -<h5 class="unnumbered" id="context-example-10">Con<span +<h5 class="unnumbered" id="context-example-12">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb200"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb200-1"><a href="#cb200-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb200-2"><a href="#cb200-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[fancyLists = yes]</span> -<span id="cb200-3"><a href="#cb200-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb200-4"><a href="#cb200-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb200-5"><a href="#cb200-5" aria-hidden="true" tabindex="-1"></a>a) first item</span> -<span id="cb200-6"><a href="#cb200-6" aria-hidden="true" tabindex="-1"></a>b) second item</span> -<span id="cb200-7"><a href="#cb200-7" aria-hidden="true" tabindex="-1"></a>c) third item</span> -<span id="cb200-8"><a href="#cb200-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb200-9"><a href="#cb200-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb228"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb228-1"><a href="#cb228-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb228-2"><a href="#cb228-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[fancyLists = yes]</span> +<span id="cb228-3"><a href="#cb228-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb228-4"><a href="#cb228-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb228-5"><a href="#cb228-5" aria-hidden="true" tabindex="-1"></a>a) first item</span> +<span id="cb228-6"><a href="#cb228-6" aria-hidden="true" tabindex="-1"></a>b) second item</span> +<span id="cb228-7"><a href="#cb228-7" aria-hidden="true" tabindex="-1"></a>c) third item</span> +<span id="cb228-8"><a href="#cb228-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb228-9"><a href="#cb228-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb201"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb201-1"><a href="#cb201-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb229"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb229-1"><a href="#cb229-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -3198,33 +3772,33 @@ contain the following text:</p> <li>third item</li> </ol> </blockquote> -<h4 data-number="2.2.1.21" id="option-fencedcode"><span -class="header-section-number">2.2.1.21</span> Option +<h4 data-number="2.2.1.25" id="option-fencedcode"><span +class="header-section-number">2.2.1.25</span> Option <code>fencedCode</code></h4> <dl> -<dt><code>fencedCode</code> (default value: <code>false</code>)</dt> +<dt><code>fencedCode</code> (default value: <code>true</code>)</dt> <dd> <dl> <dt>true</dt> <dd> <p>Enable the commonmark fenced code block extension:</p> -<div class="sourceCode" id="cb202"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb202-1"><a href="#cb202-1" aria-hidden="true" tabindex="-1"></a><span class="in">~~~ js</span></span> -<span id="cb202-2"><a href="#cb202-2" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> (a <span class="op">></span> <span class="dv">3</span>) {</span> -<span id="cb202-3"><a href="#cb202-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">moveShip</span>(<span class="dv">5</span> <span class="op">*</span> gravity<span class="op">,</span> DOWN)<span class="op">;</span></span> -<span id="cb202-4"><a href="#cb202-4" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb202-5"><a href="#cb202-5" aria-hidden="true" tabindex="-1"></a><span class="op">~~~~~~</span></span> -<span id="cb202-6"><a href="#cb202-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb202-7"><a href="#cb202-7" aria-hidden="true" tabindex="-1"></a> <span class="vs">``` html</span></span> -<span id="cb202-8"><a href="#cb202-8" aria-hidden="true" tabindex="-1"></a><span class="vs"> <pre></span></span> -<span id="cb202-9"><a href="#cb202-9" aria-hidden="true" tabindex="-1"></a><span class="vs"> <code></span></span> -<span id="cb202-10"><a href="#cb202-10" aria-hidden="true" tabindex="-1"></a><span class="vs"> // Some comments</span></span> -<span id="cb202-11"><a href="#cb202-11" aria-hidden="true" tabindex="-1"></a><span class="vs"> line 1 of code</span></span> -<span id="cb202-12"><a href="#cb202-12" aria-hidden="true" tabindex="-1"></a><span class="vs"> line 2 of code</span></span> -<span id="cb202-13"><a href="#cb202-13" aria-hidden="true" tabindex="-1"></a><span class="vs"> line 3 of code</span></span> -<span id="cb202-14"><a href="#cb202-14" aria-hidden="true" tabindex="-1"></a><span class="vs"> </code></span></span> -<span id="cb202-15"><a href="#cb202-15" aria-hidden="true" tabindex="-1"></a><span class="vs"> </pre></span></span> -<span id="cb202-16"><a href="#cb202-16" aria-hidden="true" tabindex="-1"></a><span class="vs"> ```</span></span></code></pre></div> +<div class="sourceCode" id="cb230"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb230-1"><a href="#cb230-1" aria-hidden="true" tabindex="-1"></a><span class="in">~~~ js</span></span> +<span id="cb230-2"><a href="#cb230-2" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> (a <span class="op">></span> <span class="dv">3</span>) {</span> +<span id="cb230-3"><a href="#cb230-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">moveShip</span>(<span class="dv">5</span> <span class="op">*</span> gravity<span class="op">,</span> DOWN)<span class="op">;</span></span> +<span id="cb230-4"><a href="#cb230-4" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb230-5"><a href="#cb230-5" aria-hidden="true" tabindex="-1"></a><span class="in">~~~~~~</span></span> +<span id="cb230-6"><a href="#cb230-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb230-7"><a href="#cb230-7" aria-hidden="true" tabindex="-1"></a> <span class="in">``` html</span></span> +<span id="cb230-8"><a href="#cb230-8" aria-hidden="true" tabindex="-1"></a> <span class="dt"><</span><span class="kw">pre</span><span class="dt">></span></span> +<span id="cb230-9"><a href="#cb230-9" aria-hidden="true" tabindex="-1"></a> <span class="dt"><</span><span class="kw">code</span><span class="dt">></span></span> +<span id="cb230-10"><a href="#cb230-10" aria-hidden="true" tabindex="-1"></a> // Some comments</span> +<span id="cb230-11"><a href="#cb230-11" aria-hidden="true" tabindex="-1"></a> line 1 of code</span> +<span id="cb230-12"><a href="#cb230-12" aria-hidden="true" tabindex="-1"></a> line 2 of code</span> +<span id="cb230-13"><a href="#cb230-13" aria-hidden="true" tabindex="-1"></a> line 3 of code</span> +<span id="cb230-14"><a href="#cb230-14" aria-hidden="true" tabindex="-1"></a> <span class="dt"></</span><span class="kw">code</span><span class="dt">></span></span> +<span id="cb230-15"><a href="#cb230-15" aria-hidden="true" tabindex="-1"></a> <span class="dt"></</span><span class="kw">pre</span><span class="dt">></span></span> +<span id="cb230-16"><a href="#cb230-16" aria-hidden="true" tabindex="-1"></a> <span class="in">```</span></span></code></pre></div> </dd> </dl> </dd> @@ -3237,106 +3811,105 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb202-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-18"><span +<h5 class="unnumbered" id="latex-example-20"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb203"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb203-1"><a href="#cb203-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb203-2"><a href="#cb203-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span> -<span id="cb203-3"><a href="#cb203-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode]{<span class="ex">markdown</span>}</span> -<span id="cb203-4"><a href="#cb203-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb203-5"><a href="#cb203-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb203-6"><a href="#cb203-6" aria-hidden="true" tabindex="-1"></a>~~~ js</span> -<span id="cb203-7"><a href="#cb203-7" aria-hidden="true" tabindex="-1"></a>if (a > 3) {</span> -<span id="cb203-8"><a href="#cb203-8" aria-hidden="true" tabindex="-1"></a> moveShip(5 * gravity, DOWN);</span> -<span id="cb203-9"><a href="#cb203-9" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb203-10"><a href="#cb203-10" aria-hidden="true" tabindex="-1"></a>~~~~~~</span> -<span id="cb203-11"><a href="#cb203-11" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb203-12"><a href="#cb203-12" aria-hidden="true" tabindex="-1"></a> ``` html</span> -<span id="cb203-13"><a href="#cb203-13" aria-hidden="true" tabindex="-1"></a> <pre></span> -<span id="cb203-14"><a href="#cb203-14" aria-hidden="true" tabindex="-1"></a> <code></span> -<span id="cb203-15"><a href="#cb203-15" aria-hidden="true" tabindex="-1"></a> // Some comments</span> -<span id="cb203-16"><a href="#cb203-16" aria-hidden="true" tabindex="-1"></a> line 1 of code</span> -<span id="cb203-17"><a href="#cb203-17" aria-hidden="true" tabindex="-1"></a> line 2 of code</span> -<span id="cb203-18"><a href="#cb203-18" aria-hidden="true" tabindex="-1"></a> line 3 of code</span> -<span id="cb203-19"><a href="#cb203-19" aria-hidden="true" tabindex="-1"></a> </code></span> -<span id="cb203-20"><a href="#cb203-20" aria-hidden="true" tabindex="-1"></a> </pre></span> -<span id="cb203-21"><a href="#cb203-21" aria-hidden="true" tabindex="-1"></a> ```</span> -<span id="cb203-22"><a href="#cb203-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb203-23"><a href="#cb203-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb231"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb231-1"><a href="#cb231-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb231-2"><a href="#cb231-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span> +<span id="cb231-3"><a href="#cb231-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb231-4"><a href="#cb231-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb231-5"><a href="#cb231-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb231-6"><a href="#cb231-6" aria-hidden="true" tabindex="-1"></a>~~~ js</span> +<span id="cb231-7"><a href="#cb231-7" aria-hidden="true" tabindex="-1"></a>if (a > 3) {</span> +<span id="cb231-8"><a href="#cb231-8" aria-hidden="true" tabindex="-1"></a> moveShip(5 * gravity, DOWN);</span> +<span id="cb231-9"><a href="#cb231-9" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb231-10"><a href="#cb231-10" aria-hidden="true" tabindex="-1"></a>~~~~~~</span> +<span id="cb231-11"><a href="#cb231-11" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb231-12"><a href="#cb231-12" aria-hidden="true" tabindex="-1"></a> ``` html</span> +<span id="cb231-13"><a href="#cb231-13" aria-hidden="true" tabindex="-1"></a> <pre></span> +<span id="cb231-14"><a href="#cb231-14" aria-hidden="true" tabindex="-1"></a> <code></span> +<span id="cb231-15"><a href="#cb231-15" aria-hidden="true" tabindex="-1"></a> // Some comments</span> +<span id="cb231-16"><a href="#cb231-16" aria-hidden="true" tabindex="-1"></a> line 1 of code</span> +<span id="cb231-17"><a href="#cb231-17" aria-hidden="true" tabindex="-1"></a> line 2 of code</span> +<span id="cb231-18"><a href="#cb231-18" aria-hidden="true" tabindex="-1"></a> line 3 of code</span> +<span id="cb231-19"><a href="#cb231-19" aria-hidden="true" tabindex="-1"></a> </code></span> +<span id="cb231-20"><a href="#cb231-20" aria-hidden="true" tabindex="-1"></a> </pre></span> +<span id="cb231-21"><a href="#cb231-21" aria-hidden="true" tabindex="-1"></a> ```</span> +<span id="cb231-22"><a href="#cb231-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb231-23"><a href="#cb231-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb204"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb204-1"><a href="#cb204-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb232"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb232-1"><a href="#cb232-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> -<div class="sourceCode" id="cb205"><pre -class="sourceCode js"><code class="sourceCode javascript"><span id="cb205-1"><a href="#cb205-1" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> (a <span class="op">></span> <span class="dv">3</span>) {</span> -<span id="cb205-2"><a href="#cb205-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">moveShip</span>(<span class="dv">5</span> <span class="op">*</span> gravity<span class="op">,</span> DOWN)<span class="op">;</span></span> -<span id="cb205-3"><a href="#cb205-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> -<div class="sourceCode" id="cb206"><pre -class="sourceCode html"><code class="sourceCode html"><span id="cb206-1"><a href="#cb206-1" aria-hidden="true" tabindex="-1"></a><span class="kw"><pre></span></span> -<span id="cb206-2"><a href="#cb206-2" aria-hidden="true" tabindex="-1"></a> <span class="kw"><code></span></span> -<span id="cb206-3"><a href="#cb206-3" aria-hidden="true" tabindex="-1"></a> // Some comments</span> -<span id="cb206-4"><a href="#cb206-4" aria-hidden="true" tabindex="-1"></a> line 1 of code</span> -<span id="cb206-5"><a href="#cb206-5" aria-hidden="true" tabindex="-1"></a> line 2 of code</span> -<span id="cb206-6"><a href="#cb206-6" aria-hidden="true" tabindex="-1"></a> line 3 of code</span> -<span id="cb206-7"><a href="#cb206-7" aria-hidden="true" tabindex="-1"></a> <span class="kw"></code></span></span> -<span id="cb206-8"><a href="#cb206-8" aria-hidden="true" tabindex="-1"></a><span class="kw"></pre></span></span></code></pre></div> +<div class="sourceCode" id="cb233"><pre +class="sourceCode js"><code class="sourceCode javascript"><span id="cb233-1"><a href="#cb233-1" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> (a <span class="op">></span> <span class="dv">3</span>) {</span> +<span id="cb233-2"><a href="#cb233-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">moveShip</span>(<span class="dv">5</span> <span class="op">*</span> gravity<span class="op">,</span> DOWN)<span class="op">;</span></span> +<span id="cb233-3"><a href="#cb233-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> +<div class="sourceCode" id="cb234"><pre +class="sourceCode html"><code class="sourceCode html"><span id="cb234-1"><a href="#cb234-1" aria-hidden="true" tabindex="-1"></a><span class="dt"><</span><span class="kw">pre</span><span class="dt">></span></span> +<span id="cb234-2"><a href="#cb234-2" aria-hidden="true" tabindex="-1"></a> <span class="dt"><</span><span class="kw">code</span><span class="dt">></span></span> +<span id="cb234-3"><a href="#cb234-3" aria-hidden="true" tabindex="-1"></a> // Some comments</span> +<span id="cb234-4"><a href="#cb234-4" aria-hidden="true" tabindex="-1"></a> line 1 of code</span> +<span id="cb234-5"><a href="#cb234-5" aria-hidden="true" tabindex="-1"></a> line 2 of code</span> +<span id="cb234-6"><a href="#cb234-6" aria-hidden="true" tabindex="-1"></a> line 3 of code</span> +<span id="cb234-7"><a href="#cb234-7" aria-hidden="true" tabindex="-1"></a> <span class="dt"></</span><span class="kw">code</span><span class="dt">></span></span> +<span id="cb234-8"><a href="#cb234-8" aria-hidden="true" tabindex="-1"></a><span class="dt"></</span><span class="kw">pre</span><span class="dt">></span></span></code></pre></div> </blockquote> -<h5 class="unnumbered" id="context-example-11">Con<span +<h5 class="unnumbered" id="context-example-13">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb207"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb207-1"><a href="#cb207-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb207-2"><a href="#cb207-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[fencedCode = yes]</span> -<span id="cb207-3"><a href="#cb207-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\definetyping</span> [js]</span> -<span id="cb207-4"><a href="#cb207-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\definetyping</span> [html]</span> -<span id="cb207-5"><a href="#cb207-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\setuptyping</span> [html] [option=XML]</span> -<span id="cb207-6"><a href="#cb207-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb207-7"><a href="#cb207-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb207-8"><a href="#cb207-8" aria-hidden="true" tabindex="-1"></a>~~~ js</span> -<span id="cb207-9"><a href="#cb207-9" aria-hidden="true" tabindex="-1"></a>if (a > 3) {</span> -<span id="cb207-10"><a href="#cb207-10" aria-hidden="true" tabindex="-1"></a> moveShip(5 * gravity, DOWN);</span> -<span id="cb207-11"><a href="#cb207-11" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb207-12"><a href="#cb207-12" aria-hidden="true" tabindex="-1"></a>~~~~~~</span> -<span id="cb207-13"><a href="#cb207-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb207-14"><a href="#cb207-14" aria-hidden="true" tabindex="-1"></a> ``` html</span> -<span id="cb207-15"><a href="#cb207-15" aria-hidden="true" tabindex="-1"></a> <pre></span> -<span id="cb207-16"><a href="#cb207-16" aria-hidden="true" tabindex="-1"></a> <code></span> -<span id="cb207-17"><a href="#cb207-17" aria-hidden="true" tabindex="-1"></a> // Some comments</span> -<span id="cb207-18"><a href="#cb207-18" aria-hidden="true" tabindex="-1"></a> line 1 of code</span> -<span id="cb207-19"><a href="#cb207-19" aria-hidden="true" tabindex="-1"></a> line 2 of code</span> -<span id="cb207-20"><a href="#cb207-20" aria-hidden="true" tabindex="-1"></a> line 3 of code</span> -<span id="cb207-21"><a href="#cb207-21" aria-hidden="true" tabindex="-1"></a> </code></span> -<span id="cb207-22"><a href="#cb207-22" aria-hidden="true" tabindex="-1"></a> </pre></span> -<span id="cb207-23"><a href="#cb207-23" aria-hidden="true" tabindex="-1"></a> ```</span> -<span id="cb207-24"><a href="#cb207-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb207-25"><a href="#cb207-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb235"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb235-1"><a href="#cb235-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb235-2"><a href="#cb235-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\definetyping</span> [js]</span> +<span id="cb235-3"><a href="#cb235-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\definetyping</span> [html]</span> +<span id="cb235-4"><a href="#cb235-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\setuptyping</span> [html] [option=XML]</span> +<span id="cb235-5"><a href="#cb235-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb235-6"><a href="#cb235-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb235-7"><a href="#cb235-7" aria-hidden="true" tabindex="-1"></a>~~~ js</span> +<span id="cb235-8"><a href="#cb235-8" aria-hidden="true" tabindex="-1"></a>if (a > 3) {</span> +<span id="cb235-9"><a href="#cb235-9" aria-hidden="true" tabindex="-1"></a> moveShip(5 * gravity, DOWN);</span> +<span id="cb235-10"><a href="#cb235-10" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb235-11"><a href="#cb235-11" aria-hidden="true" tabindex="-1"></a>~~~~~~</span> +<span id="cb235-12"><a href="#cb235-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb235-13"><a href="#cb235-13" aria-hidden="true" tabindex="-1"></a> ``` html</span> +<span id="cb235-14"><a href="#cb235-14" aria-hidden="true" tabindex="-1"></a> <pre></span> +<span id="cb235-15"><a href="#cb235-15" aria-hidden="true" tabindex="-1"></a> <code></span> +<span id="cb235-16"><a href="#cb235-16" aria-hidden="true" tabindex="-1"></a> // Some comments</span> +<span id="cb235-17"><a href="#cb235-17" aria-hidden="true" tabindex="-1"></a> line 1 of code</span> +<span id="cb235-18"><a href="#cb235-18" aria-hidden="true" tabindex="-1"></a> line 2 of code</span> +<span id="cb235-19"><a href="#cb235-19" aria-hidden="true" tabindex="-1"></a> line 3 of code</span> +<span id="cb235-20"><a href="#cb235-20" aria-hidden="true" tabindex="-1"></a> </code></span> +<span id="cb235-21"><a href="#cb235-21" aria-hidden="true" tabindex="-1"></a> </pre></span> +<span id="cb235-22"><a href="#cb235-22" aria-hidden="true" tabindex="-1"></a> ```</span> +<span id="cb235-23"><a href="#cb235-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb235-24"><a href="#cb235-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb208"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb208-1"><a href="#cb208-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb236"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb236-1"><a href="#cb236-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> -<div class="sourceCode" id="cb209"><pre -class="sourceCode js"><code class="sourceCode javascript"><span id="cb209-1"><a href="#cb209-1" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> (a <span class="op">></span> <span class="dv">3</span>) {</span> -<span id="cb209-2"><a href="#cb209-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">moveShip</span>(<span class="dv">5</span> <span class="op">*</span> gravity<span class="op">,</span> DOWN)<span class="op">;</span></span> -<span id="cb209-3"><a href="#cb209-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> -<div class="sourceCode" id="cb210"><pre -class="sourceCode html"><code class="sourceCode html"><span id="cb210-1"><a href="#cb210-1" aria-hidden="true" tabindex="-1"></a><span class="kw"><pre></span></span> -<span id="cb210-2"><a href="#cb210-2" aria-hidden="true" tabindex="-1"></a> <span class="kw"><code></span></span> -<span id="cb210-3"><a href="#cb210-3" aria-hidden="true" tabindex="-1"></a> // Some comments</span> -<span id="cb210-4"><a href="#cb210-4" aria-hidden="true" tabindex="-1"></a> line 1 of code</span> -<span id="cb210-5"><a href="#cb210-5" aria-hidden="true" tabindex="-1"></a> line 2 of code</span> -<span id="cb210-6"><a href="#cb210-6" aria-hidden="true" tabindex="-1"></a> line 3 of code</span> -<span id="cb210-7"><a href="#cb210-7" aria-hidden="true" tabindex="-1"></a> <span class="kw"></code></span></span> -<span id="cb210-8"><a href="#cb210-8" aria-hidden="true" tabindex="-1"></a><span class="kw"></pre></span></span></code></pre></div> -</blockquote> -<h4 data-number="2.2.1.22" id="option-fencedcodeattributes"><span -class="header-section-number">2.2.1.22</span> Option +<div class="sourceCode" id="cb237"><pre +class="sourceCode js"><code class="sourceCode javascript"><span id="cb237-1"><a href="#cb237-1" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> (a <span class="op">></span> <span class="dv">3</span>) {</span> +<span id="cb237-2"><a href="#cb237-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">moveShip</span>(<span class="dv">5</span> <span class="op">*</span> gravity<span class="op">,</span> DOWN)<span class="op">;</span></span> +<span id="cb237-3"><a href="#cb237-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> +<div class="sourceCode" id="cb238"><pre +class="sourceCode html"><code class="sourceCode html"><span id="cb238-1"><a href="#cb238-1" aria-hidden="true" tabindex="-1"></a><span class="dt"><</span><span class="kw">pre</span><span class="dt">></span></span> +<span id="cb238-2"><a href="#cb238-2" aria-hidden="true" tabindex="-1"></a> <span class="dt"><</span><span class="kw">code</span><span class="dt">></span></span> +<span id="cb238-3"><a href="#cb238-3" aria-hidden="true" tabindex="-1"></a> // Some comments</span> +<span id="cb238-4"><a href="#cb238-4" aria-hidden="true" tabindex="-1"></a> line 1 of code</span> +<span id="cb238-5"><a href="#cb238-5" aria-hidden="true" tabindex="-1"></a> line 2 of code</span> +<span id="cb238-6"><a href="#cb238-6" aria-hidden="true" tabindex="-1"></a> line 3 of code</span> +<span id="cb238-7"><a href="#cb238-7" aria-hidden="true" tabindex="-1"></a> <span class="dt"></</span><span class="kw">code</span><span class="dt">></span></span> +<span id="cb238-8"><a href="#cb238-8" aria-hidden="true" tabindex="-1"></a><span class="dt"></</span><span class="kw">pre</span><span class="dt">></span></span></code></pre></div> +</blockquote> +<h4 data-number="2.2.1.26" id="option-fencedcodeattributes"><span +class="header-section-number">2.2.1.26</span> Option <code>fencedCodeAttributes</code></h4> <dl> <dt><code>fencedCodeAttributes</code> (default value: @@ -3348,12 +3921,12 @@ class="header-section-number">2.2.1.22</span> Option <p>Enable the Pandoc <a href="https://pandoc.org/MANUAL.html#extension-fenced_code_attributes">fenced code attribute syntax extension</a>:</p> -<div class="sourceCode" id="cb211"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb211-1"><a href="#cb211-1" aria-hidden="true" tabindex="-1"></a><span class="in">~~~~ {#mycode .haskell .numberLines startFrom=100}</span></span> -<span id="cb211-2"><a href="#cb211-2" aria-hidden="true" tabindex="-1"></a><span class="in">qsort [] = []</span></span> -<span id="cb211-3"><a href="#cb211-3" aria-hidden="true" tabindex="-1"></a><span class="in">qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++</span></span> -<span id="cb211-4"><a href="#cb211-4" aria-hidden="true" tabindex="-1"></a><span class="in"> qsort (filter (>= x) xs)</span></span> -<span id="cb211-5"><a href="#cb211-5" aria-hidden="true" tabindex="-1"></a><span class="in">~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</span></span></code></pre></div> +<div class="sourceCode" id="cb239"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb239-1"><a href="#cb239-1" aria-hidden="true" tabindex="-1"></a><span class="in">~~~~ {#mycode .haskell .numberLines startFrom=100}</span></span> +<span id="cb239-2"><a href="#cb239-2" aria-hidden="true" tabindex="-1"></a><span class="in">qsort [] = []</span></span> +<span id="cb239-3"><a href="#cb239-3" aria-hidden="true" tabindex="-1"></a><span class="in">qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++</span></span> +<span id="cb239-4"><a href="#cb239-4" aria-hidden="true" tabindex="-1"></a><span class="in"> qsort (filter (>= x) xs)</span></span> +<span id="cb239-5"><a href="#cb239-5" aria-hidden="true" tabindex="-1"></a><span class="in">~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</span></span></code></pre></div> </dd> </dl> </dd> @@ -3366,52 +3939,54 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb211-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-19"><span +<h5 class="unnumbered" id="latex-example-21"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb212"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb212-1"><a href="#cb212-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb212-2"><a href="#cb212-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode,</span> -<span id="cb212-3"><a href="#cb212-3" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributes]{<span class="ex">markdown</span>}</span> -<span id="cb212-4"><a href="#cb212-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span> -<span id="cb212-5"><a href="#cb212-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb212-6"><a href="#cb212-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb212-7"><a href="#cb212-7" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextBegin = {<span class="co">%</span></span> -<span id="cb212-8"><a href="#cb212-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span> -<span id="cb212-9"><a href="#cb212-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span> -<span id="cb212-10"><a href="#cb212-10" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb212-11"><a href="#cb212-11" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {<span class="co">%</span></span> -<span id="cb212-12"><a href="#cb212-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\setminted</span>{{#1} = {#2}}<span class="co">%</span></span> -<span id="cb212-13"><a href="#cb212-13" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb212-14"><a href="#cb212-14" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb212-15"><a href="#cb212-15" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb212-16"><a href="#cb212-16" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb212-17"><a href="#cb212-17" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextEnd = {<span class="co">%</span></span> -<span id="cb212-18"><a href="#cb212-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span> -<span id="cb212-19"><a href="#cb212-19" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb212-20"><a href="#cb212-20" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb212-21"><a href="#cb212-21" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb212-22"><a href="#cb212-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb212-23"><a href="#cb212-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb212-24"><a href="#cb212-24" aria-hidden="true" tabindex="-1"></a>~~~ js {linenos=true}</span> -<span id="cb212-25"><a href="#cb212-25" aria-hidden="true" tabindex="-1"></a>if (a > 3) {</span> -<span id="cb212-26"><a href="#cb212-26" aria-hidden="true" tabindex="-1"></a> moveShip(5 * gravity, DOWN);</span> -<span id="cb212-27"><a href="#cb212-27" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb212-28"><a href="#cb212-28" aria-hidden="true" tabindex="-1"></a>~~~~~~</span> -<span id="cb212-29"><a href="#cb212-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb212-30"><a href="#cb212-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> -<p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb213"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb213-1"><a href="#cb213-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> -<p>A PDF document named <code>document.pdf</code> should be produced and -contain the following text:</p> -<blockquote> -<p>``` js {.linenos} 1. if (a > 3) { 2. moveShip(5 * gravity, DOWN); -3. } ``````</p> -</blockquote> -<h4 data-number="2.2.1.23" id="fenced-divs"><span -class="header-section-number">2.2.1.23</span> Option +<div class="sourceCode" id="cb240"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb240-1"><a href="#cb240-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb240-2"><a href="#cb240-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode,</span> +<span id="cb240-3"><a href="#cb240-3" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributes]{<span class="ex">markdown</span>}</span> +<span id="cb240-4"><a href="#cb240-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span> +<span id="cb240-5"><a href="#cb240-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb240-6"><a href="#cb240-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb240-7"><a href="#cb240-7" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextBegin = {<span class="co">%</span></span> +<span id="cb240-8"><a href="#cb240-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span> +<span id="cb240-9"><a href="#cb240-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span> +<span id="cb240-10"><a href="#cb240-10" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb240-11"><a href="#cb240-11" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {<span class="co">%</span></span> +<span id="cb240-12"><a href="#cb240-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\setminted</span>{{#1} = {#2}}<span class="co">%</span></span> +<span id="cb240-13"><a href="#cb240-13" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb240-14"><a href="#cb240-14" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb240-15"><a href="#cb240-15" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb240-16"><a href="#cb240-16" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb240-17"><a href="#cb240-17" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextEnd = {<span class="co">%</span></span> +<span id="cb240-18"><a href="#cb240-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span> +<span id="cb240-19"><a href="#cb240-19" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb240-20"><a href="#cb240-20" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb240-21"><a href="#cb240-21" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb240-22"><a href="#cb240-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb240-23"><a href="#cb240-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb240-24"><a href="#cb240-24" aria-hidden="true" tabindex="-1"></a>~~~ js {linenos=true}</span> +<span id="cb240-25"><a href="#cb240-25" aria-hidden="true" tabindex="-1"></a>if (a > 3) {</span> +<span id="cb240-26"><a href="#cb240-26" aria-hidden="true" tabindex="-1"></a> moveShip(5 * gravity, DOWN);</span> +<span id="cb240-27"><a href="#cb240-27" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb240-28"><a href="#cb240-28" aria-hidden="true" tabindex="-1"></a>~~~~~~</span> +<span id="cb240-29"><a href="#cb240-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb240-30"><a href="#cb240-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb241"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb241-1"><a href="#cb241-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<div class="sourceCode" id="cb242"><pre +class="sourceCode js linenos"><code class="sourceCode javascript"><span id="cb242-1"><a href="#cb242-1" aria-hidden="true" tabindex="-1"></a><span class="fl">1.</span> <span class="cf">if</span> (a <span class="op">></span> <span class="dv">3</span>) {</span> +<span id="cb242-2"><a href="#cb242-2" aria-hidden="true" tabindex="-1"></a><span class="fl">2.</span> <span class="fu">moveShip</span>(<span class="dv">5</span> <span class="op">*</span> gravity<span class="op">,</span> DOWN)<span class="op">;</span></span> +<span id="cb242-3"><a href="#cb242-3" aria-hidden="true" tabindex="-1"></a><span class="fl">3.</span> }</span></code></pre></div> +</blockquote> +<h4 data-number="2.2.1.27" id="fenced-divs"><span +class="header-section-number">2.2.1.27</span> Option <code>fencedDivs</code></h4> <dl> <dt><code>fencedDivs</code> (default value: <code>false</code>)</dt> @@ -3422,12 +3997,12 @@ class="header-section-number">2.2.1.23</span> Option <p>Enable the Pandoc <a href="https://pandoc.org/MANUAL.html#extension-fenced_divs">fenced div syntax extension</a>:</p> -<div class="sourceCode" id="cb214"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb214-1"><a href="#cb214-1" aria-hidden="true" tabindex="-1"></a>::::: {#special .sidebar}</span> -<span id="cb214-2"><a href="#cb214-2" aria-hidden="true" tabindex="-1"></a>Here is a paragraph.</span> -<span id="cb214-3"><a href="#cb214-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb214-4"><a href="#cb214-4" aria-hidden="true" tabindex="-1"></a>And another.</span> -<span id="cb214-5"><a href="#cb214-5" aria-hidden="true" tabindex="-1"></a>:::::</span></code></pre></div> +<div class="sourceCode" id="cb243"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb243-1"><a href="#cb243-1" aria-hidden="true" tabindex="-1"></a>::::: {#special .sidebar}</span> +<span id="cb243-2"><a href="#cb243-2" aria-hidden="true" tabindex="-1"></a>Here is a paragraph.</span> +<span id="cb243-3"><a href="#cb243-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb243-4"><a href="#cb243-4" aria-hidden="true" tabindex="-1"></a>And another.</span> +<span id="cb243-5"><a href="#cb243-5" aria-hidden="true" tabindex="-1"></a>:::::</span></code></pre></div> </dd> </dl> </dd> @@ -3440,34 +4015,34 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb214-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-20"><span +<h5 class="unnumbered" id="latex-example-22"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb215"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb215-1"><a href="#cb215-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb215-2"><a href="#cb215-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedDivs]{<span class="ex">markdown</span>}</span> -<span id="cb215-3"><a href="#cb215-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb215-4"><a href="#cb215-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}{slice=special}</span> -<span id="cb215-5"><a href="#cb215-5" aria-hidden="true" tabindex="-1"></a>Here is a regular paragraph.</span> -<span id="cb215-6"><a href="#cb215-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb215-7"><a href="#cb215-7" aria-hidden="true" tabindex="-1"></a>::::: {#special}</span> -<span id="cb215-8"><a href="#cb215-8" aria-hidden="true" tabindex="-1"></a>Here is a special paragraph.</span> -<span id="cb215-9"><a href="#cb215-9" aria-hidden="true" tabindex="-1"></a>:::::</span> -<span id="cb215-10"><a href="#cb215-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb215-11"><a href="#cb215-11" aria-hidden="true" tabindex="-1"></a>And here is another regular paragraph.</span> -<span id="cb215-12"><a href="#cb215-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb215-13"><a href="#cb215-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb244"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb244-1"><a href="#cb244-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb244-2"><a href="#cb244-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedDivs]{<span class="ex">markdown</span>}</span> +<span id="cb244-3"><a href="#cb244-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb244-4"><a href="#cb244-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}{slice=special}</span> +<span id="cb244-5"><a href="#cb244-5" aria-hidden="true" tabindex="-1"></a>Here is a regular paragraph.</span> +<span id="cb244-6"><a href="#cb244-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb244-7"><a href="#cb244-7" aria-hidden="true" tabindex="-1"></a>::::: {#special}</span> +<span id="cb244-8"><a href="#cb244-8" aria-hidden="true" tabindex="-1"></a>Here is a special paragraph.</span> +<span id="cb244-9"><a href="#cb244-9" aria-hidden="true" tabindex="-1"></a>:::::</span> +<span id="cb244-10"><a href="#cb244-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb244-11"><a href="#cb244-11" aria-hidden="true" tabindex="-1"></a>And here is another regular paragraph.</span> +<span id="cb244-12"><a href="#cb244-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb244-13"><a href="#cb244-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb216"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb216-1"><a href="#cb216-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb245"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb245-1"><a href="#cb245-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>Here is a special paragraph.</p> </blockquote> -<h4 data-number="2.2.1.24" id="option-finalizecache"><span -class="header-section-number">2.2.1.24</span> Option +<h4 data-number="2.2.1.28" id="option-finalizecache"><span +class="header-section-number">2.2.1.28</span> Option <code>finalizeCache</code></h4> <dl> <dt><code>finalizeCache</code> (default value: <code>false</code>)</dt> @@ -3486,35 +4061,35 @@ further changes in the order and the content of markdown documents will not be reflected.</p> </dd> </dl> -<h5 class="unnumbered" id="plain-tex-example-7">Plain <span +<h5 class="unnumbered" id="plain-tex-example-9">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb217"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb217-1"><a href="#cb217-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb217-2"><a href="#cb217-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFinalizeCache</span>{true}</span> -<span id="cb217-3"><a href="#cb217-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb217-4"><a href="#cb217-4" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> -<span id="cb217-5"><a href="#cb217-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb217-6"><a href="#cb217-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb246"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb246-1"><a href="#cb246-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb246-2"><a href="#cb246-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFinalizeCache</span>{true}</span> +<span id="cb246-3"><a href="#cb246-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb246-4"><a href="#cb246-4" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> +<span id="cb246-5"><a href="#cb246-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb246-6"><a href="#cb246-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb218"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb218-1"><a href="#cb218-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb247"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb247-1"><a href="#cb247-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!” A frozen cache will also be produced as we requested using the <code>finalizeCache</code> option.</p> <p>Next, change the content of <code>document.tex</code> as follows:</p> -<div class="sourceCode" id="cb219"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb219-1"><a href="#cb219-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb219-2"><a href="#cb219-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCache</span>{true}</span> -<span id="cb219-3"><a href="#cb219-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb219-4"><a href="#cb219-4" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span> -<span id="cb219-5"><a href="#cb219-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb219-6"><a href="#cb219-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb248"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb248-1"><a href="#cb248-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb248-2"><a href="#cb248-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCache</span>{true}</span> +<span id="cb248-3"><a href="#cb248-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb248-4"><a href="#cb248-4" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span> +<span id="cb248-5"><a href="#cb248-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb248-6"><a href="#cb248-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Last, invoke pdfTeX without shell access from the terminal:</p> -<div class="sourceCode" id="cb220"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb220-1"><a href="#cb220-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> <span class="at">-no-shell-escape</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb249"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb249-1"><a href="#cb249-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> <span class="at">-no-shell-escape</span> document.tex</span></code></pre></div> <p>A new PDF document named <code>document.pdf</code> should be produced and contain the same text “Hello <em>world</em>!” Since we used the contents of the frozen cache using the @@ -3522,37 +4097,37 @@ contents of the frozen cache using the the document without accessing the shell or invoking Lua, but the change in the content of the markdown document from “Hello <em>world</em>!” to “Hi <em>world</em>!” was not reflected.</p> -<h5 class="unnumbered" id="latex-example-21"><span +<h5 class="unnumbered" id="latex-example-23"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb221"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb221-1"><a href="#cb221-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>[finalizecache]{<span class="ex">article</span>}</span> -<span id="cb221-2"><a href="#cb221-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb221-3"><a href="#cb221-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb221-4"><a href="#cb221-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb221-5"><a href="#cb221-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> -<span id="cb221-6"><a href="#cb221-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb221-7"><a href="#cb221-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb250"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb250-1"><a href="#cb250-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>[finalizecache]{<span class="ex">article</span>}</span> +<span id="cb250-2"><a href="#cb250-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb250-3"><a href="#cb250-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb250-4"><a href="#cb250-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb250-5"><a href="#cb250-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> +<span id="cb250-6"><a href="#cb250-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb250-7"><a href="#cb250-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb222"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb222-1"><a href="#cb222-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb251"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb251-1"><a href="#cb251-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!” A frozen cache will also be produced as we requested using the <code>finalizecache</code> option.</p> <p>Next, change the content of <code>document.tex</code> as follows:</p> -<div class="sourceCode" id="cb223"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb223-1"><a href="#cb223-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>[frozencache]{<span class="ex">article</span>}</span> -<span id="cb223-2"><a href="#cb223-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb223-3"><a href="#cb223-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb223-4"><a href="#cb223-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb223-5"><a href="#cb223-5" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span> -<span id="cb223-6"><a href="#cb223-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb223-7"><a href="#cb223-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb252"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb252-1"><a href="#cb252-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>[frozencache]{<span class="ex">article</span>}</span> +<span id="cb252-2"><a href="#cb252-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb252-3"><a href="#cb252-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb252-4"><a href="#cb252-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb252-5"><a href="#cb252-5" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span> +<span id="cb252-6"><a href="#cb252-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb252-7"><a href="#cb252-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Last, invoke pdfTeX without shell access from the terminal:</p> -<div class="sourceCode" id="cb224"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb224-1"><a href="#cb224-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdflatex</span> <span class="at">-no-shell-escape</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb253"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb253-1"><a href="#cb253-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdflatex</span> <span class="at">-no-shell-escape</span> document.tex</span></code></pre></div> <p>A new PDF document named <code>document.pdf</code> should be produced and contain the same text “Hello <em>world</em>!” Since we used the contents of the frozen cache using the @@ -3560,37 +4135,37 @@ contents of the frozen cache using the the document without accessing the shell or invoking Lua, but the change in the content of the markdown document from “Hello <em>world</em>!” to “Hi <em>world</em>!” was not reflected.</p> -<h5 class="unnumbered" id="context-example-12">Con<span +<h5 class="unnumbered" id="context-example-14">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb225"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb225-1"><a href="#cb225-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb225-2"><a href="#cb225-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[finalizeCache = yes]</span> -<span id="cb225-3"><a href="#cb225-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb225-4"><a href="#cb225-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb225-5"><a href="#cb225-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> -<span id="cb225-6"><a href="#cb225-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb225-7"><a href="#cb225-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb254"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb254-1"><a href="#cb254-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb254-2"><a href="#cb254-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[finalizeCache = yes]</span> +<span id="cb254-3"><a href="#cb254-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb254-4"><a href="#cb254-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb254-5"><a href="#cb254-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> +<span id="cb254-6"><a href="#cb254-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb254-7"><a href="#cb254-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb226"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb226-1"><a href="#cb226-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb255"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb255-1"><a href="#cb255-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!” A frozen cache will also be produced in the <code>cache.tex</code> output file as we requested using the <code>finalizeCache</code> option.</p> <p>Next, change the content of <code>document.tex</code> as follows:</p> -<div class="sourceCode" id="cb227"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb227-1"><a href="#cb227-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb227-2"><a href="#cb227-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[frozenCache = yes]</span> -<span id="cb227-3"><a href="#cb227-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb227-4"><a href="#cb227-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb227-5"><a href="#cb227-5" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span> -<span id="cb227-6"><a href="#cb227-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb227-7"><a href="#cb227-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> -<p>Last, invoke pdfTeX without shell access from the terminal:</p> -<div class="sourceCode" id="cb228"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb228-1"><a href="#cb228-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb256"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb256-1"><a href="#cb256-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb256-2"><a href="#cb256-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[frozenCache = yes]</span> +<span id="cb256-3"><a href="#cb256-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb256-4"><a href="#cb256-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb256-5"><a href="#cb256-5" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span> +<span id="cb256-6"><a href="#cb256-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb256-7"><a href="#cb256-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<p>Last, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb257"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb257-1"><a href="#cb257-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A new PDF document named <code>document.pdf</code> should be produced and contain the same text “Hello <em>world</em>!” Since we used the contents of the frozen cache using the @@ -3598,8 +4173,8 @@ contents of the frozen cache using the the document without accessing the shell or invoking Lua, but the change in the content of the markdown document from “Hello <em>world</em>!” to “Hi <em>world</em>!” was not reflected.</p> -<h4 data-number="2.2.1.25" id="option-frozencachecounter"><span -class="header-section-number">2.2.1.25</span> Option +<h4 data-number="2.2.1.29" id="option-frozencachecounter"><span +class="header-section-number">2.2.1.29</span> Option <code>frozenCacheCounter</code></h4> <dl> <dt><code>frozenCacheCounter</code> (default value: <code>0</code>)</dt> @@ -3615,86 +4190,60 @@ class="tex">T<sub>e</sub>X</span> macro markdown document number ⟨<em>number</em>⟩.</p> </dd> </dl> -<h5 class="unnumbered" id="lua-module-example-8">Lua Module Example</h5> +<h5 class="unnumbered" id="lua-module-example-9">Lua Module Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb229"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb229-1"><a href="#cb229-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb229-2"><a href="#cb229-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> -<span id="cb229-3"><a href="#cb229-3" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> -<span id="cb229-4"><a href="#cb229-4" aria-hidden="true" tabindex="-1"></a> local firstConvert = markdown.new({finalizeCache = true, frozenCacheCounter = 0})</span> -<span id="cb229-5"><a href="#cb229-5" aria-hidden="true" tabindex="-1"></a> local firstInput = "Hello"</span> -<span id="cb229-6"><a href="#cb229-6" aria-hidden="true" tabindex="-1"></a> local secondConvert = markdown.new({finalizeCache = true, frozenCacheCounter = 1})</span> -<span id="cb229-7"><a href="#cb229-7" aria-hidden="true" tabindex="-1"></a> local secondInput = "*world*!"</span> -<span id="cb229-8"><a href="#cb229-8" aria-hidden="true" tabindex="-1"></a> tex.sprint(firstConvert(firstInput) .. [[ ]] .. secondConvert(secondInput)) }</span> -<span id="cb229-9"><a href="#cb229-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb258"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb258-1"><a href="#cb258-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb258-2"><a href="#cb258-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb258-3"><a href="#cb258-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb258-4"><a href="#cb258-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb258-5"><a href="#cb258-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb258-6"><a href="#cb258-6" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb258-7"><a href="#cb258-7" aria-hidden="true" tabindex="-1"></a> local firstConvert = markdown.new({finalizeCache = true, frozenCacheCounter = 0})</span> +<span id="cb258-8"><a href="#cb258-8" aria-hidden="true" tabindex="-1"></a> local firstInput = "Hello"</span> +<span id="cb258-9"><a href="#cb258-9" aria-hidden="true" tabindex="-1"></a> local secondConvert = markdown.new({finalizeCache = true, frozenCacheCounter = 1})</span> +<span id="cb258-10"><a href="#cb258-10" aria-hidden="true" tabindex="-1"></a> local secondInput = "*world*!"</span> +<span id="cb258-11"><a href="#cb258-11" aria-hidden="true" tabindex="-1"></a> tex.sprint(firstConvert(firstInput) .. [[ ]] .. secondConvert(secondInput)) }</span> +<span id="cb258-12"><a href="#cb258-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb258-13"><a href="#cb258-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Then, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb230"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb230-1"><a href="#cb230-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb259"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb259-1"><a href="#cb259-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!” A frozen cache with two entries will also be produced as we requested using the <code>frozenCacheCounter</code> option.</p> -<h4 data-number="2.2.1.26" id="option-hardlinebreaks"><span -class="header-section-number">2.2.1.26</span> Option -<code>hardLineBreaks</code></h4> +<h4 data-number="2.2.1.30" id="option-gfmautoidentifiers"><span +class="header-section-number">2.2.1.30</span> Option +<code>gfmAutoIdentifiers</code></h4> <dl> -<dt><code>hardLineBreaks</code> (default value: <code>false</code>)</dt> +<dt><code>gfmAutoIdentifiers</code> (default value: +<code>false</code>)</dt> <dd> <dl> <dt>true</dt> <dd> -<p>Interpret all newlines within a paragraph as hard line breaks instead -of spaces.</p> -</dd> -</dl> +<p>Enable the Pandoc <a +href="https://pandoc.org/MANUAL.html#extension-gfm_auto_identifiers">GitHub-flavored +auto identifiers syntax extension</a>:</p> +<div class="sourceCode" id="cb260"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb260-1"><a href="#cb260-1" aria-hidden="true" tabindex="-1"></a>The following heading received the identifier <span class="in">`123-sesame-street`</span>:</span> +<span id="cb260-2"><a href="#cb260-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb260-3"><a href="#cb260-3" aria-hidden="true" tabindex="-1"></a><span class="fu"># 123 Sesame Street</span></span></code></pre></div> </dd> -<dd> -<dl> <dt>false</dt> <dd> -<p>Interpret all newlines within a paragraph as spaces.</p> +<p>Disable the Pandoc GitHub-flavored auto identifiers syntax +extension.</p> </dd> </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-22"><span -class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> -<p>Using a text editor, create a text document named -<code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb231"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb231-1"><a href="#cb231-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb231-2"><a href="#cb231-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb231-3"><a href="#cb231-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb231-4"><a href="#cb231-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb231-5"><a href="#cb231-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb231-6"><a href="#cb231-6" aria-hidden="true" tabindex="-1"></a>'Twas brillig, and the slithy toves</span> -<span id="cb231-7"><a href="#cb231-7" aria-hidden="true" tabindex="-1"></a>Did gyre and gimble in the wabe;</span> -<span id="cb231-8"><a href="#cb231-8" aria-hidden="true" tabindex="-1"></a>All mimsy were the borogoves,</span> -<span id="cb231-9"><a href="#cb231-9" aria-hidden="true" tabindex="-1"></a>And the mome raths outgrabe.</span> -<span id="cb231-10"><a href="#cb231-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb231-11"><a href="#cb231-11" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb231-12"><a href="#cb231-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{hardLineBreaks}</span> -<span id="cb231-13"><a href="#cb231-13" aria-hidden="true" tabindex="-1"></a>'Twas brillig, and the slithy toves</span> -<span id="cb231-14"><a href="#cb231-14" aria-hidden="true" tabindex="-1"></a>Did gyre and gimble in the wabe;</span> -<span id="cb231-15"><a href="#cb231-15" aria-hidden="true" tabindex="-1"></a>All mimsy were the borogoves,</span> -<span id="cb231-16"><a href="#cb231-16" aria-hidden="true" tabindex="-1"></a>And the mome raths outgrabe.</span> -<span id="cb231-17"><a href="#cb231-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb231-18"><a href="#cb231-18" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb231-19"><a href="#cb231-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> -<p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb232"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb232-1"><a href="#cb232-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> -<p>A PDF document named <code>document.pdf</code> should be produced and -contain the following text:</p> -<blockquote> -<p>’Twas brillig, and the slithy toves Did gyre and gimble in the wabe; -All mimsy were the borogoves, And the mome raths outgrabe.</p> -<p>’Twas brillig, and the slithy toves Did gyre and gimble in the wabe; -All mimsy were the borogoves, And the mome raths outgrabe.</p> -</blockquote> -<h4 data-number="2.2.1.27" id="option-hashenumerators"><span -class="header-section-number">2.2.1.27</span> Option +<p>See also the option +<strong><code>autoIdentifiers</code></strong>.</p> +<h4 data-number="2.2.1.31" id="option-hashenumerators"><span +class="header-section-number">2.2.1.31</span> Option <code>hashEnumerators</code></h4> <dl> <dt><code>hashEnumerators</code> (default value: @@ -3705,10 +4254,10 @@ class="header-section-number">2.2.1.27</span> Option <dd> <p>Enable the use of hash symbols (<code>#</code>) as ordered item list markers:</p> -<div class="sourceCode" id="cb233"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb233-1"><a href="#cb233-1" aria-hidden="true" tabindex="-1"></a>#. Bird</span> -<span id="cb233-2"><a href="#cb233-2" aria-hidden="true" tabindex="-1"></a>#. McHale</span> -<span id="cb233-3"><a href="#cb233-3" aria-hidden="true" tabindex="-1"></a>#. Parish</span></code></pre></div> +<div class="sourceCode" id="cb261"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb261-1"><a href="#cb261-1" aria-hidden="true" tabindex="-1"></a>#. Bird</span> +<span id="cb261-2"><a href="#cb261-2" aria-hidden="true" tabindex="-1"></a>#. McHale</span> +<span id="cb261-3"><a href="#cb261-3" aria-hidden="true" tabindex="-1"></a>#. Parish</span></code></pre></div> </dd> </dl> </dd> @@ -3722,31 +4271,31 @@ markers.</p> </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-23"><span +<h5 class="unnumbered" id="latex-example-24"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb234"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb234-1"><a href="#cb234-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb234-2"><a href="#cb234-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb234-3"><a href="#cb234-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb234-4"><a href="#cb234-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb234-5"><a href="#cb234-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb234-6"><a href="#cb234-6" aria-hidden="true" tabindex="-1"></a>#. Bird</span> -<span id="cb234-7"><a href="#cb234-7" aria-hidden="true" tabindex="-1"></a>#. McHale</span> -<span id="cb234-8"><a href="#cb234-8" aria-hidden="true" tabindex="-1"></a>#. Parish</span> -<span id="cb234-9"><a href="#cb234-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb234-10"><a href="#cb234-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb234-11"><a href="#cb234-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{hashEnumerators}</span> -<span id="cb234-12"><a href="#cb234-12" aria-hidden="true" tabindex="-1"></a>#. Bird</span> -<span id="cb234-13"><a href="#cb234-13" aria-hidden="true" tabindex="-1"></a>#. McHale</span> -<span id="cb234-14"><a href="#cb234-14" aria-hidden="true" tabindex="-1"></a>#. Parish</span> -<span id="cb234-15"><a href="#cb234-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb234-16"><a href="#cb234-16" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb234-17"><a href="#cb234-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb262"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb262-1"><a href="#cb262-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb262-2"><a href="#cb262-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb262-3"><a href="#cb262-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb262-4"><a href="#cb262-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb262-5"><a href="#cb262-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb262-6"><a href="#cb262-6" aria-hidden="true" tabindex="-1"></a>#. Bird</span> +<span id="cb262-7"><a href="#cb262-7" aria-hidden="true" tabindex="-1"></a>#. McHale</span> +<span id="cb262-8"><a href="#cb262-8" aria-hidden="true" tabindex="-1"></a>#. Parish</span> +<span id="cb262-9"><a href="#cb262-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb262-10"><a href="#cb262-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb262-11"><a href="#cb262-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[hashEnumerators]</span> +<span id="cb262-12"><a href="#cb262-12" aria-hidden="true" tabindex="-1"></a>#. Bird</span> +<span id="cb262-13"><a href="#cb262-13" aria-hidden="true" tabindex="-1"></a>#. McHale</span> +<span id="cb262-14"><a href="#cb262-14" aria-hidden="true" tabindex="-1"></a>#. Parish</span> +<span id="cb262-15"><a href="#cb262-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb262-16"><a href="#cb262-16" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb262-17"><a href="#cb262-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb235"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb235-1"><a href="#cb235-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb263"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb263-1"><a href="#cb263-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -3759,31 +4308,31 @@ contain the following text:</p> <li>Parish</li> </ol> </blockquote> -<h5 class="unnumbered" id="context-example-13">Con<span +<h5 class="unnumbered" id="context-example-15">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb236"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb236-1"><a href="#cb236-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb236-2"><a href="#cb236-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb236-3"><a href="#cb236-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb236-4"><a href="#cb236-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb236-5"><a href="#cb236-5" aria-hidden="true" tabindex="-1"></a>#. Bird</span> -<span id="cb236-6"><a href="#cb236-6" aria-hidden="true" tabindex="-1"></a>#. McHale</span> -<span id="cb236-7"><a href="#cb236-7" aria-hidden="true" tabindex="-1"></a>#. Parish</span> -<span id="cb236-8"><a href="#cb236-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb236-9"><a href="#cb236-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb236-10"><a href="#cb236-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hashEnumerators = yes]</span> -<span id="cb236-11"><a href="#cb236-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb236-12"><a href="#cb236-12" aria-hidden="true" tabindex="-1"></a>#. Bird</span> -<span id="cb236-13"><a href="#cb236-13" aria-hidden="true" tabindex="-1"></a>#. McHale</span> -<span id="cb236-14"><a href="#cb236-14" aria-hidden="true" tabindex="-1"></a>#. Parish</span> -<span id="cb236-15"><a href="#cb236-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb236-16"><a href="#cb236-16" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb236-17"><a href="#cb236-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb264"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb264-1"><a href="#cb264-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb264-2"><a href="#cb264-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb264-3"><a href="#cb264-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb264-4"><a href="#cb264-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb264-5"><a href="#cb264-5" aria-hidden="true" tabindex="-1"></a>#. Bird</span> +<span id="cb264-6"><a href="#cb264-6" aria-hidden="true" tabindex="-1"></a>#. McHale</span> +<span id="cb264-7"><a href="#cb264-7" aria-hidden="true" tabindex="-1"></a>#. Parish</span> +<span id="cb264-8"><a href="#cb264-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb264-9"><a href="#cb264-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb264-10"><a href="#cb264-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hashEnumerators = yes]</span> +<span id="cb264-11"><a href="#cb264-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb264-12"><a href="#cb264-12" aria-hidden="true" tabindex="-1"></a>#. Bird</span> +<span id="cb264-13"><a href="#cb264-13" aria-hidden="true" tabindex="-1"></a>#. McHale</span> +<span id="cb264-14"><a href="#cb264-14" aria-hidden="true" tabindex="-1"></a>#. Parish</span> +<span id="cb264-15"><a href="#cb264-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb264-16"><a href="#cb264-16" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb264-17"><a href="#cb264-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb237"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb237-1"><a href="#cb237-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb265"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb265-1"><a href="#cb265-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -3796,8 +4345,8 @@ contain the following text:</p> <li>Parish</li> </ol> </blockquote> -<h4 data-number="2.2.1.28" id="header-attributes"><span -class="header-section-number">2.2.1.28</span> Option +<h4 data-number="2.2.1.32" id="header-attributes"><span +class="header-section-number">2.2.1.32</span> Option <code>headerAttributes</code></h4> <dl> <dt><code>headerAttributes</code> (default value: @@ -3807,13 +4356,13 @@ class="header-section-number">2.2.1.28</span> Option <dt>true</dt> <dd> <p>Enable the assignment of HTML attributes to headings:</p> -<div class="sourceCode" id="cb238"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb238-1"><a href="#cb238-1" aria-hidden="true" tabindex="-1"></a><span class="fu"># My first heading {#foo}</span></span> -<span id="cb238-2"><a href="#cb238-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb238-3"><a href="#cb238-3" aria-hidden="true" tabindex="-1"></a><span class="fu">## My second heading ## {#bar .baz}</span></span> -<span id="cb238-4"><a href="#cb238-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb238-5"><a href="#cb238-5" aria-hidden="true" tabindex="-1"></a>Yet another heading {key=value}</span> -<span id="cb238-6"><a href="#cb238-6" aria-hidden="true" tabindex="-1"></a><span class="fu">===================</span></span></code></pre></div> +<div class="sourceCode" id="cb266"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb266-1"><a href="#cb266-1" aria-hidden="true" tabindex="-1"></a><span class="fu"># My first heading {#foo}</span></span> +<span id="cb266-2"><a href="#cb266-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb266-3"><a href="#cb266-3" aria-hidden="true" tabindex="-1"></a><span class="fu">## My second heading ## {#bar .baz}</span></span> +<span id="cb266-4"><a href="#cb266-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb266-5"><a href="#cb266-5" aria-hidden="true" tabindex="-1"></a>Yet another heading {key=value}</span> +<span id="cb266-6"><a href="#cb266-6" aria-hidden="true" tabindex="-1"></a><span class="fu">===================</span></span></code></pre></div> </dd> </dl> </dd> @@ -3826,11 +4375,11 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb238-1"><a hr </dl> </dd> </dl> -<h4 data-number="2.2.1.29" id="option-html"><span -class="header-section-number">2.2.1.29</span> Option +<h4 data-number="2.2.1.33" id="option-html"><span +class="header-section-number">2.2.1.33</span> Option <code>html</code></h4> <dl> -<dt><code>html</code> (default value: <code>false</code>)</dt> +<dt><code>html</code> (default value: <code>true</code>)</dt> <dd> <dl> <dt>true</dt> @@ -3853,36 +4402,41 @@ will be rendered as plain text.</p> </dl> </dd> </dl> -<h5 class="unnumbered" id="lua-module-example-9">Lua Module Example</h5> +<h5 class="unnumbered" id="lua-module-example-10">Lua Module +Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb239"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb239-1"><a href="#cb239-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb239-2"><a href="#cb239-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb239-3"><a href="#cb239-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> -<span id="cb239-4"><a href="#cb239-4" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> -<span id="cb239-5"><a href="#cb239-5" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new()</span> -<span id="cb239-6"><a href="#cb239-6" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span> -<span id="cb239-7"><a href="#cb239-7" aria-hidden="true" tabindex="-1"></a> local input =</span> -<span id="cb239-8"><a href="#cb239-8" aria-hidden="true" tabindex="-1"></a> "<div>*There is no block tag support.*</div>" .. newline ..</span> -<span id="cb239-9"><a href="#cb239-9" aria-hidden="true" tabindex="-1"></a> "*There is no <inline tag="tag"></inline> support.*" .. newline ..</span> -<span id="cb239-10"><a href="#cb239-10" aria-hidden="true" tabindex="-1"></a> "_There is no <!-- comment --> support._" .. newline ..</span> -<span id="cb239-11"><a href="#cb239-11" aria-hidden="true" tabindex="-1"></a> "_There is no <? HTML instruction ?> support._"</span> -<span id="cb239-12"><a href="#cb239-12" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> -<span id="cb239-13"><a href="#cb239-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> -<span id="cb239-14"><a href="#cb239-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> -<span id="cb239-15"><a href="#cb239-15" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> -<span id="cb239-16"><a href="#cb239-16" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({html = true})</span> -<span id="cb239-17"><a href="#cb239-17" aria-hidden="true" tabindex="-1"></a> local input =</span> -<span id="cb239-18"><a href="#cb239-18" aria-hidden="true" tabindex="-1"></a> "<div>*There is block tag support.*</div>" .. newline ..</span> -<span id="cb239-19"><a href="#cb239-19" aria-hidden="true" tabindex="-1"></a> "*There is <inline tag="tag"></inline> support.*" .. newline ..</span> -<span id="cb239-20"><a href="#cb239-20" aria-hidden="true" tabindex="-1"></a> "_There is <!-- comment --> support._" .. newline ..</span> -<span id="cb239-21"><a href="#cb239-21" aria-hidden="true" tabindex="-1"></a> "_There is <? HTML instruction ?> support._"</span> -<span id="cb239-22"><a href="#cb239-22" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> -<span id="cb239-23"><a href="#cb239-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb267"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb267-1"><a href="#cb267-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb267-2"><a href="#cb267-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb267-3"><a href="#cb267-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb267-4"><a href="#cb267-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb267-5"><a href="#cb267-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb267-6"><a href="#cb267-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb267-7"><a href="#cb267-7" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb267-8"><a href="#cb267-8" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({html = false})</span> +<span id="cb267-9"><a href="#cb267-9" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span> +<span id="cb267-10"><a href="#cb267-10" aria-hidden="true" tabindex="-1"></a> local input =</span> +<span id="cb267-11"><a href="#cb267-11" aria-hidden="true" tabindex="-1"></a> "<div>*There is no block tag support.*</div>" .. newline ..</span> +<span id="cb267-12"><a href="#cb267-12" aria-hidden="true" tabindex="-1"></a> "*There is no <inline tag="tag"></inline> support.*" .. newline ..</span> +<span id="cb267-13"><a href="#cb267-13" aria-hidden="true" tabindex="-1"></a> "_There is no <!-- comment --> support._" .. newline ..</span> +<span id="cb267-14"><a href="#cb267-14" aria-hidden="true" tabindex="-1"></a> "_There is no <? HTML instruction ?> support._"</span> +<span id="cb267-15"><a href="#cb267-15" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> +<span id="cb267-16"><a href="#cb267-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> +<span id="cb267-17"><a href="#cb267-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb267-18"><a href="#cb267-18" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb267-19"><a href="#cb267-19" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new()</span> +<span id="cb267-20"><a href="#cb267-20" aria-hidden="true" tabindex="-1"></a> local input =</span> +<span id="cb267-21"><a href="#cb267-21" aria-hidden="true" tabindex="-1"></a> "<div>*There is block tag support.*</div>" .. newline ..</span> +<span id="cb267-22"><a href="#cb267-22" aria-hidden="true" tabindex="-1"></a> "*There is <inline tag="tag"></inline> support.*" .. newline ..</span> +<span id="cb267-23"><a href="#cb267-23" aria-hidden="true" tabindex="-1"></a> "_There is <!-- comment --> support._" .. newline ..</span> +<span id="cb267-24"><a href="#cb267-24" aria-hidden="true" tabindex="-1"></a> "_There is <? HTML instruction ?> support._"</span> +<span id="cb267-25"><a href="#cb267-25" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> +<span id="cb267-26"><a href="#cb267-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb267-27"><a href="#cb267-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Then, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb240"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb240-1"><a href="#cb240-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb268"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb268-1"><a href="#cb268-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -3892,30 +4446,34 @@ comment –> support. There is no <? HTML instruction ?> support.</p> <p>There is support. There is support. There is support.</p> </blockquote> -<h5 class="unnumbered" id="lua-cli-example-7">Lua CLI Example</h5> +<h5 class="unnumbered" id="lua-cli-example-9">Lua CLI Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb241"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb241-1"><a href="#cb241-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb241-2"><a href="#cb241-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb241-3"><a href="#cb241-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> -<span id="cb241-4"><a href="#cb241-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> -<span id="cb241-5"><a href="#cb241-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> -<span id="cb241-6"><a href="#cb241-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb269"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb269-1"><a href="#cb269-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb269-2"><a href="#cb269-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb269-3"><a href="#cb269-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb269-4"><a href="#cb269-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb269-5"><a href="#cb269-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb269-6"><a href="#cb269-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> +<span id="cb269-7"><a href="#cb269-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> +<span id="cb269-8"><a href="#cb269-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> +<span id="cb269-9"><a href="#cb269-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb269-10"><a href="#cb269-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Using a text editor, create a text document named <code>content.md</code> with the following content:</p> -<div class="sourceCode" id="cb242"><pre -class="sourceCode html"><code class="sourceCode html"><span id="cb242-1"><a href="#cb242-1" aria-hidden="true" tabindex="-1"></a><span class="kw"><div></span></span> -<span id="cb242-2"><a href="#cb242-2" aria-hidden="true" tabindex="-1"></a>*Is there block tag support?*</span> -<span id="cb242-3"><a href="#cb242-3" aria-hidden="true" tabindex="-1"></a><span class="kw"></div></span></span> -<span id="cb242-4"><a href="#cb242-4" aria-hidden="true" tabindex="-1"></a>*Is there <span class="kw"><inline</span> <span class="er">tag</span><span class="ot">=</span><span class="st">"tag"</span><span class="kw">></inline></span> support?*</span> -<span id="cb242-5"><a href="#cb242-5" aria-hidden="true" tabindex="-1"></a>_Is there <span class="co"><!-- comment --></span> support?_</span> -<span id="cb242-6"><a href="#cb242-6" aria-hidden="true" tabindex="-1"></a>_Is there <span class="kw"><?</span> HTML instruction <span class="kw">?></span> support?_</span></code></pre></div> +<div class="sourceCode" id="cb270"><pre +class="sourceCode html"><code class="sourceCode html"><span id="cb270-1"><a href="#cb270-1" aria-hidden="true" tabindex="-1"></a><span class="dt"><</span><span class="kw">div</span><span class="dt">></span></span> +<span id="cb270-2"><a href="#cb270-2" aria-hidden="true" tabindex="-1"></a>*Is there block tag support?*</span> +<span id="cb270-3"><a href="#cb270-3" aria-hidden="true" tabindex="-1"></a><span class="dt"></</span><span class="kw">div</span><span class="dt">></span></span> +<span id="cb270-4"><a href="#cb270-4" aria-hidden="true" tabindex="-1"></a>*Is there <span class="dt"><</span><span class="kw">inline</span> <span class="er">tag</span><span class="ot">=</span><span class="st">"tag"</span><span class="dt">></</span><span class="kw">inline</span><span class="dt">></span> support?*</span> +<span id="cb270-5"><a href="#cb270-5" aria-hidden="true" tabindex="-1"></a>_Is there <span class="co"><!-- comment --></span> support?_</span> +<span id="cb270-6"><a href="#cb270-6" aria-hidden="true" tabindex="-1"></a>_Is there <span class="kw"><?</span> HTML instruction <span class="kw">?></span> support?_</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb243"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb243-1"><a href="#cb243-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span> -<span id="cb243-2"><a href="#cb243-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ html=true <span class="at">--</span> content.md optiontrue.tex</span> -<span id="cb243-3"><a href="#cb243-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb271"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb271-1"><a href="#cb271-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ html=false <span class="at">--</span> content.md optionfalse.tex</span> +<span id="cb271-2"><a href="#cb271-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optiontrue.tex</span> +<span id="cb271-3"><a href="#cb271-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua CLI script file, such as <code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems @@ -3933,37 +4491,38 @@ contain the following text:</p> –> support? Is there <? HTML instruction ?> support?</p> <p>Is there support? Is there support? Is there support?</p> </blockquote> -<h5 class="unnumbered" id="plain-tex-example-8">Plain <span +<h5 class="unnumbered" id="plain-tex-example-10">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb244"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb244-1"><a href="#cb244-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb244-2"><a href="#cb244-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb244-3"><a href="#cb244-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb244-4"><a href="#cb244-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb244-5"><a href="#cb244-5" aria-hidden="true" tabindex="-1"></a><div></span> -<span id="cb244-6"><a href="#cb244-6" aria-hidden="true" tabindex="-1"></a>*There is no block tag support.*</span> -<span id="cb244-7"><a href="#cb244-7" aria-hidden="true" tabindex="-1"></a></div></span> -<span id="cb244-8"><a href="#cb244-8" aria-hidden="true" tabindex="-1"></a>*There is no <inline tag="tag"></inline> support.*</span> -<span id="cb244-9"><a href="#cb244-9" aria-hidden="true" tabindex="-1"></a>_There is no <!-- comment --> support._</span> -<span id="cb244-10"><a href="#cb244-10" aria-hidden="true" tabindex="-1"></a>_There is no <? HTML instruction ?> support._</span> -<span id="cb244-11"><a href="#cb244-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb244-12"><a href="#cb244-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb244-13"><a href="#cb244-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHtml</span>{true}</span> -<span id="cb244-14"><a href="#cb244-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb244-15"><a href="#cb244-15" aria-hidden="true" tabindex="-1"></a><div></span> -<span id="cb244-16"><a href="#cb244-16" aria-hidden="true" tabindex="-1"></a>*There is block tag support.*</span> -<span id="cb244-17"><a href="#cb244-17" aria-hidden="true" tabindex="-1"></a></div></span> -<span id="cb244-18"><a href="#cb244-18" aria-hidden="true" tabindex="-1"></a>*There is <inline tag="tag"></inline> support.*</span> -<span id="cb244-19"><a href="#cb244-19" aria-hidden="true" tabindex="-1"></a>_There is <!-- comment --> support._</span> -<span id="cb244-20"><a href="#cb244-20" aria-hidden="true" tabindex="-1"></a>_There is <? HTML instruction ?> support._</span> -<span id="cb244-21"><a href="#cb244-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb244-22"><a href="#cb244-22" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb244-23"><a href="#cb244-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb272"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb272-1"><a href="#cb272-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb272-2"><a href="#cb272-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb272-3"><a href="#cb272-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb272-4"><a href="#cb272-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHtml</span>{false}</span> +<span id="cb272-5"><a href="#cb272-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb272-6"><a href="#cb272-6" aria-hidden="true" tabindex="-1"></a><div></span> +<span id="cb272-7"><a href="#cb272-7" aria-hidden="true" tabindex="-1"></a>*There is no block tag support.*</span> +<span id="cb272-8"><a href="#cb272-8" aria-hidden="true" tabindex="-1"></a></div></span> +<span id="cb272-9"><a href="#cb272-9" aria-hidden="true" tabindex="-1"></a>*There is no <inline tag="tag"></inline> support.*</span> +<span id="cb272-10"><a href="#cb272-10" aria-hidden="true" tabindex="-1"></a>_There is no <!-- comment --> support._</span> +<span id="cb272-11"><a href="#cb272-11" aria-hidden="true" tabindex="-1"></a>_There is no <? HTML instruction ?> support._</span> +<span id="cb272-12"><a href="#cb272-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb272-13"><a href="#cb272-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb272-14"><a href="#cb272-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHtml</span>{true}</span> +<span id="cb272-15"><a href="#cb272-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb272-16"><a href="#cb272-16" aria-hidden="true" tabindex="-1"></a><div></span> +<span id="cb272-17"><a href="#cb272-17" aria-hidden="true" tabindex="-1"></a>*There is block tag support.*</span> +<span id="cb272-18"><a href="#cb272-18" aria-hidden="true" tabindex="-1"></a></div></span> +<span id="cb272-19"><a href="#cb272-19" aria-hidden="true" tabindex="-1"></a>*There is <inline tag="tag"></inline> support.*</span> +<span id="cb272-20"><a href="#cb272-20" aria-hidden="true" tabindex="-1"></a>_There is <!-- comment --> support._</span> +<span id="cb272-21"><a href="#cb272-21" aria-hidden="true" tabindex="-1"></a>_There is <? HTML instruction ?> support._</span> +<span id="cb272-22"><a href="#cb272-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb272-23"><a href="#cb272-23" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb272-24"><a href="#cb272-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb245"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb245-1"><a href="#cb245-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb273"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb273-1"><a href="#cb273-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -3973,37 +4532,37 @@ comment –> support. There is no <? HTML instruction ?> support.</p> <p>There is support. There is support. There is support.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-24"><span +<h5 class="unnumbered" id="latex-example-25"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb246"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb246-1"><a href="#cb246-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb246-2"><a href="#cb246-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb246-3"><a href="#cb246-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb246-4"><a href="#cb246-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb246-5"><a href="#cb246-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb246-6"><a href="#cb246-6" aria-hidden="true" tabindex="-1"></a><div></span> -<span id="cb246-7"><a href="#cb246-7" aria-hidden="true" tabindex="-1"></a>*There is no block tag support.*</span> -<span id="cb246-8"><a href="#cb246-8" aria-hidden="true" tabindex="-1"></a></div></span> -<span id="cb246-9"><a href="#cb246-9" aria-hidden="true" tabindex="-1"></a>*There is no <inline tag="tag"></inline> support.*</span> -<span id="cb246-10"><a href="#cb246-10" aria-hidden="true" tabindex="-1"></a>_There is no <!-- comment --> support._</span> -<span id="cb246-11"><a href="#cb246-11" aria-hidden="true" tabindex="-1"></a>_There is no <? HTML instruction ?> support._</span> -<span id="cb246-12"><a href="#cb246-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb246-13"><a href="#cb246-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb246-14"><a href="#cb246-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{html}</span> -<span id="cb246-15"><a href="#cb246-15" aria-hidden="true" tabindex="-1"></a><div></span> -<span id="cb246-16"><a href="#cb246-16" aria-hidden="true" tabindex="-1"></a>*There is block tag support.*</span> -<span id="cb246-17"><a href="#cb246-17" aria-hidden="true" tabindex="-1"></a></div></span> -<span id="cb246-18"><a href="#cb246-18" aria-hidden="true" tabindex="-1"></a>*There is <inline tag="tag"></inline> support.*</span> -<span id="cb246-19"><a href="#cb246-19" aria-hidden="true" tabindex="-1"></a>_There is <!-- comment --> support._</span> -<span id="cb246-20"><a href="#cb246-20" aria-hidden="true" tabindex="-1"></a>_There is <? HTML instruction ?> support._</span> -<span id="cb246-21"><a href="#cb246-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb246-22"><a href="#cb246-22" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb246-23"><a href="#cb246-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb274"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb274-1"><a href="#cb274-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb274-2"><a href="#cb274-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb274-3"><a href="#cb274-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb274-4"><a href="#cb274-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb274-5"><a href="#cb274-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[html = false]</span> +<span id="cb274-6"><a href="#cb274-6" aria-hidden="true" tabindex="-1"></a><div></span> +<span id="cb274-7"><a href="#cb274-7" aria-hidden="true" tabindex="-1"></a>*There is no block tag support.*</span> +<span id="cb274-8"><a href="#cb274-8" aria-hidden="true" tabindex="-1"></a></div></span> +<span id="cb274-9"><a href="#cb274-9" aria-hidden="true" tabindex="-1"></a>*There is no <inline tag="tag"></inline> support.*</span> +<span id="cb274-10"><a href="#cb274-10" aria-hidden="true" tabindex="-1"></a>_There is no <!-- comment --> support._</span> +<span id="cb274-11"><a href="#cb274-11" aria-hidden="true" tabindex="-1"></a>_There is no <? HTML instruction ?> support._</span> +<span id="cb274-12"><a href="#cb274-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb274-13"><a href="#cb274-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb274-14"><a href="#cb274-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb274-15"><a href="#cb274-15" aria-hidden="true" tabindex="-1"></a><div></span> +<span id="cb274-16"><a href="#cb274-16" aria-hidden="true" tabindex="-1"></a>*There is block tag support.*</span> +<span id="cb274-17"><a href="#cb274-17" aria-hidden="true" tabindex="-1"></a></div></span> +<span id="cb274-18"><a href="#cb274-18" aria-hidden="true" tabindex="-1"></a>*There is <inline tag="tag"></inline> support.*</span> +<span id="cb274-19"><a href="#cb274-19" aria-hidden="true" tabindex="-1"></a>_There is <!-- comment --> support._</span> +<span id="cb274-20"><a href="#cb274-20" aria-hidden="true" tabindex="-1"></a>_There is <? HTML instruction ?> support._</span> +<span id="cb274-21"><a href="#cb274-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb274-22"><a href="#cb274-22" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb274-23"><a href="#cb274-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb247"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb247-1"><a href="#cb247-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb275"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb275-1"><a href="#cb275-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -4013,37 +4572,38 @@ comment –> support. There is no <? HTML instruction ?> support.</p> <p>There is support. There is support. There is support.</p> </blockquote> -<h5 class="unnumbered" id="context-example-14">Con<span +<h5 class="unnumbered" id="context-example-16">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb248"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb248-1"><a href="#cb248-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb248-2"><a href="#cb248-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb248-3"><a href="#cb248-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb248-4"><a href="#cb248-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb248-5"><a href="#cb248-5" aria-hidden="true" tabindex="-1"></a><div></span> -<span id="cb248-6"><a href="#cb248-6" aria-hidden="true" tabindex="-1"></a>*There is no block tag support.*</span> -<span id="cb248-7"><a href="#cb248-7" aria-hidden="true" tabindex="-1"></a></div></span> -<span id="cb248-8"><a href="#cb248-8" aria-hidden="true" tabindex="-1"></a>*There is no <inline tag="tag"></inline> support.*</span> -<span id="cb248-9"><a href="#cb248-9" aria-hidden="true" tabindex="-1"></a>_There is no <!-- comment --> support._</span> -<span id="cb248-10"><a href="#cb248-10" aria-hidden="true" tabindex="-1"></a>_There is no <? HTML instruction ?> support._</span> -<span id="cb248-11"><a href="#cb248-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb248-12"><a href="#cb248-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb248-13"><a href="#cb248-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[html = yes]</span> -<span id="cb248-14"><a href="#cb248-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb248-15"><a href="#cb248-15" aria-hidden="true" tabindex="-1"></a><div></span> -<span id="cb248-16"><a href="#cb248-16" aria-hidden="true" tabindex="-1"></a>*There is block tag support.*</span> -<span id="cb248-17"><a href="#cb248-17" aria-hidden="true" tabindex="-1"></a></div></span> -<span id="cb248-18"><a href="#cb248-18" aria-hidden="true" tabindex="-1"></a>*There is <inline tag="tag"></inline> support.*</span> -<span id="cb248-19"><a href="#cb248-19" aria-hidden="true" tabindex="-1"></a>_There is <!-- comment --> support._</span> -<span id="cb248-20"><a href="#cb248-20" aria-hidden="true" tabindex="-1"></a>_There is <? HTML instruction ?> support._</span> -<span id="cb248-21"><a href="#cb248-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb248-22"><a href="#cb248-22" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb248-23"><a href="#cb248-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb276"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb276-1"><a href="#cb276-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb276-2"><a href="#cb276-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb276-3"><a href="#cb276-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb276-4"><a href="#cb276-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[html = no]</span> +<span id="cb276-5"><a href="#cb276-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb276-6"><a href="#cb276-6" aria-hidden="true" tabindex="-1"></a><div></span> +<span id="cb276-7"><a href="#cb276-7" aria-hidden="true" tabindex="-1"></a>*There is no block tag support.*</span> +<span id="cb276-8"><a href="#cb276-8" aria-hidden="true" tabindex="-1"></a></div></span> +<span id="cb276-9"><a href="#cb276-9" aria-hidden="true" tabindex="-1"></a>*There is no <inline tag="tag"></inline> support.*</span> +<span id="cb276-10"><a href="#cb276-10" aria-hidden="true" tabindex="-1"></a>_There is no <!-- comment --> support._</span> +<span id="cb276-11"><a href="#cb276-11" aria-hidden="true" tabindex="-1"></a>_There is no <? HTML instruction ?> support._</span> +<span id="cb276-12"><a href="#cb276-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb276-13"><a href="#cb276-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb276-14"><a href="#cb276-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[html = yes]</span> +<span id="cb276-15"><a href="#cb276-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb276-16"><a href="#cb276-16" aria-hidden="true" tabindex="-1"></a><div></span> +<span id="cb276-17"><a href="#cb276-17" aria-hidden="true" tabindex="-1"></a>*There is block tag support.*</span> +<span id="cb276-18"><a href="#cb276-18" aria-hidden="true" tabindex="-1"></a></div></span> +<span id="cb276-19"><a href="#cb276-19" aria-hidden="true" tabindex="-1"></a>*There is <inline tag="tag"></inline> support.*</span> +<span id="cb276-20"><a href="#cb276-20" aria-hidden="true" tabindex="-1"></a>_There is <!-- comment --> support._</span> +<span id="cb276-21"><a href="#cb276-21" aria-hidden="true" tabindex="-1"></a>_There is <? HTML instruction ?> support._</span> +<span id="cb276-22"><a href="#cb276-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb276-23"><a href="#cb276-23" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb276-24"><a href="#cb276-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb249"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb249-1"><a href="#cb249-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb277"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb277-1"><a href="#cb277-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -4053,8 +4613,8 @@ comment –> support. There is no <? HTML instruction ?> support.</p> <p>There is support. There is support. There is support.</p> </blockquote> -<h4 data-number="2.2.1.30" id="option-hybrid"><span -class="header-section-number">2.2.1.30</span> Option +<h4 data-number="2.2.1.34" id="option-hybrid"><span +class="header-section-number">2.2.1.34</span> Option <code>hybrid</code></h4> <dl> <dt><code>hybrid</code> (default value: <code>false</code>)</dt> @@ -4086,31 +4646,35 @@ prepared with this package in mind.</p> </dl> </dd> </dl> -<h5 class="unnumbered" id="lua-module-example-10">Lua Module +<h5 class="unnumbered" id="lua-module-example-11">Lua Module Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb250"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb250-1"><a href="#cb250-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb250-2"><a href="#cb250-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb250-3"><a href="#cb250-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> -<span id="cb250-4"><a href="#cb250-4" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> -<span id="cb250-5"><a href="#cb250-5" aria-hidden="true" tabindex="-1"></a> local input, convert_safe, convert_unsafe, paragraph</span> -<span id="cb250-6"><a href="#cb250-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb250-7"><a href="#cb250-7" aria-hidden="true" tabindex="-1"></a> input = [[<span class="ss">$</span><span class="sc">\string\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.]]</span> -<span id="cb250-8"><a href="#cb250-8" aria-hidden="true" tabindex="-1"></a> convert_safe = markdown.new()</span> -<span id="cb250-9"><a href="#cb250-9" aria-hidden="true" tabindex="-1"></a> convert_unsafe = markdown.new({hybrid = true})</span> -<span id="cb250-10"><a href="#cb250-10" aria-hidden="true" tabindex="-1"></a> paragraph = [[<span class="fu">\par</span>]]</span> -<span id="cb250-11"><a href="#cb250-11" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb250-12"><a href="#cb250-12" aria-hidden="true" tabindex="-1"></a> tex.sprint(</span> -<span id="cb250-13"><a href="#cb250-13" aria-hidden="true" tabindex="-1"></a> convert_safe(input) .. paragraph ..</span> -<span id="cb250-14"><a href="#cb250-14" aria-hidden="true" tabindex="-1"></a> convert_unsafe(input)</span> -<span id="cb250-15"><a href="#cb250-15" aria-hidden="true" tabindex="-1"></a> )</span> -<span id="cb250-16"><a href="#cb250-16" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb250-17"><a href="#cb250-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb278"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb278-1"><a href="#cb278-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb278-2"><a href="#cb278-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb278-3"><a href="#cb278-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb278-4"><a href="#cb278-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb278-5"><a href="#cb278-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb278-6"><a href="#cb278-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb278-7"><a href="#cb278-7" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb278-8"><a href="#cb278-8" aria-hidden="true" tabindex="-1"></a> local input, convert_safe, convert_unsafe, paragraph</span> +<span id="cb278-9"><a href="#cb278-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb278-10"><a href="#cb278-10" aria-hidden="true" tabindex="-1"></a> input = [[<span class="ss">$</span><span class="sc">\string\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.]]</span> +<span id="cb278-11"><a href="#cb278-11" aria-hidden="true" tabindex="-1"></a> convert_safe = markdown.new()</span> +<span id="cb278-12"><a href="#cb278-12" aria-hidden="true" tabindex="-1"></a> convert_unsafe = markdown.new({hybrid = true})</span> +<span id="cb278-13"><a href="#cb278-13" aria-hidden="true" tabindex="-1"></a> paragraph = [[<span class="fu">\par</span>]]</span> +<span id="cb278-14"><a href="#cb278-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb278-15"><a href="#cb278-15" aria-hidden="true" tabindex="-1"></a> tex.sprint(</span> +<span id="cb278-16"><a href="#cb278-16" aria-hidden="true" tabindex="-1"></a> convert_safe(input) .. paragraph ..</span> +<span id="cb278-17"><a href="#cb278-17" aria-hidden="true" tabindex="-1"></a> convert_unsafe(input)</span> +<span id="cb278-18"><a href="#cb278-18" aria-hidden="true" tabindex="-1"></a> )</span> +<span id="cb278-19"><a href="#cb278-19" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb278-20"><a href="#cb278-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb278-21"><a href="#cb278-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Then, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb251"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb251-1"><a href="#cb251-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb279"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb279-1"><a href="#cb279-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -4118,28 +4682,29 @@ contain the following text:</p> <p><math><mroot><msqrt><mo>−</mo><mn>1</mn></msqrt></mroot></math> <em>equals</em> <math><mi>i</mi></math>.</p> </blockquote> -<h5 class="unnumbered" id="lua-cli-example-8">Lua CLI Example</h5> +<h5 class="unnumbered" id="lua-cli-example-10">Lua CLI Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb252"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb252-1"><a href="#cb252-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb252-2"><a href="#cb252-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb252-3"><a href="#cb252-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> -<span id="cb252-4"><a href="#cb252-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb252-5"><a href="#cb252-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> -<span id="cb252-6"><a href="#cb252-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> -<span id="cb252-7"><a href="#cb252-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> -<span id="cb252-8"><a href="#cb252-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> -<span id="cb252-9"><a href="#cb252-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb280"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb280-1"><a href="#cb280-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb280-2"><a href="#cb280-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb280-3"><a href="#cb280-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb280-4"><a href="#cb280-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb280-5"><a href="#cb280-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb280-6"><a href="#cb280-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> +<span id="cb280-7"><a href="#cb280-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> +<span id="cb280-8"><a href="#cb280-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> +<span id="cb280-9"><a href="#cb280-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb280-10"><a href="#cb280-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Using a text editor, create a text document named <code>content.md</code> with the following content:</p> -<div class="sourceCode" id="cb253"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb253-1"><a href="#cb253-1" aria-hidden="true" tabindex="-1"></a>$\sqrt{-1}$ *equals* $i$.</span></code></pre></div> +<div class="sourceCode" id="cb281"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb281-1"><a href="#cb281-1" aria-hidden="true" tabindex="-1"></a>$\sqrt{-1}$ *equals* $i$.</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb254"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb254-1"><a href="#cb254-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span> -<span id="cb254-2"><a href="#cb254-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ hybrid=true <span class="at">--</span> content.md optiontrue.tex</span> -<span id="cb254-3"><a href="#cb254-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb282"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb282-1"><a href="#cb282-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span> +<span id="cb282-2"><a href="#cb282-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ hybrid=true <span class="at">--</span> content.md optiontrue.tex</span> +<span id="cb282-3"><a href="#cb282-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua CLI script file, such as <code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems @@ -4156,27 +4721,27 @@ contain the following text:</p> <p><math><mroot><msqrt><mo>−</mo><mn>1</mn></msqrt></mroot></math> <em>equals</em> <math><mi>i</mi></math>.</p> </blockquote> -<h5 class="unnumbered" id="plain-tex-example-9">Plain <span +<h5 class="unnumbered" id="plain-tex-example-11">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb255"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb255-1"><a href="#cb255-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb255-2"><a href="#cb255-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb255-3"><a href="#cb255-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb255-4"><a href="#cb255-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb255-5"><a href="#cb255-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> -<span id="cb255-6"><a href="#cb255-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb255-7"><a href="#cb255-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb255-8"><a href="#cb255-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span> -<span id="cb255-9"><a href="#cb255-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb255-10"><a href="#cb255-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> -<span id="cb255-11"><a href="#cb255-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb255-12"><a href="#cb255-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb255-13"><a href="#cb255-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb283"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb283-1"><a href="#cb283-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb283-2"><a href="#cb283-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb283-3"><a href="#cb283-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb283-4"><a href="#cb283-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb283-5"><a href="#cb283-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> +<span id="cb283-6"><a href="#cb283-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb283-7"><a href="#cb283-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb283-8"><a href="#cb283-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span> +<span id="cb283-9"><a href="#cb283-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb283-10"><a href="#cb283-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> +<span id="cb283-11"><a href="#cb283-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb283-12"><a href="#cb283-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb283-13"><a href="#cb283-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb256"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb256-1"><a href="#cb256-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb284"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb284-1"><a href="#cb284-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -4184,27 +4749,27 @@ contain the following text:</p> <p><math><mroot><msqrt><mo>−</mo><mn>1</mn></msqrt></mroot></math> <em>equals</em> <math><mi>i</mi></math>.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-25"><span +<h5 class="unnumbered" id="latex-example-26"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb257"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb257-1"><a href="#cb257-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb257-2"><a href="#cb257-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb257-3"><a href="#cb257-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb257-4"><a href="#cb257-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb257-5"><a href="#cb257-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb257-6"><a href="#cb257-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> -<span id="cb257-7"><a href="#cb257-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb257-8"><a href="#cb257-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb257-9"><a href="#cb257-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{hybrid}</span> -<span id="cb257-10"><a href="#cb257-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> -<span id="cb257-11"><a href="#cb257-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb257-12"><a href="#cb257-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb257-13"><a href="#cb257-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb285"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb285-1"><a href="#cb285-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb285-2"><a href="#cb285-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb285-3"><a href="#cb285-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb285-4"><a href="#cb285-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb285-5"><a href="#cb285-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb285-6"><a href="#cb285-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> +<span id="cb285-7"><a href="#cb285-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb285-8"><a href="#cb285-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb285-9"><a href="#cb285-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[hybrid]</span> +<span id="cb285-10"><a href="#cb285-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> +<span id="cb285-11"><a href="#cb285-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb285-12"><a href="#cb285-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb285-13"><a href="#cb285-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb258"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb258-1"><a href="#cb258-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb286"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb286-1"><a href="#cb286-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -4212,27 +4777,27 @@ contain the following text:</p> <p><math><mroot><msqrt><mo>−</mo><mn>1</mn></msqrt></mroot></math> <em>equals</em> <math><mi>i</mi></math>.</p> </blockquote> -<h5 class="unnumbered" id="context-example-15">Con<span +<h5 class="unnumbered" id="context-example-17">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb259"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb259-1"><a href="#cb259-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb259-2"><a href="#cb259-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb259-3"><a href="#cb259-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb259-4"><a href="#cb259-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb259-5"><a href="#cb259-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> -<span id="cb259-6"><a href="#cb259-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb259-7"><a href="#cb259-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb259-8"><a href="#cb259-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span> -<span id="cb259-9"><a href="#cb259-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb259-10"><a href="#cb259-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> -<span id="cb259-11"><a href="#cb259-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb259-12"><a href="#cb259-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb259-13"><a href="#cb259-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb287"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb287-1"><a href="#cb287-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb287-2"><a href="#cb287-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb287-3"><a href="#cb287-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb287-4"><a href="#cb287-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb287-5"><a href="#cb287-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> +<span id="cb287-6"><a href="#cb287-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb287-7"><a href="#cb287-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb287-8"><a href="#cb287-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span> +<span id="cb287-9"><a href="#cb287-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb287-10"><a href="#cb287-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span> +<span id="cb287-11"><a href="#cb287-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb287-12"><a href="#cb287-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb287-13"><a href="#cb287-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb260"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb260-1"><a href="#cb260-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb288"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb288-1"><a href="#cb288-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -4240,8 +4805,8 @@ contain the following text:</p> <p><math><mroot><msqrt><mo>−</mo><mn>1</mn></msqrt></mroot></math> <em>equals</em> <math><mi>i</mi></math>.</p> </blockquote> -<h4 data-number="2.2.1.31" id="option-inlinecodeattributes"><span -class="header-section-number">2.2.1.31</span> Option +<h4 data-number="2.2.1.35" id="option-inlinecodeattributes"><span +class="header-section-number">2.2.1.35</span> Option <code>inlineCodeAttributes</code></h4> <dl> <dt><code>inlineCodeAttributes</code> (default value: @@ -4253,8 +4818,8 @@ class="header-section-number">2.2.1.31</span> Option <p>Enable the Pandoc <a href="https://pandoc.org/MANUAL.html#extension-inline_code_attributes">inline code span attribute extension</a>:</p> -<div class="sourceCode" id="cb261"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb261-1"><a href="#cb261-1" aria-hidden="true" tabindex="-1"></a><span class="in">`<$>`</span>{.haskell}</span></code></pre></div> +<div class="sourceCode" id="cb289"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb289-1"><a href="#cb289-1" aria-hidden="true" tabindex="-1"></a><span class="in">`<$>`</span>{.haskell}</span></code></pre></div> </dd> </dl> </dd> @@ -4267,56 +4832,56 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb261-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-26"><span +<h5 class="unnumbered" id="latex-example-27"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb262"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb262-1"><a href="#cb262-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb262-2"><a href="#cb262-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[inlineCodeAttributes]{<span class="ex">markdown</span>}</span> -<span id="cb262-3"><a href="#cb262-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span> -<span id="cb262-4"><a href="#cb262-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span> -<span id="cb262-5"><a href="#cb262-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb262-6"><a href="#cb262-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb262-7"><a href="#cb262-7" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextBegin = {</span> -<span id="cb262-8"><a href="#cb262-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span> -<span id="cb262-9"><a href="#cb262-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_begin:</span> -<span id="cb262-10"><a href="#cb262-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span> -<span id="cb262-11"><a href="#cb262-11" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb262-12"><a href="#cb262-12" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {</span> -<span id="cb262-13"><a href="#cb262-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\str</span>_if_eq:nnT</span> -<span id="cb262-14"><a href="#cb262-14" aria-hidden="true" tabindex="-1"></a> { ##1 }</span> -<span id="cb262-15"><a href="#cb262-15" aria-hidden="true" tabindex="-1"></a> { color }</span> -<span id="cb262-16"><a href="#cb262-16" aria-hidden="true" tabindex="-1"></a> {</span> -<span id="cb262-17"><a href="#cb262-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_select:n { ##2 }</span> -<span id="cb262-18"><a href="#cb262-18" aria-hidden="true" tabindex="-1"></a> }</span> -<span id="cb262-19"><a href="#cb262-19" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb262-20"><a href="#cb262-20" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb262-21"><a href="#cb262-21" aria-hidden="true" tabindex="-1"></a> }</span> -<span id="cb262-22"><a href="#cb262-22" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb262-23"><a href="#cb262-23" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextEnd = {</span> -<span id="cb262-24"><a href="#cb262-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_end:</span> -<span id="cb262-25"><a href="#cb262-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span> -<span id="cb262-26"><a href="#cb262-26" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb262-27"><a href="#cb262-27" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb262-28"><a href="#cb262-28" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb262-29"><a href="#cb262-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span> -<span id="cb262-30"><a href="#cb262-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb262-31"><a href="#cb262-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb262-32"><a href="#cb262-32" aria-hidden="true" tabindex="-1"></a>Here is some `colored text`{color=red}.</span> -<span id="cb262-33"><a href="#cb262-33" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb262-34"><a href="#cb262-34" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb290"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb290-1"><a href="#cb290-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb290-2"><a href="#cb290-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[inlineCodeAttributes]{<span class="ex">markdown</span>}</span> +<span id="cb290-3"><a href="#cb290-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span> +<span id="cb290-4"><a href="#cb290-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span> +<span id="cb290-5"><a href="#cb290-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb290-6"><a href="#cb290-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb290-7"><a href="#cb290-7" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextBegin = {</span> +<span id="cb290-8"><a href="#cb290-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span> +<span id="cb290-9"><a href="#cb290-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_begin:</span> +<span id="cb290-10"><a href="#cb290-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span> +<span id="cb290-11"><a href="#cb290-11" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb290-12"><a href="#cb290-12" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {</span> +<span id="cb290-13"><a href="#cb290-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\str</span>_if_eq:nnT</span> +<span id="cb290-14"><a href="#cb290-14" aria-hidden="true" tabindex="-1"></a> { ##1 }</span> +<span id="cb290-15"><a href="#cb290-15" aria-hidden="true" tabindex="-1"></a> { color }</span> +<span id="cb290-16"><a href="#cb290-16" aria-hidden="true" tabindex="-1"></a> {</span> +<span id="cb290-17"><a href="#cb290-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_select:n { ##2 }</span> +<span id="cb290-18"><a href="#cb290-18" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb290-19"><a href="#cb290-19" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb290-20"><a href="#cb290-20" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb290-21"><a href="#cb290-21" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb290-22"><a href="#cb290-22" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb290-23"><a href="#cb290-23" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextEnd = {</span> +<span id="cb290-24"><a href="#cb290-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_end:</span> +<span id="cb290-25"><a href="#cb290-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span> +<span id="cb290-26"><a href="#cb290-26" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb290-27"><a href="#cb290-27" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb290-28"><a href="#cb290-28" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb290-29"><a href="#cb290-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span> +<span id="cb290-30"><a href="#cb290-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb290-31"><a href="#cb290-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb290-32"><a href="#cb290-32" aria-hidden="true" tabindex="-1"></a>Here is some `colored text`{color=red}.</span> +<span id="cb290-33"><a href="#cb290-33" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb290-34"><a href="#cb290-34" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb263"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb263-1"><a href="#cb263-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb291"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb291-1"><a href="#cb291-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>Here is some <span style="color: red"><code>colored text</code></span>.</p> </blockquote> -<h4 data-number="2.2.1.32" id="option-inlinenotes"><span -class="header-section-number">2.2.1.32</span> Option +<h4 data-number="2.2.1.36" id="option-inlinenotes"><span +class="header-section-number">2.2.1.36</span> Option <code>inlineNotes</code></h4> <dl> <dt><code>inlineNotes</code> (default value: <code>false</code>)</dt> @@ -4327,10 +4892,10 @@ class="header-section-number">2.2.1.32</span> Option <p>Enable the Pandoc <a href="https://pandoc.org/MANUAL.html#extension-inline_notes">inline note syntax extension</a>:</p> -<div class="sourceCode" id="cb264"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb264-1"><a href="#cb264-1" aria-hidden="true" tabindex="-1"></a>Here is an inline note.^[Inlines notes are easier to</span> -<span id="cb264-2"><a href="#cb264-2" aria-hidden="true" tabindex="-1"></a>write, since you don't have to pick an identifier and</span> -<span id="cb264-3"><a href="#cb264-3" aria-hidden="true" tabindex="-1"></a>move down to type the note.]</span></code></pre></div> +<div class="sourceCode" id="cb292"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb292-1"><a href="#cb292-1" aria-hidden="true" tabindex="-1"></a>Here is an inline note.^[Inlines notes are easier to</span> +<span id="cb292-2"><a href="#cb292-2" aria-hidden="true" tabindex="-1"></a>write, since you don't have to pick an identifier and</span> +<span id="cb292-3"><a href="#cb292-3" aria-hidden="true" tabindex="-1"></a>move down to type the note.]</span></code></pre></div> </dd> </dl> </dd> @@ -4343,54 +4908,54 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb264-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-27"><span +<h5 class="unnumbered" id="latex-example-28"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb265"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb265-1"><a href="#cb265-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb265-2"><a href="#cb265-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[inlineNotes]{<span class="ex">markdown</span>}</span> -<span id="cb265-3"><a href="#cb265-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb265-4"><a href="#cb265-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb265-5"><a href="#cb265-5" aria-hidden="true" tabindex="-1"></a>Here is an inline note.^[Inlines notes are easier to</span> -<span id="cb265-6"><a href="#cb265-6" aria-hidden="true" tabindex="-1"></a>write, since you don't have to pick an identifier and</span> -<span id="cb265-7"><a href="#cb265-7" aria-hidden="true" tabindex="-1"></a>move down to type the note.]</span> -<span id="cb265-8"><a href="#cb265-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb265-9"><a href="#cb265-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb293"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb293-1"><a href="#cb293-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb293-2"><a href="#cb293-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[inlineNotes]{<span class="ex">markdown</span>}</span> +<span id="cb293-3"><a href="#cb293-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb293-4"><a href="#cb293-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb293-5"><a href="#cb293-5" aria-hidden="true" tabindex="-1"></a>Here is an inline note.^[Inlines notes are easier to</span> +<span id="cb293-6"><a href="#cb293-6" aria-hidden="true" tabindex="-1"></a>write, since you don't have to pick an identifier and</span> +<span id="cb293-7"><a href="#cb293-7" aria-hidden="true" tabindex="-1"></a>move down to type the note.]</span> +<span id="cb293-8"><a href="#cb293-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb293-9"><a href="#cb293-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb266"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb266-1"><a href="#cb266-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb294"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb294-1"><a href="#cb294-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>Here is an inline note.<a href="#fn1" class="footnote-ref" id="fnref1" role="doc-noteref"><sup>1</sup></a></p> </blockquote> -<h5 class="unnumbered" id="context-example-16">Con<span +<h5 class="unnumbered" id="context-example-18">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb267"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb267-1"><a href="#cb267-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb267-2"><a href="#cb267-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[inlineNotes = yes]</span> -<span id="cb267-3"><a href="#cb267-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb267-4"><a href="#cb267-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb267-5"><a href="#cb267-5" aria-hidden="true" tabindex="-1"></a>Here is an inline note.^[Inlines notes are easier to</span> -<span id="cb267-6"><a href="#cb267-6" aria-hidden="true" tabindex="-1"></a>write, since you don't have to pick an identifier and</span> -<span id="cb267-7"><a href="#cb267-7" aria-hidden="true" tabindex="-1"></a>move down to type the note.]</span> -<span id="cb267-8"><a href="#cb267-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb267-9"><a href="#cb267-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb295"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb295-1"><a href="#cb295-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb295-2"><a href="#cb295-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[inlineNotes = yes]</span> +<span id="cb295-3"><a href="#cb295-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb295-4"><a href="#cb295-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb295-5"><a href="#cb295-5" aria-hidden="true" tabindex="-1"></a>Here is an inline note.^[Inlines notes are easier to</span> +<span id="cb295-6"><a href="#cb295-6" aria-hidden="true" tabindex="-1"></a>write, since you don't have to pick an identifier and</span> +<span id="cb295-7"><a href="#cb295-7" aria-hidden="true" tabindex="-1"></a>move down to type the note.]</span> +<span id="cb295-8"><a href="#cb295-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb295-9"><a href="#cb295-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb268"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb268-1"><a href="#cb268-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb296"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb296-1"><a href="#cb296-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>Here is an inline note.<a href="#fn2" class="footnote-ref" id="fnref2" role="doc-noteref"><sup>2</sup></a></p> </blockquote> -<h4 data-number="2.2.1.33" id="option-jekylldata"><span -class="header-section-number">2.2.1.33</span> Option +<h4 data-number="2.2.1.37" id="option-jekylldata"><span +class="header-section-number">2.2.1.37</span> Option <code>jekyllData</code></h4> <dl> <dt><code>jekyllData</code> (default value: <code>false</code>)</dt> @@ -4402,18 +4967,18 @@ class="header-section-number">2.2.1.33</span> Option href="https://pandoc.org/MANUAL.html#extension-yaml_metadata_block"><abbr>yaml</abbr> metadata block syntax extension</a> for entering metadata in <abbr>yaml</abbr>:</p> -<div class="sourceCode" id="cb269"><pre -class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb269-1"><a href="#cb269-1" aria-hidden="true" tabindex="-1"></a><span class="pp">---</span></span> -<span id="cb269-2"><a href="#cb269-2" aria-hidden="true" tabindex="-1"></a><span class="fu">title</span><span class="kw">:</span><span class="at"> </span><span class="st">'This is the title: it contains a colon'</span></span> -<span id="cb269-3"><a href="#cb269-3" aria-hidden="true" tabindex="-1"></a><span class="fu">author</span><span class="kw">:</span></span> -<span id="cb269-4"><a href="#cb269-4" aria-hidden="true" tabindex="-1"></a><span class="kw">-</span><span class="at"> Author One</span></span> -<span id="cb269-5"><a href="#cb269-5" aria-hidden="true" tabindex="-1"></a><span class="kw">-</span><span class="at"> Author Two</span></span> -<span id="cb269-6"><a href="#cb269-6" aria-hidden="true" tabindex="-1"></a><span class="fu">keywords</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="at">nothing</span><span class="kw">,</span><span class="at"> nothingness</span><span class="kw">]</span></span> -<span id="cb269-7"><a href="#cb269-7" aria-hidden="true" tabindex="-1"></a><span class="fu">abstract</span><span class="kw">: </span><span class="ch">|</span></span> -<span id="cb269-8"><a href="#cb269-8" aria-hidden="true" tabindex="-1"></a> This is the abstract.</span> -<span id="cb269-9"><a href="#cb269-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb269-10"><a href="#cb269-10" aria-hidden="true" tabindex="-1"></a> It consists of two paragraphs.</span> -<span id="cb269-11"><a href="#cb269-11" aria-hidden="true" tabindex="-1"></a><span class="pp">---</span></span></code></pre></div> +<div class="sourceCode" id="cb297"><pre +class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb297-1"><a href="#cb297-1" aria-hidden="true" tabindex="-1"></a><span class="pp">---</span></span> +<span id="cb297-2"><a href="#cb297-2" aria-hidden="true" tabindex="-1"></a><span class="fu">title</span><span class="kw">:</span><span class="at"> </span><span class="st">'This is the title: it contains a colon'</span></span> +<span id="cb297-3"><a href="#cb297-3" aria-hidden="true" tabindex="-1"></a><span class="fu">author</span><span class="kw">:</span></span> +<span id="cb297-4"><a href="#cb297-4" aria-hidden="true" tabindex="-1"></a><span class="kw">-</span><span class="at"> Author One</span></span> +<span id="cb297-5"><a href="#cb297-5" aria-hidden="true" tabindex="-1"></a><span class="kw">-</span><span class="at"> Author Two</span></span> +<span id="cb297-6"><a href="#cb297-6" aria-hidden="true" tabindex="-1"></a><span class="fu">keywords</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="at">nothing</span><span class="kw">,</span><span class="at"> nothingness</span><span class="kw">]</span></span> +<span id="cb297-7"><a href="#cb297-7" aria-hidden="true" tabindex="-1"></a><span class="fu">abstract</span><span class="kw">: </span><span class="ch">|</span></span> +<span id="cb297-8"><a href="#cb297-8" aria-hidden="true" tabindex="-1"></a> This is the abstract.</span> +<span id="cb297-9"><a href="#cb297-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb297-10"><a href="#cb297-10" aria-hidden="true" tabindex="-1"></a> It consists of two paragraphs.</span> +<span id="cb297-11"><a href="#cb297-11" aria-hidden="true" tabindex="-1"></a><span class="pp">---</span></span></code></pre></div> </dd> </dl> </dd> @@ -4427,109 +4992,109 @@ for entering metadata in <abbr>yaml</abbr>.</p> </dl> </dd> </dl> -<h5 class="unnumbered" id="plain-tex-example-10">Plain <span +<h5 class="unnumbered" id="plain-tex-example-12">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb270"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb270-1"><a href="#cb270-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb270-2"><a href="#cb270-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionJekyllData</span>{true}</span> -<span id="cb270-3"><a href="#cb270-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span> -<span id="cb270-4"><a href="#cb270-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span> -<span id="cb270-5"><a href="#cb270-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span> -<span id="cb270-6"><a href="#cb270-6" aria-hidden="true" tabindex="-1"></a> {</span> -<span id="cb270-7"><a href="#cb270-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span> -<span id="cb270-8"><a href="#cb270-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span> -<span id="cb270-9"><a href="#cb270-9" aria-hidden="true" tabindex="-1"></a> }</span> -<span id="cb270-10"><a href="#cb270-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span> -<span id="cb270-11"><a href="#cb270-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span> -<span id="cb270-12"><a href="#cb270-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span> -<span id="cb270-13"><a href="#cb270-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb270-14"><a href="#cb270-14" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb270-15"><a href="#cb270-15" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span> -<span id="cb270-16"><a href="#cb270-16" aria-hidden="true" tabindex="-1"></a>age: 99</span> -<span id="cb270-17"><a href="#cb270-17" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb270-18"><a href="#cb270-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb270-19"><a href="#cb270-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb298"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb298-1"><a href="#cb298-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb298-2"><a href="#cb298-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionJekyllData</span>{true}</span> +<span id="cb298-3"><a href="#cb298-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span> +<span id="cb298-4"><a href="#cb298-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span> +<span id="cb298-5"><a href="#cb298-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span> +<span id="cb298-6"><a href="#cb298-6" aria-hidden="true" tabindex="-1"></a> {</span> +<span id="cb298-7"><a href="#cb298-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span> +<span id="cb298-8"><a href="#cb298-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span> +<span id="cb298-9"><a href="#cb298-9" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb298-10"><a href="#cb298-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span> +<span id="cb298-11"><a href="#cb298-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span> +<span id="cb298-12"><a href="#cb298-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span> +<span id="cb298-13"><a href="#cb298-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb298-14"><a href="#cb298-14" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb298-15"><a href="#cb298-15" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span> +<span id="cb298-16"><a href="#cb298-16" aria-hidden="true" tabindex="-1"></a>age: 99</span> +<span id="cb298-17"><a href="#cb298-17" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb298-18"><a href="#cb298-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb298-19"><a href="#cb298-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb271"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb271-1"><a href="#cb271-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb299"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb299-1"><a href="#cb299-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>Jane Doe is 99 years old.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-28"><span +<h5 class="unnumbered" id="latex-example-29"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb272"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb272-1"><a href="#cb272-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb272-2"><a href="#cb272-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span> -<span id="cb272-3"><a href="#cb272-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb272-4"><a href="#cb272-4" aria-hidden="true" tabindex="-1"></a> jekyllDataRenderers = {</span> -<span id="cb272-5"><a href="#cb272-5" aria-hidden="true" tabindex="-1"></a> name = {<span class="fu">\gdef\name</span>{#1}},</span> -<span id="cb272-6"><a href="#cb272-6" aria-hidden="true" tabindex="-1"></a> code = {<span class="fu">\gdef\age</span>{#1}},</span> -<span id="cb272-7"><a href="#cb272-7" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb272-8"><a href="#cb272-8" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb272-9"><a href="#cb272-9" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span> -<span id="cb272-10"><a href="#cb272-10" aria-hidden="true" tabindex="-1"></a> }</span> -<span id="cb272-11"><a href="#cb272-11" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb272-12"><a href="#cb272-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb272-13"><a href="#cb272-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb272-14"><a href="#cb272-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb272-15"><a href="#cb272-15" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb272-16"><a href="#cb272-16" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span> -<span id="cb272-17"><a href="#cb272-17" aria-hidden="true" tabindex="-1"></a>age: 99</span> -<span id="cb272-18"><a href="#cb272-18" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb272-19"><a href="#cb272-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb272-20"><a href="#cb272-20" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb272-21"><a href="#cb272-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb300"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb300-1"><a href="#cb300-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb300-2"><a href="#cb300-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span> +<span id="cb300-3"><a href="#cb300-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb300-4"><a href="#cb300-4" aria-hidden="true" tabindex="-1"></a> jekyllDataRenderers = {</span> +<span id="cb300-5"><a href="#cb300-5" aria-hidden="true" tabindex="-1"></a> name = {<span class="fu">\gdef\name</span>{#1}},</span> +<span id="cb300-6"><a href="#cb300-6" aria-hidden="true" tabindex="-1"></a> code = {<span class="fu">\gdef\age</span>{#1}},</span> +<span id="cb300-7"><a href="#cb300-7" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb300-8"><a href="#cb300-8" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb300-9"><a href="#cb300-9" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span> +<span id="cb300-10"><a href="#cb300-10" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb300-11"><a href="#cb300-11" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb300-12"><a href="#cb300-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb300-13"><a href="#cb300-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb300-14"><a href="#cb300-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb300-15"><a href="#cb300-15" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb300-16"><a href="#cb300-16" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span> +<span id="cb300-17"><a href="#cb300-17" aria-hidden="true" tabindex="-1"></a>age: 99</span> +<span id="cb300-18"><a href="#cb300-18" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb300-19"><a href="#cb300-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb300-20"><a href="#cb300-20" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb300-21"><a href="#cb300-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb273"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb273-1"><a href="#cb273-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb301"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb301-1"><a href="#cb301-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>Jane Doe is 99 years old.</p> </blockquote> -<h5 class="unnumbered" id="context-example-17">Con<span +<h5 class="unnumbered" id="context-example-19">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb274"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb274-1"><a href="#cb274-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb274-2"><a href="#cb274-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[jekyllData = yes]</span> -<span id="cb274-3"><a href="#cb274-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span> -<span id="cb274-4"><a href="#cb274-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span> -<span id="cb274-5"><a href="#cb274-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span> -<span id="cb274-6"><a href="#cb274-6" aria-hidden="true" tabindex="-1"></a> {</span> -<span id="cb274-7"><a href="#cb274-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span> -<span id="cb274-8"><a href="#cb274-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span> -<span id="cb274-9"><a href="#cb274-9" aria-hidden="true" tabindex="-1"></a> }</span> -<span id="cb274-10"><a href="#cb274-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span> -<span id="cb274-11"><a href="#cb274-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span> -<span id="cb274-12"><a href="#cb274-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span> -<span id="cb274-13"><a href="#cb274-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb274-14"><a href="#cb274-14" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb274-15"><a href="#cb274-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb274-16"><a href="#cb274-16" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb274-17"><a href="#cb274-17" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span> -<span id="cb274-18"><a href="#cb274-18" aria-hidden="true" tabindex="-1"></a>age: 99</span> -<span id="cb274-19"><a href="#cb274-19" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb274-20"><a href="#cb274-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb274-21"><a href="#cb274-21" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb274-22"><a href="#cb274-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb302"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb302-1"><a href="#cb302-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb302-2"><a href="#cb302-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[jekyllData = yes]</span> +<span id="cb302-3"><a href="#cb302-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span> +<span id="cb302-4"><a href="#cb302-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span> +<span id="cb302-5"><a href="#cb302-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span> +<span id="cb302-6"><a href="#cb302-6" aria-hidden="true" tabindex="-1"></a> {</span> +<span id="cb302-7"><a href="#cb302-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span> +<span id="cb302-8"><a href="#cb302-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span> +<span id="cb302-9"><a href="#cb302-9" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb302-10"><a href="#cb302-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span> +<span id="cb302-11"><a href="#cb302-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span> +<span id="cb302-12"><a href="#cb302-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span> +<span id="cb302-13"><a href="#cb302-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb302-14"><a href="#cb302-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb302-15"><a href="#cb302-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb302-16"><a href="#cb302-16" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb302-17"><a href="#cb302-17" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span> +<span id="cb302-18"><a href="#cb302-18" aria-hidden="true" tabindex="-1"></a>age: 99</span> +<span id="cb302-19"><a href="#cb302-19" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb302-20"><a href="#cb302-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb302-21"><a href="#cb302-21" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb302-22"><a href="#cb302-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb275"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb275-1"><a href="#cb275-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb303"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb303-1"><a href="#cb303-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>Jane Doe is 99 years old.</p> </blockquote> -<h4 data-number="2.2.1.34" id="option-linkattributes"><span -class="header-section-number">2.2.1.34</span> Option +<h4 data-number="2.2.1.38" id="option-linkattributes"><span +class="header-section-number">2.2.1.38</span> Option <code>linkAttributes</code></h4> <dl> <dt><code>linkAttributes</code> (default value: <code>false</code>)</dt> @@ -4540,11 +5105,11 @@ class="header-section-number">2.2.1.34</span> Option <p>Enable the Pandoc <a href="https://pandoc.org/MANUAL.html#extension-link_attributes">link and image attribute syntax extension</a>:</p> -<div class="sourceCode" id="cb276"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb276-1"><a href="#cb276-1" aria-hidden="true" tabindex="-1"></a>An inline <span class="al">![image](foo.jpg)</span>{#id .class width=30 height=20px}</span> -<span id="cb276-2"><a href="#cb276-2" aria-hidden="true" tabindex="-1"></a>and a reference <span class="al">![image][ref]</span> with attributes.</span> -<span id="cb276-3"><a href="#cb276-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb276-4"><a href="#cb276-4" aria-hidden="true" tabindex="-1"></a><span class="ot">[ref]: </span>foo.jpg "optional title" {#id .class key=val key2=val2}</span></code></pre></div> +<div class="sourceCode" id="cb304"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb304-1"><a href="#cb304-1" aria-hidden="true" tabindex="-1"></a>An inline <span class="al">![image](foo.jpg)</span>{#id .class width=30 height=20px}</span> +<span id="cb304-2"><a href="#cb304-2" aria-hidden="true" tabindex="-1"></a>and a reference <span class="al">![image][ref]</span> with attributes.</span> +<span id="cb304-3"><a href="#cb304-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb304-4"><a href="#cb304-4" aria-hidden="true" tabindex="-1"></a><span class="ot">[ref]: </span>foo.jpg "optional title" {#id .class key=val key2=val2}</span></code></pre></div> </dd> </dl> </dd> @@ -4557,51 +5122,51 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb276-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-29"><span +<h5 class="unnumbered" id="latex-example-30"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb277"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb277-1"><a href="#cb277-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb277-2"><a href="#cb277-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[linkAttributes]{<span class="ex">markdown</span>}</span> -<span id="cb277-3"><a href="#cb277-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3, graphicx</span>}</span> -<span id="cb277-4"><a href="#cb277-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span> -<span id="cb277-5"><a href="#cb277-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb277-6"><a href="#cb277-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb277-7"><a href="#cb277-7" aria-hidden="true" tabindex="-1"></a> imageAttributeContextBegin = {</span> -<span id="cb277-8"><a href="#cb277-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span> -<span id="cb277-9"><a href="#cb277-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span> -<span id="cb277-10"><a href="#cb277-10" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb277-11"><a href="#cb277-11" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {</span> -<span id="cb277-12"><a href="#cb277-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\setkeys</span></span> -<span id="cb277-13"><a href="#cb277-13" aria-hidden="true" tabindex="-1"></a> { Gin }</span> -<span id="cb277-14"><a href="#cb277-14" aria-hidden="true" tabindex="-1"></a> { { ##1 } = { ##2 } }</span> -<span id="cb277-15"><a href="#cb277-15" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb277-16"><a href="#cb277-16" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb277-17"><a href="#cb277-17" aria-hidden="true" tabindex="-1"></a> }</span> -<span id="cb277-18"><a href="#cb277-18" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb277-19"><a href="#cb277-19" aria-hidden="true" tabindex="-1"></a> imageAttributeContextEnd = {</span> -<span id="cb277-20"><a href="#cb277-20" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span> -<span id="cb277-21"><a href="#cb277-21" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb277-22"><a href="#cb277-22" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb277-23"><a href="#cb277-23" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb277-24"><a href="#cb277-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span> -<span id="cb277-25"><a href="#cb277-25" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb277-26"><a href="#cb277-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb277-27"><a href="#cb277-27" aria-hidden="true" tabindex="-1"></a>Here is an example image:</span> -<span id="cb277-28"><a href="#cb277-28" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb277-29"><a href="#cb277-29" aria-hidden="true" tabindex="-1"></a> ![example image](example-image){width=5cm height=4cm}</span> -<span id="cb277-30"><a href="#cb277-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb277-31"><a href="#cb277-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb305"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb305-1"><a href="#cb305-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb305-2"><a href="#cb305-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[linkAttributes]{<span class="ex">markdown</span>}</span> +<span id="cb305-3"><a href="#cb305-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3, graphicx</span>}</span> +<span id="cb305-4"><a href="#cb305-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span> +<span id="cb305-5"><a href="#cb305-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb305-6"><a href="#cb305-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb305-7"><a href="#cb305-7" aria-hidden="true" tabindex="-1"></a> imageAttributeContextBegin = {</span> +<span id="cb305-8"><a href="#cb305-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span> +<span id="cb305-9"><a href="#cb305-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span> +<span id="cb305-10"><a href="#cb305-10" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb305-11"><a href="#cb305-11" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {</span> +<span id="cb305-12"><a href="#cb305-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\setkeys</span></span> +<span id="cb305-13"><a href="#cb305-13" aria-hidden="true" tabindex="-1"></a> { Gin }</span> +<span id="cb305-14"><a href="#cb305-14" aria-hidden="true" tabindex="-1"></a> { { ##1 } = { ##2 } }</span> +<span id="cb305-15"><a href="#cb305-15" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb305-16"><a href="#cb305-16" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb305-17"><a href="#cb305-17" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb305-18"><a href="#cb305-18" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb305-19"><a href="#cb305-19" aria-hidden="true" tabindex="-1"></a> imageAttributeContextEnd = {</span> +<span id="cb305-20"><a href="#cb305-20" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span> +<span id="cb305-21"><a href="#cb305-21" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb305-22"><a href="#cb305-22" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb305-23"><a href="#cb305-23" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb305-24"><a href="#cb305-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span> +<span id="cb305-25"><a href="#cb305-25" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb305-26"><a href="#cb305-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb305-27"><a href="#cb305-27" aria-hidden="true" tabindex="-1"></a>Here is an example image:</span> +<span id="cb305-28"><a href="#cb305-28" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb305-29"><a href="#cb305-29" aria-hidden="true" tabindex="-1"></a> ![example image](example-image){width=5cm height=4cm}</span> +<span id="cb305-30"><a href="#cb305-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb305-31"><a href="#cb305-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb278"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb278-1"><a href="#cb278-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb306"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb306-1"><a href="#cb306-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain an example image (from <a href="https://ctan.org/pkg/mwe" title="mwe – Packages and image files for MWEs">Martin Scharrer’s mwe package</a>) displayed at size 5cm × 4cm.</p> -<h4 data-number="2.2.1.35" id="option-lineblocks"><span -class="header-section-number">2.2.1.35</span> Option +<h4 data-number="2.2.1.39" id="option-lineblocks"><span +class="header-section-number">2.2.1.39</span> Option <code>lineBlocks</code></h4> <dl> <dt><code>lineBlocks</code> (default value: <code>false</code>)</dt> @@ -4612,12 +5177,12 @@ class="header-section-number">2.2.1.35</span> Option <p>Enable the Pandoc <a href="https://pandoc.org/MANUAL.html#extension-line_blocks">line block syntax extension</a>:</p> -<div class="sourceCode" id="cb279"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb279-1"><a href="#cb279-1" aria-hidden="true" tabindex="-1"></a>| this is a line block that</span> -<span id="cb279-2"><a href="#cb279-2" aria-hidden="true" tabindex="-1"></a>| spans multiple</span> -<span id="cb279-3"><a href="#cb279-3" aria-hidden="true" tabindex="-1"></a>| even</span> -<span id="cb279-4"><a href="#cb279-4" aria-hidden="true" tabindex="-1"></a> discontinuous</span> -<span id="cb279-5"><a href="#cb279-5" aria-hidden="true" tabindex="-1"></a>| lines</span></code></pre></div> +<div class="sourceCode" id="cb307"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb307-1"><a href="#cb307-1" aria-hidden="true" tabindex="-1"></a>| this is a line block that</span> +<span id="cb307-2"><a href="#cb307-2" aria-hidden="true" tabindex="-1"></a>| spans multiple</span> +<span id="cb307-3"><a href="#cb307-3" aria-hidden="true" tabindex="-1"></a>| even</span> +<span id="cb307-4"><a href="#cb307-4" aria-hidden="true" tabindex="-1"></a> discontinuous</span> +<span id="cb307-5"><a href="#cb307-5" aria-hidden="true" tabindex="-1"></a>| lines</span></code></pre></div> </dd> </dl> </dd> @@ -4630,23 +5195,23 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb279-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="plain-tex-example-11">Plain <span +<h5 class="unnumbered" id="plain-tex-example-13">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb280"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb280-1"><a href="#cb280-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb280-2"><a href="#cb280-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionLineBlocks</span>{true}</span> -<span id="cb280-3"><a href="#cb280-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb280-4"><a href="#cb280-4" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span> -<span id="cb280-5"><a href="#cb280-5" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span> -<span id="cb280-6"><a href="#cb280-6" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span> -<span id="cb280-7"><a href="#cb280-7" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span> -<span id="cb280-8"><a href="#cb280-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb280-9"><a href="#cb280-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb308"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb308-1"><a href="#cb308-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb308-2"><a href="#cb308-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionLineBlocks</span>{true}</span> +<span id="cb308-3"><a href="#cb308-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb308-4"><a href="#cb308-4" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span> +<span id="cb308-5"><a href="#cb308-5" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span> +<span id="cb308-6"><a href="#cb308-6" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span> +<span id="cb308-7"><a href="#cb308-7" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span> +<span id="cb308-8"><a href="#cb308-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb308-9"><a href="#cb308-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb281"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb281-1"><a href="#cb281-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb309"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb309-1"><a href="#cb309-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -4655,24 +5220,24 @@ But I, being poor, have only my dreams;<br /> I have spread my dreams under your feet;<br /> Tread softly because you tread on my dreams.</div> </blockquote> -<h5 class="unnumbered" id="latex-example-30"><span +<h5 class="unnumbered" id="latex-example-31"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb282"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb282-1"><a href="#cb282-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb282-2"><a href="#cb282-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[lineBlocks]{<span class="ex">markdown</span>}</span> -<span id="cb282-3"><a href="#cb282-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb282-4"><a href="#cb282-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb282-5"><a href="#cb282-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span> -<span id="cb282-6"><a href="#cb282-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span> -<span id="cb282-7"><a href="#cb282-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span> -<span id="cb282-8"><a href="#cb282-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span> -<span id="cb282-9"><a href="#cb282-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb282-10"><a href="#cb282-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb310"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb310-1"><a href="#cb310-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb310-2"><a href="#cb310-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[lineBlocks]{<span class="ex">markdown</span>}</span> +<span id="cb310-3"><a href="#cb310-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb310-4"><a href="#cb310-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb310-5"><a href="#cb310-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span> +<span id="cb310-6"><a href="#cb310-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span> +<span id="cb310-7"><a href="#cb310-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span> +<span id="cb310-8"><a href="#cb310-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span> +<span id="cb310-9"><a href="#cb310-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb310-10"><a href="#cb310-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb283"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb283-1"><a href="#cb283-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb311"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb311-1"><a href="#cb311-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -4681,24 +5246,24 @@ But I, being poor, have only my dreams;<br /> I have spread my dreams under your feet;<br /> Tread softly because you tread on my dreams.</div> </blockquote> -<h5 class="unnumbered" id="context-example-18">Con<span +<h5 class="unnumbered" id="context-example-20">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb284"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb284-1"><a href="#cb284-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb284-2"><a href="#cb284-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[lineBlocks = yes]</span> -<span id="cb284-3"><a href="#cb284-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb284-4"><a href="#cb284-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb284-5"><a href="#cb284-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span> -<span id="cb284-6"><a href="#cb284-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span> -<span id="cb284-7"><a href="#cb284-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span> -<span id="cb284-8"><a href="#cb284-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span> -<span id="cb284-9"><a href="#cb284-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb284-10"><a href="#cb284-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb312"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb312-1"><a href="#cb312-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb312-2"><a href="#cb312-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[lineBlocks = yes]</span> +<span id="cb312-3"><a href="#cb312-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb312-4"><a href="#cb312-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb312-5"><a href="#cb312-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span> +<span id="cb312-6"><a href="#cb312-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span> +<span id="cb312-7"><a href="#cb312-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span> +<span id="cb312-8"><a href="#cb312-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span> +<span id="cb312-9"><a href="#cb312-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb312-10"><a href="#cb312-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb285"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb285-1"><a href="#cb285-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb313"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb313-1"><a href="#cb313-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -4707,8 +5272,56 @@ But I, being poor, have only my dreams;<br /> I have spread my dreams under your feet;<br /> Tread softly because you tread on my dreams.</div> </blockquote> -<h4 data-number="2.2.1.36" id="option-notes"><span -class="header-section-number">2.2.1.36</span> Option +<h4 data-number="2.2.1.40" id="option-mark"><span +class="header-section-number">2.2.1.40</span> Option +<code>mark</code></h4> +<dl> +<dt><code>mark</code> (default value: <code>false</code>)</dt> +<dd> +<dl> +<dt>true</dt> +<dd> +<p>Enable the Pandoc <a +href="https://pandoc.org/MANUAL.html#extension-mark">mark syntax +extension</a>:</p> +<div class="sourceCode" id="cb314"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb314-1"><a href="#cb314-1" aria-hidden="true" tabindex="-1"></a>This ==is highlighted text.==</span></code></pre></div> +</dd> +</dl> +</dd> +<dd> +<dl> +<dt>false</dt> +<dd> +<p>Disable the Pandoc mark syntax extension.</p> +</dd> +</dl> +</dd> +</dl> +<h5 class="unnumbered" id="latex-example-32"><span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb315"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb315-1"><a href="#cb315-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb315-2"><a href="#cb315-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[mark]{<span class="ex">markdown</span>}</span> +<span id="cb315-3"><a href="#cb315-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb315-4"><a href="#cb315-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb315-5"><a href="#cb315-5" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb315-6"><a href="#cb315-6" aria-hidden="true" tabindex="-1"></a>This ==is highlighted text.==</span> +<span id="cb315-7"><a href="#cb315-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb315-8"><a href="#cb315-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb315-9"><a href="#cb315-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb316"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb316-1"><a href="#cb316-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<p>This <mark>is highlighted text.</mark></p> +</blockquote> +<h4 data-number="2.2.1.41" id="option-notes"><span +class="header-section-number">2.2.1.41</span> Option <code>notes</code></h4> <dl> <dt><code>notes</code> (default value: <code>false</code>)</dt> @@ -4719,24 +5332,24 @@ class="header-section-number">2.2.1.36</span> Option <p>Enable the Pandoc <a href="https://pandoc.org/MANUAL.html#extension-footnotes">note syntax extension</a>:</p> -<div class="sourceCode" id="cb286"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb286-1"><a href="#cb286-1" aria-hidden="true" tabindex="-1"></a>Here is a note reference,<span class="ot">[^1]</span> and another.<span class="ot">[^longnote]</span></span> -<span id="cb286-2"><a href="#cb286-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb286-3"><a href="#cb286-3" aria-hidden="true" tabindex="-1"></a><span class="ot">[^1]: </span>Here is the note.</span> -<span id="cb286-4"><a href="#cb286-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb286-5"><a href="#cb286-5" aria-hidden="true" tabindex="-1"></a><span class="ot">[^longnote]: </span>Here's one with multiple blocks.</span> -<span id="cb286-6"><a href="#cb286-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb286-7"><a href="#cb286-7" aria-hidden="true" tabindex="-1"></a><span class="in"> Subsequent paragraphs are indented to show that they</span></span> -<span id="cb286-8"><a href="#cb286-8" aria-hidden="true" tabindex="-1"></a>belong to the previous note.</span> -<span id="cb286-9"><a href="#cb286-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb286-10"><a href="#cb286-10" aria-hidden="true" tabindex="-1"></a><span class="in"> { some.code }</span></span> -<span id="cb286-11"><a href="#cb286-11" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb286-12"><a href="#cb286-12" aria-hidden="true" tabindex="-1"></a><span class="in"> The whole paragraph can be indented, or just the</span></span> -<span id="cb286-13"><a href="#cb286-13" aria-hidden="true" tabindex="-1"></a><span class="in"> first line. In this way, multi-paragraph notes</span></span> -<span id="cb286-14"><a href="#cb286-14" aria-hidden="true" tabindex="-1"></a><span class="in"> work like multi-paragraph list items.</span></span> -<span id="cb286-15"><a href="#cb286-15" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb286-16"><a href="#cb286-16" aria-hidden="true" tabindex="-1"></a>This paragraph won't be part of the note, because it</span> -<span id="cb286-17"><a href="#cb286-17" aria-hidden="true" tabindex="-1"></a>isn't indented.</span></code></pre></div> +<div class="sourceCode" id="cb317"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb317-1"><a href="#cb317-1" aria-hidden="true" tabindex="-1"></a>Here is a note reference,<span class="ot">[^1]</span> and another.<span class="ot">[^longnote]</span></span> +<span id="cb317-2"><a href="#cb317-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb317-3"><a href="#cb317-3" aria-hidden="true" tabindex="-1"></a><span class="ot">[^1]: </span>Here is the note.</span> +<span id="cb317-4"><a href="#cb317-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb317-5"><a href="#cb317-5" aria-hidden="true" tabindex="-1"></a><span class="ot">[^longnote]: </span>Here's one with multiple blocks.</span> +<span id="cb317-6"><a href="#cb317-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb317-7"><a href="#cb317-7" aria-hidden="true" tabindex="-1"></a><span class="in"> Subsequent paragraphs are indented to show that they</span></span> +<span id="cb317-8"><a href="#cb317-8" aria-hidden="true" tabindex="-1"></a>belong to the previous note.</span> +<span id="cb317-9"><a href="#cb317-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb317-10"><a href="#cb317-10" aria-hidden="true" tabindex="-1"></a><span class="in"> { some.code }</span></span> +<span id="cb317-11"><a href="#cb317-11" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb317-12"><a href="#cb317-12" aria-hidden="true" tabindex="-1"></a><span class="in"> The whole paragraph can be indented, or just the</span></span> +<span id="cb317-13"><a href="#cb317-13" aria-hidden="true" tabindex="-1"></a><span class="in"> first line. In this way, multi-paragraph notes</span></span> +<span id="cb317-14"><a href="#cb317-14" aria-hidden="true" tabindex="-1"></a><span class="in"> work like multi-paragraph list items.</span></span> +<span id="cb317-15"><a href="#cb317-15" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb317-16"><a href="#cb317-16" aria-hidden="true" tabindex="-1"></a>This paragraph won't be part of the note, because it</span> +<span id="cb317-17"><a href="#cb317-17" aria-hidden="true" tabindex="-1"></a>isn't indented.</span></code></pre></div> </dd> </dl> </dd> @@ -4749,37 +5362,37 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb286-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-31"><span +<h5 class="unnumbered" id="latex-example-33"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb287"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb287-1"><a href="#cb287-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb287-2"><a href="#cb287-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[notes]{<span class="ex">markdown</span>}</span> -<span id="cb287-3"><a href="#cb287-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb287-4"><a href="#cb287-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb287-5"><a href="#cb287-5" aria-hidden="true" tabindex="-1"></a>Here is a note reference,[^1] and another.[^longnote]</span> -<span id="cb287-6"><a href="#cb287-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb287-7"><a href="#cb287-7" aria-hidden="true" tabindex="-1"></a>[^1]: Here is the note.</span> -<span id="cb287-8"><a href="#cb287-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb287-9"><a href="#cb287-9" aria-hidden="true" tabindex="-1"></a>[^longnote]: Here's one with multiple blocks.</span> -<span id="cb287-10"><a href="#cb287-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb287-11"><a href="#cb287-11" aria-hidden="true" tabindex="-1"></a> Subsequent paragraphs are indented to show that they</span> -<span id="cb287-12"><a href="#cb287-12" aria-hidden="true" tabindex="-1"></a>belong to the previous note.</span> -<span id="cb287-13"><a href="#cb287-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb287-14"><a href="#cb287-14" aria-hidden="true" tabindex="-1"></a> { some.code }</span> -<span id="cb287-15"><a href="#cb287-15" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb287-16"><a href="#cb287-16" aria-hidden="true" tabindex="-1"></a> The whole paragraph can be indented, or just the</span> -<span id="cb287-17"><a href="#cb287-17" aria-hidden="true" tabindex="-1"></a> first line. In this way, multi-paragraph notes</span> -<span id="cb287-18"><a href="#cb287-18" aria-hidden="true" tabindex="-1"></a> work like multi-paragraph list items.</span> -<span id="cb287-19"><a href="#cb287-19" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb287-20"><a href="#cb287-20" aria-hidden="true" tabindex="-1"></a>This paragraph won't be part of the note, because it</span> -<span id="cb287-21"><a href="#cb287-21" aria-hidden="true" tabindex="-1"></a>isn't indented.</span> -<span id="cb287-22"><a href="#cb287-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb287-23"><a href="#cb287-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb318"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb318-1"><a href="#cb318-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb318-2"><a href="#cb318-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[notes]{<span class="ex">markdown</span>}</span> +<span id="cb318-3"><a href="#cb318-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb318-4"><a href="#cb318-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb318-5"><a href="#cb318-5" aria-hidden="true" tabindex="-1"></a>Here is a note reference,[^1] and another.[^longnote]</span> +<span id="cb318-6"><a href="#cb318-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb318-7"><a href="#cb318-7" aria-hidden="true" tabindex="-1"></a>[^1]: Here is the note.</span> +<span id="cb318-8"><a href="#cb318-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb318-9"><a href="#cb318-9" aria-hidden="true" tabindex="-1"></a>[^longnote]: Here's one with multiple blocks.</span> +<span id="cb318-10"><a href="#cb318-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb318-11"><a href="#cb318-11" aria-hidden="true" tabindex="-1"></a> Subsequent paragraphs are indented to show that they</span> +<span id="cb318-12"><a href="#cb318-12" aria-hidden="true" tabindex="-1"></a>belong to the previous note.</span> +<span id="cb318-13"><a href="#cb318-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb318-14"><a href="#cb318-14" aria-hidden="true" tabindex="-1"></a> { some.code }</span> +<span id="cb318-15"><a href="#cb318-15" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb318-16"><a href="#cb318-16" aria-hidden="true" tabindex="-1"></a> The whole paragraph can be indented, or just the</span> +<span id="cb318-17"><a href="#cb318-17" aria-hidden="true" tabindex="-1"></a> first line. In this way, multi-paragraph notes</span> +<span id="cb318-18"><a href="#cb318-18" aria-hidden="true" tabindex="-1"></a> work like multi-paragraph list items.</span> +<span id="cb318-19"><a href="#cb318-19" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb318-20"><a href="#cb318-20" aria-hidden="true" tabindex="-1"></a>This paragraph won't be part of the note, because it</span> +<span id="cb318-21"><a href="#cb318-21" aria-hidden="true" tabindex="-1"></a>isn't indented.</span> +<span id="cb318-22"><a href="#cb318-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb318-23"><a href="#cb318-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb288"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb288-1"><a href="#cb288-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb319"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb319-1"><a href="#cb319-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -4790,37 +5403,37 @@ role="doc-noteref"><sup>4</sup></a></p> <p>This paragraph won’t be part of the note, because it isn’t indented.</p> </blockquote> -<h5 class="unnumbered" id="context-example-19">Con<span +<h5 class="unnumbered" id="context-example-21">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb290"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb290-1"><a href="#cb290-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb290-2"><a href="#cb290-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[notes = yes]</span> -<span id="cb290-3"><a href="#cb290-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb290-4"><a href="#cb290-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb290-5"><a href="#cb290-5" aria-hidden="true" tabindex="-1"></a>Here is a note reference,[^1] and another.[^longnote]</span> -<span id="cb290-6"><a href="#cb290-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb290-7"><a href="#cb290-7" aria-hidden="true" tabindex="-1"></a>[^1]: Here is the note.</span> -<span id="cb290-8"><a href="#cb290-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb290-9"><a href="#cb290-9" aria-hidden="true" tabindex="-1"></a>[^longnote]: Here's one with multiple blocks.</span> -<span id="cb290-10"><a href="#cb290-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb290-11"><a href="#cb290-11" aria-hidden="true" tabindex="-1"></a> Subsequent paragraphs are indented to show that they</span> -<span id="cb290-12"><a href="#cb290-12" aria-hidden="true" tabindex="-1"></a>belong to the previous note.</span> -<span id="cb290-13"><a href="#cb290-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb290-14"><a href="#cb290-14" aria-hidden="true" tabindex="-1"></a> { some.code }</span> -<span id="cb290-15"><a href="#cb290-15" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb290-16"><a href="#cb290-16" aria-hidden="true" tabindex="-1"></a> The whole paragraph can be indented, or just the</span> -<span id="cb290-17"><a href="#cb290-17" aria-hidden="true" tabindex="-1"></a> first line. In this way, multi-paragraph notes</span> -<span id="cb290-18"><a href="#cb290-18" aria-hidden="true" tabindex="-1"></a> work like multi-paragraph list items.</span> -<span id="cb290-19"><a href="#cb290-19" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb290-20"><a href="#cb290-20" aria-hidden="true" tabindex="-1"></a>This paragraph won't be part of the note, because it</span> -<span id="cb290-21"><a href="#cb290-21" aria-hidden="true" tabindex="-1"></a>isn't indented.</span> -<span id="cb290-22"><a href="#cb290-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb290-23"><a href="#cb290-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb321"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb321-1"><a href="#cb321-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb321-2"><a href="#cb321-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[notes = yes]</span> +<span id="cb321-3"><a href="#cb321-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb321-4"><a href="#cb321-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb321-5"><a href="#cb321-5" aria-hidden="true" tabindex="-1"></a>Here is a note reference,[^1] and another.[^longnote]</span> +<span id="cb321-6"><a href="#cb321-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb321-7"><a href="#cb321-7" aria-hidden="true" tabindex="-1"></a>[^1]: Here is the note.</span> +<span id="cb321-8"><a href="#cb321-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb321-9"><a href="#cb321-9" aria-hidden="true" tabindex="-1"></a>[^longnote]: Here's one with multiple blocks.</span> +<span id="cb321-10"><a href="#cb321-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb321-11"><a href="#cb321-11" aria-hidden="true" tabindex="-1"></a> Subsequent paragraphs are indented to show that they</span> +<span id="cb321-12"><a href="#cb321-12" aria-hidden="true" tabindex="-1"></a>belong to the previous note.</span> +<span id="cb321-13"><a href="#cb321-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb321-14"><a href="#cb321-14" aria-hidden="true" tabindex="-1"></a> { some.code }</span> +<span id="cb321-15"><a href="#cb321-15" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb321-16"><a href="#cb321-16" aria-hidden="true" tabindex="-1"></a> The whole paragraph can be indented, or just the</span> +<span id="cb321-17"><a href="#cb321-17" aria-hidden="true" tabindex="-1"></a> first line. In this way, multi-paragraph notes</span> +<span id="cb321-18"><a href="#cb321-18" aria-hidden="true" tabindex="-1"></a> work like multi-paragraph list items.</span> +<span id="cb321-19"><a href="#cb321-19" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb321-20"><a href="#cb321-20" aria-hidden="true" tabindex="-1"></a>This paragraph won't be part of the note, because it</span> +<span id="cb321-21"><a href="#cb321-21" aria-hidden="true" tabindex="-1"></a>isn't indented.</span> +<span id="cb321-22"><a href="#cb321-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb321-23"><a href="#cb321-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb291"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb291-1"><a href="#cb291-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb322"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb322-1"><a href="#cb322-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -4831,8 +5444,8 @@ role="doc-noteref"><sup>6</sup></a></p> <p>This paragraph won’t be part of the note, because it isn’t indented.</p> </blockquote> -<h4 data-number="2.2.1.37" id="pipe-tables"><span -class="header-section-number">2.2.1.37</span> Option +<h4 data-number="2.2.1.42" id="pipe-tables"><span +class="header-section-number">2.2.1.42</span> Option <code>pipeTables</code></h4> <dl> <dt><code>pipeTables</code> (default value: <code>false</code>)</dt> @@ -4841,12 +5454,12 @@ class="header-section-number">2.2.1.37</span> Option <dt>true</dt> <dd> <p>Enable the <abbr>PHP</abbr> Markdown pipe table syntax extension:</p> -<div class="sourceCode" id="cb293"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb293-1"><a href="#cb293-1" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span> -<span id="cb293-2"><a href="#cb293-2" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span> -<span id="cb293-3"><a href="#cb293-3" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span> -<span id="cb293-4"><a href="#cb293-4" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span> -<span id="cb293-5"><a href="#cb293-5" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span></code></pre></div> +<div class="sourceCode" id="cb324"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb324-1"><a href="#cb324-1" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span> +<span id="cb324-2"><a href="#cb324-2" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span> +<span id="cb324-3"><a href="#cb324-3" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span> +<span id="cb324-4"><a href="#cb324-4" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span> +<span id="cb324-5"><a href="#cb324-5" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span></code></pre></div> </dd> </dl> </dd> @@ -4860,25 +5473,25 @@ extension.</p> </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-32"><span +<h5 class="unnumbered" id="latex-example-34"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb294"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb294-1"><a href="#cb294-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb294-2"><a href="#cb294-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[pipeTables]{<span class="ex">markdown</span>}</span> -<span id="cb294-3"><a href="#cb294-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb294-4"><a href="#cb294-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb294-5"><a href="#cb294-5" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span> -<span id="cb294-6"><a href="#cb294-6" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span> -<span id="cb294-7"><a href="#cb294-7" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span> -<span id="cb294-8"><a href="#cb294-8" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span> -<span id="cb294-9"><a href="#cb294-9" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span> -<span id="cb294-10"><a href="#cb294-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb294-11"><a href="#cb294-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb325"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb325-1"><a href="#cb325-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb325-2"><a href="#cb325-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[pipeTables]{<span class="ex">markdown</span>}</span> +<span id="cb325-3"><a href="#cb325-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb325-4"><a href="#cb325-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb325-5"><a href="#cb325-5" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span> +<span id="cb325-6"><a href="#cb325-6" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span> +<span id="cb325-7"><a href="#cb325-7" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span> +<span id="cb325-8"><a href="#cb325-8" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span> +<span id="cb325-9"><a href="#cb325-9" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span> +<span id="cb325-10"><a href="#cb325-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb325-11"><a href="#cb325-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb295"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb295-1"><a href="#cb295-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb326"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb326-1"><a href="#cb326-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -4913,25 +5526,25 @@ contain the following text:</p> </tbody> </table> </blockquote> -<h5 class="unnumbered" id="context-example-20">Con<span +<h5 class="unnumbered" id="context-example-22">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb296"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb296-1"><a href="#cb296-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb296-2"><a href="#cb296-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[pipeTables = yes]</span> -<span id="cb296-3"><a href="#cb296-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb296-4"><a href="#cb296-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb296-5"><a href="#cb296-5" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span> -<span id="cb296-6"><a href="#cb296-6" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span> -<span id="cb296-7"><a href="#cb296-7" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span> -<span id="cb296-8"><a href="#cb296-8" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span> -<span id="cb296-9"><a href="#cb296-9" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span> -<span id="cb296-10"><a href="#cb296-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb296-11"><a href="#cb296-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb327"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb327-1"><a href="#cb327-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb327-2"><a href="#cb327-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[pipeTables = yes]</span> +<span id="cb327-3"><a href="#cb327-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb327-4"><a href="#cb327-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb327-5"><a href="#cb327-5" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span> +<span id="cb327-6"><a href="#cb327-6" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span> +<span id="cb327-7"><a href="#cb327-7" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span> +<span id="cb327-8"><a href="#cb327-8" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span> +<span id="cb327-9"><a href="#cb327-9" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span> +<span id="cb327-10"><a href="#cb327-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb327-11"><a href="#cb327-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb297"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb297-1"><a href="#cb297-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb328"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb328-1"><a href="#cb328-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -4966,11 +5579,11 @@ contain the following text:</p> </tbody> </table> </blockquote> -<h4 data-number="2.2.1.38" id="option-preservetabs"><span -class="header-section-number">2.2.1.38</span> Option +<h4 data-number="2.2.1.43" id="option-preservetabs"><span +class="header-section-number">2.2.1.43</span> Option <code>preserveTabs</code></h4> <dl> -<dt><code>preserveTabs</code> (default value: <code>false</code>)</dt> +<dt><code>preserveTabs</code> (default value: <code>true</code>)</dt> <dd> <dl> <dt>true</dt> @@ -4988,8 +5601,8 @@ class="header-section-number">2.2.1.38</span> Option </dl> </dd> </dl> -<h4 data-number="2.2.1.39" id="option-rawattribute"><span -class="header-section-number">2.2.1.39</span> Option +<h4 data-number="2.2.1.44" id="option-rawattribute"><span +class="header-section-number">2.2.1.44</span> Option <code>rawAttribute</code></h4> <dl> <dt><code>rawAttribute</code> (default value: <code>false</code>)</dt> @@ -5000,20 +5613,20 @@ class="header-section-number">2.2.1.39</span> Option <p>Enable the Pandoc <a href="https://pandoc.org/MANUAL.html#extension-raw_attribute">raw attribute syntax extension</a>:</p> -<div class="sourceCode" id="cb298"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb298-1"><a href="#cb298-1" aria-hidden="true" tabindex="-1"></a><span class="in">`$H_2 O$`</span>{=tex} is a liquid.</span></code></pre></div> +<div class="sourceCode" id="cb329"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb329-1"><a href="#cb329-1" aria-hidden="true" tabindex="-1"></a><span class="in">`$H_2 O$`</span>{=tex} is a liquid.</span></code></pre></div> <p>To enable raw blocks, the <strong><code>fencedCode</code></strong> option must also be enabled:</p> -<div class="sourceCode" id="cb299"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb299-1"><a href="#cb299-1" aria-hidden="true" tabindex="-1"></a><span class="an">Here is a mathematical formula:</span></span> -<span id="cb299-2"><a href="#cb299-2" aria-hidden="true" tabindex="-1"></a><span class="in">``` {=tex}</span></span> -<span id="cb299-3"><a href="#cb299-3" aria-hidden="true" tabindex="-1"></a><span class="in">\[distance[i] =</span></span> -<span id="cb299-4"><a href="#cb299-4" aria-hidden="true" tabindex="-1"></a><span class="in"> \begin{dcases}</span></span> -<span id="cb299-5"><a href="#cb299-5" aria-hidden="true" tabindex="-1"></a><span class="in"> a & b \\</span></span> -<span id="cb299-6"><a href="#cb299-6" aria-hidden="true" tabindex="-1"></a><span class="in"> c & d</span></span> -<span id="cb299-7"><a href="#cb299-7" aria-hidden="true" tabindex="-1"></a><span class="in"> \end{dcases}</span></span> -<span id="cb299-8"><a href="#cb299-8" aria-hidden="true" tabindex="-1"></a><span class="in">\]</span></span> -<span id="cb299-9"><a href="#cb299-9" aria-hidden="true" tabindex="-1"></a><span class="in">```</span></span></code></pre></div> +<div class="sourceCode" id="cb330"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb330-1"><a href="#cb330-1" aria-hidden="true" tabindex="-1"></a><span class="an">Here is a mathematical formula:</span></span> +<span id="cb330-2"><a href="#cb330-2" aria-hidden="true" tabindex="-1"></a><span class="in">``` {=tex}</span></span> +<span id="cb330-3"><a href="#cb330-3" aria-hidden="true" tabindex="-1"></a><span class="in">\[distance[i] =</span></span> +<span id="cb330-4"><a href="#cb330-4" aria-hidden="true" tabindex="-1"></a><span class="in"> \begin{dcases}</span></span> +<span id="cb330-5"><a href="#cb330-5" aria-hidden="true" tabindex="-1"></a><span class="in"> a & b \\</span></span> +<span id="cb330-6"><a href="#cb330-6" aria-hidden="true" tabindex="-1"></a><span class="in"> c & d</span></span> +<span id="cb330-7"><a href="#cb330-7" aria-hidden="true" tabindex="-1"></a><span class="in"> \end{dcases}</span></span> +<span id="cb330-8"><a href="#cb330-8" aria-hidden="true" tabindex="-1"></a><span class="in">\]</span></span> +<span id="cb330-9"><a href="#cb330-9" aria-hidden="true" tabindex="-1"></a><span class="in">```</span></span></code></pre></div> <p>The <strong><code>rawAttribute</code></strong> option is a good alternative to the <strong><code>hybrid</code></strong> option. Unlike the <strong><code>hybrid</code></strong> option, which affects the @@ -5031,33 +5644,33 @@ allows you to isolate the parts of your documents that use TeX:</p> </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-33"><span +<h5 class="unnumbered" id="latex-example-35"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb300"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb300-1"><a href="#cb300-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb300-2"><a href="#cb300-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[rawAttribute, fencedCode]{<span class="ex">markdown</span>}</span> -<span id="cb300-3"><a href="#cb300-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span> -<span id="cb300-4"><a href="#cb300-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb300-5"><a href="#cb300-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb300-6"><a href="#cb300-6" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$H_2 O$</span>`{=tex} is a liquid.</span> -<span id="cb300-7"><a href="#cb300-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb300-8"><a href="#cb300-8" aria-hidden="true" tabindex="-1"></a>``` {=html}</span> -<span id="cb300-9"><a href="#cb300-9" aria-hidden="true" tabindex="-1"></a><p>Here is some HTML content that will be ignored.</p></span> -<span id="cb300-10"><a href="#cb300-10" aria-hidden="true" tabindex="-1"></a>```</span> -<span id="cb300-11"><a href="#cb300-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb300-12"><a href="#cb300-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb331"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb331-1"><a href="#cb331-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb331-2"><a href="#cb331-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[rawAttribute, fencedCode]{<span class="ex">markdown</span>}</span> +<span id="cb331-3"><a href="#cb331-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span> +<span id="cb331-4"><a href="#cb331-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb331-5"><a href="#cb331-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb331-6"><a href="#cb331-6" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$H_2 O$</span>`{=tex} is a liquid.</span> +<span id="cb331-7"><a href="#cb331-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb331-8"><a href="#cb331-8" aria-hidden="true" tabindex="-1"></a>``` {=html}</span> +<span id="cb331-9"><a href="#cb331-9" aria-hidden="true" tabindex="-1"></a><p>Here is some HTML content that will be ignored.</p></span> +<span id="cb331-10"><a href="#cb331-10" aria-hidden="true" tabindex="-1"></a>```</span> +<span id="cb331-11"><a href="#cb331-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb331-12"><a href="#cb331-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb301"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb301-1"><a href="#cb301-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb332"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb332-1"><a href="#cb332-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>H<sub>2</sub>O is a liquid.</p> </blockquote> -<h4 data-number="2.2.1.40" id="option-relativereferences"><span -class="header-section-number">2.2.1.40</span> Option +<h4 data-number="2.2.1.45" id="option-relativereferences"><span +class="header-section-number">2.2.1.45</span> Option <code>relativeReferences</code></h4> <dl> <dt><code>relativeReferences</code> (default value: @@ -5069,14 +5682,14 @@ class="header-section-number">2.2.1.40</span> Option <p>Enable <a href="https://datatracker.ietf.org/doc/html/rfc3986#section-4.2">relative references</a> in autolinks:</p> -<div class="sourceCode" id="cb302"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb302-1"><a href="#cb302-1" aria-hidden="true" tabindex="-1"></a>I conclude in Section <#conclusion>.</span> -<span id="cb302-2"><a href="#cb302-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb302-3"><a href="#cb302-3" aria-hidden="true" tabindex="-1"></a>Conclusion {#conclusion}</span> -<span id="cb302-4"><a href="#cb302-4" aria-hidden="true" tabindex="-1"></a><span class="fu">==========</span></span> -<span id="cb302-5"><a href="#cb302-5" aria-hidden="true" tabindex="-1"></a>In this paper, we have discovered that most</span> -<span id="cb302-6"><a href="#cb302-6" aria-hidden="true" tabindex="-1"></a>grandmas would rather eat dinner with their</span> -<span id="cb302-7"><a href="#cb302-7" aria-hidden="true" tabindex="-1"></a>grandchildren than get eaten. Begone, wolf!</span></code></pre></div> +<div class="sourceCode" id="cb333"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb333-1"><a href="#cb333-1" aria-hidden="true" tabindex="-1"></a>I conclude in Section <#conclusion>.</span> +<span id="cb333-2"><a href="#cb333-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb333-3"><a href="#cb333-3" aria-hidden="true" tabindex="-1"></a>Conclusion {#conclusion}</span> +<span id="cb333-4"><a href="#cb333-4" aria-hidden="true" tabindex="-1"></a><span class="fu">==========</span></span> +<span id="cb333-5"><a href="#cb333-5" aria-hidden="true" tabindex="-1"></a>In this paper, we have discovered that most</span> +<span id="cb333-6"><a href="#cb333-6" aria-hidden="true" tabindex="-1"></a>grandmas would rather eat dinner with their</span> +<span id="cb333-7"><a href="#cb333-7" aria-hidden="true" tabindex="-1"></a>grandchildren than get eaten. Begone, wolf!</span></code></pre></div> </dd> </dl> </dd> @@ -5089,30 +5702,30 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb302-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-34"><span +<h5 class="unnumbered" id="latex-example-36"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb303"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb303-1"><a href="#cb303-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb303-2"><a href="#cb303-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes, relativeReferences]{<span class="ex">markdown</span>}</span> -<span id="cb303-3"><a href="#cb303-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb303-4"><a href="#cb303-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb303-5"><a href="#cb303-5" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb303-6"><a href="#cb303-6" aria-hidden="true" tabindex="-1"></a>I conclude in Section <#conclusion>.</span> -<span id="cb303-7"><a href="#cb303-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb303-8"><a href="#cb303-8" aria-hidden="true" tabindex="-1"></a>Conclusion {#conclusion}</span> -<span id="cb303-9"><a href="#cb303-9" aria-hidden="true" tabindex="-1"></a>==========</span> -<span id="cb303-10"><a href="#cb303-10" aria-hidden="true" tabindex="-1"></a>In this paper, we have discovered that most</span> -<span id="cb303-11"><a href="#cb303-11" aria-hidden="true" tabindex="-1"></a>grandmas would rather eat dinner with their</span> -<span id="cb303-12"><a href="#cb303-12" aria-hidden="true" tabindex="-1"></a>grandchildren than get eaten. Begone, wolf!</span> -<span id="cb303-13"><a href="#cb303-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb303-14"><a href="#cb303-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb303-15"><a href="#cb303-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb334"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb334-1"><a href="#cb334-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb334-2"><a href="#cb334-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes, relativeReferences]{<span class="ex">markdown</span>}</span> +<span id="cb334-3"><a href="#cb334-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb334-4"><a href="#cb334-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb334-5"><a href="#cb334-5" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb334-6"><a href="#cb334-6" aria-hidden="true" tabindex="-1"></a>I conclude in Section <#conclusion>.</span> +<span id="cb334-7"><a href="#cb334-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb334-8"><a href="#cb334-8" aria-hidden="true" tabindex="-1"></a>Conclusion {#conclusion}</span> +<span id="cb334-9"><a href="#cb334-9" aria-hidden="true" tabindex="-1"></a>==========</span> +<span id="cb334-10"><a href="#cb334-10" aria-hidden="true" tabindex="-1"></a>In this paper, we have discovered that most</span> +<span id="cb334-11"><a href="#cb334-11" aria-hidden="true" tabindex="-1"></a>grandmas would rather eat dinner with their</span> +<span id="cb334-12"><a href="#cb334-12" aria-hidden="true" tabindex="-1"></a>grandchildren than get eaten. Begone, wolf!</span> +<span id="cb334-13"><a href="#cb334-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb334-14"><a href="#cb334-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb334-15"><a href="#cb334-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX twice from the terminal:</p> -<div class="sourceCode" id="cb304"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb304-1"><a href="#cb304-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span> -<span id="cb304-2"><a href="#cb304-2" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb335"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb335-1"><a href="#cb335-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span> +<span id="cb335-2"><a href="#cb335-2" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -5121,8 +5734,8 @@ contain the following text:</p> <p>In this paper, we have discovered that most grandmas would rather eat dinner with their grandchildren than get eaten. Begone, wolf!</p> </blockquote> -<h4 data-number="2.2.1.41" id="option-shiftheadings"><span -class="header-section-number">2.2.1.41</span> Option +<h4 data-number="2.2.1.46" id="option-shiftheadings"><span +class="header-section-number">2.2.1.46</span> Option <code>shiftHeadings</code></h4> <dl> <dt><code>shiftHeadings</code> (default value: <code>0</code>)</dt> @@ -5134,36 +5747,36 @@ when ⟨<em>shift amount</em>⟩ is positive, and to level 1, when ⟨<em>shift amount</em>⟩ is negative.</p> </dd> </dl> -<h5 class="unnumbered" id="plain-tex-example-12">Plain <span +<h5 class="unnumbered" id="plain-tex-example-14">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>example.md</code> with the following content:</p> -<div class="sourceCode" id="cb305"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb305-1"><a href="#cb305-1" aria-hidden="true" tabindex="-1"></a><span class="fu">## A section</span></span></code></pre></div> +<div class="sourceCode" id="cb336"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb336-1"><a href="#cb336-1" aria-hidden="true" tabindex="-1"></a><span class="fu">## A section</span></span></code></pre></div> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb306"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb306-1"><a href="#cb306-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb306-2"><a href="#cb306-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb306-3"><a href="#cb306-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\normal</span>=cmr10<span class="fu">\normal</span></span> -<span id="cb306-4"><a href="#cb306-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\big</span>=cmr10 at 12pt</span> -<span id="cb306-5"><a href="#cb306-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>#1{{<span class="fu">\big</span> #1<span class="fu">\par</span>}}</span> -<span id="cb306-6"><a href="#cb306-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\bigger</span>=cmr10 scaled 1440</span> -<span id="cb306-7"><a href="#cb306-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>#1{{<span class="fu">\bigger</span> #1<span class="fu">\par</span>}}</span> -<span id="cb306-8"><a href="#cb306-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb306-9"><a href="#cb306-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionShiftHeadings</span>{-1}</span> -<span id="cb306-10"><a href="#cb306-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span> -<span id="cb306-11"><a href="#cb306-11" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb306-12"><a href="#cb306-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionShiftHeadings</span>{0}</span> -<span id="cb306-13"><a href="#cb306-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span> -<span id="cb306-14"><a href="#cb306-14" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb306-15"><a href="#cb306-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionShiftHeadings</span>{+1}</span> -<span id="cb306-16"><a href="#cb306-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span> -<span id="cb306-17"><a href="#cb306-17" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb306-18"><a href="#cb306-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb337"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb337-1"><a href="#cb337-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb337-2"><a href="#cb337-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb337-3"><a href="#cb337-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\normal</span>=cmr10<span class="fu">\normal</span></span> +<span id="cb337-4"><a href="#cb337-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\big</span>=cmr10 at 12pt</span> +<span id="cb337-5"><a href="#cb337-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>#1{{<span class="fu">\big</span> #1<span class="fu">\par</span>}}</span> +<span id="cb337-6"><a href="#cb337-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\bigger</span>=cmr10 scaled 1440</span> +<span id="cb337-7"><a href="#cb337-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>#1{{<span class="fu">\bigger</span> #1<span class="fu">\par</span>}}</span> +<span id="cb337-8"><a href="#cb337-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb337-9"><a href="#cb337-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionShiftHeadings</span>{-1}</span> +<span id="cb337-10"><a href="#cb337-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span> +<span id="cb337-11"><a href="#cb337-11" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb337-12"><a href="#cb337-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionShiftHeadings</span>{0}</span> +<span id="cb337-13"><a href="#cb337-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span> +<span id="cb337-14"><a href="#cb337-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb337-15"><a href="#cb337-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionShiftHeadings</span>{+1}</span> +<span id="cb337-16"><a href="#cb337-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span> +<span id="cb337-17"><a href="#cb337-17" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb337-18"><a href="#cb337-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb307"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb307-1"><a href="#cb307-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb338"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb338-1"><a href="#cb338-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -5171,24 +5784,24 @@ contain the following text:</p> <h2 id="a-section-1">A section</h2> <h3 id="a-section-2">A section</h3> </blockquote> -<h5 class="unnumbered" id="latex-example-35"><span +<h5 class="unnumbered" id="latex-example-37"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb308"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb308-1"><a href="#cb308-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb308-2"><a href="#cb308-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb308-3"><a href="#cb308-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">filecontents</span>}[overwrite,nosearch,noheader]{example.md}</span> -<span id="cb308-4"><a href="#cb308-4" aria-hidden="true" tabindex="-1"></a>## A section</span> -<span id="cb308-5"><a href="#cb308-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">filecontents</span>}</span> -<span id="cb308-6"><a href="#cb308-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb308-7"><a href="#cb308-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[shiftHeadings=-1]{example.md}</span> -<span id="cb308-8"><a href="#cb308-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span> -<span id="cb308-9"><a href="#cb308-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[shiftHeadings=+1]{example.md}</span> -<span id="cb308-10"><a href="#cb308-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb339"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb339-1"><a href="#cb339-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb339-2"><a href="#cb339-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb339-3"><a href="#cb339-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">filecontents</span>}[overwrite,nosearch,noheader]{example.md}</span> +<span id="cb339-4"><a href="#cb339-4" aria-hidden="true" tabindex="-1"></a>## A section</span> +<span id="cb339-5"><a href="#cb339-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">filecontents</span>}</span> +<span id="cb339-6"><a href="#cb339-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb339-7"><a href="#cb339-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[shiftHeadings=-1]{example.md}</span> +<span id="cb339-8"><a href="#cb339-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span> +<span id="cb339-9"><a href="#cb339-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[shiftHeadings=+1]{example.md}</span> +<span id="cb339-10"><a href="#cb339-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb309"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb309-1"><a href="#cb309-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb340"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb340-1"><a href="#cb340-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -5196,26 +5809,26 @@ contain the following text:</p> <h2 id="a-section-4">A section</h2> <h3 id="a-section-5">A section</h3> </blockquote> -<h5 class="unnumbered" id="context-example-21">Con<span +<h5 class="unnumbered" id="context-example-23">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>example.md</code> with the following content:</p> -<div class="sourceCode" id="cb310"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb310-1"><a href="#cb310-1" aria-hidden="true" tabindex="-1"></a><span class="fu">## A section</span></span></code></pre></div> +<div class="sourceCode" id="cb341"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb341-1"><a href="#cb341-1" aria-hidden="true" tabindex="-1"></a><span class="fu">## A section</span></span></code></pre></div> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb311"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb311-1"><a href="#cb311-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb311-2"><a href="#cb311-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb311-3"><a href="#cb311-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb311-4"><a href="#cb311-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[shiftHeadings = -1]{example.md}</span> -<span id="cb311-5"><a href="#cb311-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[shiftHeadings = 0]{example.md}</span> -<span id="cb311-6"><a href="#cb311-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[shiftHeadings = +1]{example.md}</span> -<span id="cb311-7"><a href="#cb311-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb311-8"><a href="#cb311-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb342"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb342-1"><a href="#cb342-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb342-2"><a href="#cb342-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb342-3"><a href="#cb342-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb342-4"><a href="#cb342-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[shiftHeadings = -1]{example.md}</span> +<span id="cb342-5"><a href="#cb342-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[shiftHeadings = 0]{example.md}</span> +<span id="cb342-6"><a href="#cb342-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[shiftHeadings = +1]{example.md}</span> +<span id="cb342-7"><a href="#cb342-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb342-8"><a href="#cb342-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb312"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb312-1"><a href="#cb312-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb343"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb343-1"><a href="#cb343-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -5223,8 +5836,8 @@ contain the following text:</p> <h2 id="a-section-7">A section</h2> <h3 id="a-section-8">A section</h3> </blockquote> -<h4 data-number="2.2.1.42" id="option-slice"><span -class="header-section-number">2.2.1.42</span> Option +<h4 data-number="2.2.1.47" id="option-slice"><span +class="header-section-number">2.2.1.47</span> Option <code>slice</code></h4> <dl> <dt><code>slice</code> (default value: <code>^ $</code>)</dt> @@ -5255,47 +5868,47 @@ i.e. the entire section with the <abbr>HTML</abbr> attribute <code>#</code>⟨<em>identifier</em>⟩ will be selected.</p> </dd> </dl> -<h5 class="unnumbered" id="plain-tex-example-13">Plain <span +<h5 class="unnumbered" id="plain-tex-example-15">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>hamlet.md</code> with the following content:</p> -<div class="sourceCode" id="cb313"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb313-1"><a href="#cb313-1" aria-hidden="true" tabindex="-1"></a><span class="fu"># The Tragedy of Hamlet</span></span> -<span id="cb313-2"><a href="#cb313-2" aria-hidden="true" tabindex="-1"></a>Shakespeare's longest play.</span> -<span id="cb313-3"><a href="#cb313-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb313-4"><a href="#cb313-4" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act III {#act-3}</span></span> -<span id="cb313-5"><a href="#cb313-5" aria-hidden="true" tabindex="-1"></a>Hamlet kills Polonius.</span> -<span id="cb313-6"><a href="#cb313-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb313-7"><a href="#cb313-7" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act V {#act-5}</span></span> -<span id="cb313-8"><a href="#cb313-8" aria-hidden="true" tabindex="-1"></a>Hamlet dies.</span> -<span id="cb313-9"><a href="#cb313-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb313-10"><a href="#cb313-10" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act I {#act-1}</span></span> -<span id="cb313-11"><a href="#cb313-11" aria-hidden="true" tabindex="-1"></a>Hamlet talks to ghost.</span></code></pre></div> +<div class="sourceCode" id="cb344"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb344-1"><a href="#cb344-1" aria-hidden="true" tabindex="-1"></a><span class="fu"># The Tragedy of Hamlet</span></span> +<span id="cb344-2"><a href="#cb344-2" aria-hidden="true" tabindex="-1"></a>Shakespeare's longest play.</span> +<span id="cb344-3"><a href="#cb344-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb344-4"><a href="#cb344-4" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act III {#act-3}</span></span> +<span id="cb344-5"><a href="#cb344-5" aria-hidden="true" tabindex="-1"></a>Hamlet kills Polonius.</span> +<span id="cb344-6"><a href="#cb344-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb344-7"><a href="#cb344-7" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act V {#act-5}</span></span> +<span id="cb344-8"><a href="#cb344-8" aria-hidden="true" tabindex="-1"></a>Hamlet dies.</span> +<span id="cb344-9"><a href="#cb344-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb344-10"><a href="#cb344-10" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act I {#act-1}</span></span> +<span id="cb344-11"><a href="#cb344-11" aria-hidden="true" tabindex="-1"></a>Hamlet talks to ghost.</span></code></pre></div> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb314"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb314-1"><a href="#cb314-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb314-2"><a href="#cb314-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHeaderAttributes</span>{true}</span> -<span id="cb314-3"><a href="#cb314-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb314-4"><a href="#cb314-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\normal</span>=cmr10<span class="fu">\normal</span></span> -<span id="cb314-5"><a href="#cb314-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\big</span>=cmr10 at 12pt</span> -<span id="cb314-6"><a href="#cb314-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>#1{{<span class="fu">\big</span> #1<span class="fu">\par</span>}}</span> -<span id="cb314-7"><a href="#cb314-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\bigger</span>=cmr10 scaled 1440</span> -<span id="cb314-8"><a href="#cb314-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>#1{{<span class="fu">\bigger</span> #1<span class="fu">\par</span>}}</span> -<span id="cb314-9"><a href="#cb314-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb314-10"><a href="#cb314-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSlice</span>{^ ^act-3}</span> -<span id="cb314-11"><a href="#cb314-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hamlet.md}</span> -<span id="cb314-12"><a href="#cb314-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb314-13"><a href="#cb314-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSlice</span>{act-1}</span> -<span id="cb314-14"><a href="#cb314-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hamlet.md}</span> -<span id="cb314-15"><a href="#cb314-15" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb314-16"><a href="#cb314-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSlice</span>{act-3 act-5}</span> -<span id="cb314-17"><a href="#cb314-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hamlet.md}</span> -<span id="cb314-18"><a href="#cb314-18" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb314-19"><a href="#cb314-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb345"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb345-1"><a href="#cb345-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb345-2"><a href="#cb345-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHeaderAttributes</span>{true}</span> +<span id="cb345-3"><a href="#cb345-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb345-4"><a href="#cb345-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\normal</span>=cmr10<span class="fu">\normal</span></span> +<span id="cb345-5"><a href="#cb345-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\big</span>=cmr10 at 12pt</span> +<span id="cb345-6"><a href="#cb345-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>#1{{<span class="fu">\big</span> #1<span class="fu">\par</span>}}</span> +<span id="cb345-7"><a href="#cb345-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\bigger</span>=cmr10 scaled 1440</span> +<span id="cb345-8"><a href="#cb345-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>#1{{<span class="fu">\bigger</span> #1<span class="fu">\par</span>}}</span> +<span id="cb345-9"><a href="#cb345-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb345-10"><a href="#cb345-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSlice</span>{^ ^act-3}</span> +<span id="cb345-11"><a href="#cb345-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hamlet.md}</span> +<span id="cb345-12"><a href="#cb345-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb345-13"><a href="#cb345-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSlice</span>{act-1}</span> +<span id="cb345-14"><a href="#cb345-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hamlet.md}</span> +<span id="cb345-15"><a href="#cb345-15" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb345-16"><a href="#cb345-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSlice</span>{act-3 act-5}</span> +<span id="cb345-17"><a href="#cb345-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hamlet.md}</span> +<span id="cb345-18"><a href="#cb345-18" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb345-19"><a href="#cb345-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb315"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb315-1"><a href="#cb315-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb346"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb346-1"><a href="#cb346-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -5308,34 +5921,34 @@ contain the following text:</p> <h2 id="act-v">Act V</h2> <p>Hamlet dies.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-36"><span +<h5 class="unnumbered" id="latex-example-38"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb316"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb316-1"><a href="#cb316-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb316-2"><a href="#cb316-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes]{<span class="ex">markdown</span>}</span> -<span id="cb316-3"><a href="#cb316-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">filecontents</span>}[overwrite,nosearch,noheader]{hamlet.md}</span> -<span id="cb316-4"><a href="#cb316-4" aria-hidden="true" tabindex="-1"></a># The Tragedy of Hamlet</span> -<span id="cb316-5"><a href="#cb316-5" aria-hidden="true" tabindex="-1"></a>Shakespeare's longest play.</span> -<span id="cb316-6"><a href="#cb316-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb316-7"><a href="#cb316-7" aria-hidden="true" tabindex="-1"></a>## Act III {#act-3}</span> -<span id="cb316-8"><a href="#cb316-8" aria-hidden="true" tabindex="-1"></a>Hamlet kills Polonius.</span> -<span id="cb316-9"><a href="#cb316-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb316-10"><a href="#cb316-10" aria-hidden="true" tabindex="-1"></a>## Act V {#act-5}</span> -<span id="cb316-11"><a href="#cb316-11" aria-hidden="true" tabindex="-1"></a>Hamlet dies.</span> -<span id="cb316-12"><a href="#cb316-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb316-13"><a href="#cb316-13" aria-hidden="true" tabindex="-1"></a>## Act I {#act-1}</span> -<span id="cb316-14"><a href="#cb316-14" aria-hidden="true" tabindex="-1"></a>Hamlet talks to ghost.</span> -<span id="cb316-15"><a href="#cb316-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">filecontents</span>}</span> -<span id="cb316-16"><a href="#cb316-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb316-17"><a href="#cb316-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[slice=^ ^act-3]{hamlet.md}</span> -<span id="cb316-18"><a href="#cb316-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[slice=act-1]{hamlet.md}</span> -<span id="cb316-19"><a href="#cb316-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[slice=act-3 act-5]{hamlet.md}</span> -<span id="cb316-20"><a href="#cb316-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb347"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb347-1"><a href="#cb347-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb347-2"><a href="#cb347-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes]{<span class="ex">markdown</span>}</span> +<span id="cb347-3"><a href="#cb347-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">filecontents</span>}[overwrite,nosearch,noheader]{hamlet.md}</span> +<span id="cb347-4"><a href="#cb347-4" aria-hidden="true" tabindex="-1"></a># The Tragedy of Hamlet</span> +<span id="cb347-5"><a href="#cb347-5" aria-hidden="true" tabindex="-1"></a>Shakespeare's longest play.</span> +<span id="cb347-6"><a href="#cb347-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb347-7"><a href="#cb347-7" aria-hidden="true" tabindex="-1"></a>## Act III {#act-3}</span> +<span id="cb347-8"><a href="#cb347-8" aria-hidden="true" tabindex="-1"></a>Hamlet kills Polonius.</span> +<span id="cb347-9"><a href="#cb347-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb347-10"><a href="#cb347-10" aria-hidden="true" tabindex="-1"></a>## Act V {#act-5}</span> +<span id="cb347-11"><a href="#cb347-11" aria-hidden="true" tabindex="-1"></a>Hamlet dies.</span> +<span id="cb347-12"><a href="#cb347-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb347-13"><a href="#cb347-13" aria-hidden="true" tabindex="-1"></a>## Act I {#act-1}</span> +<span id="cb347-14"><a href="#cb347-14" aria-hidden="true" tabindex="-1"></a>Hamlet talks to ghost.</span> +<span id="cb347-15"><a href="#cb347-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">filecontents</span>}</span> +<span id="cb347-16"><a href="#cb347-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb347-17"><a href="#cb347-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[slice=^ ^act-3]{hamlet.md}</span> +<span id="cb347-18"><a href="#cb347-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[slice=act-1]{hamlet.md}</span> +<span id="cb347-19"><a href="#cb347-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[slice=act-3 act-5]{hamlet.md}</span> +<span id="cb347-20"><a href="#cb347-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb317"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb317-1"><a href="#cb317-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb348"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb348-1"><a href="#cb348-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -5348,37 +5961,37 @@ contain the following text:</p> <h2 id="act-v-1">Act V</h2> <p>Hamlet dies.</p> </blockquote> -<h5 class="unnumbered" id="context-example-22">Con<span +<h5 class="unnumbered" id="context-example-24">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>hamlet.md</code> with the following content:</p> -<div class="sourceCode" id="cb318"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb318-1"><a href="#cb318-1" aria-hidden="true" tabindex="-1"></a><span class="fu"># The Tragedy of Hamlet</span></span> -<span id="cb318-2"><a href="#cb318-2" aria-hidden="true" tabindex="-1"></a>Shakespeare's longest play.</span> -<span id="cb318-3"><a href="#cb318-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb318-4"><a href="#cb318-4" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act III {#act-3}</span></span> -<span id="cb318-5"><a href="#cb318-5" aria-hidden="true" tabindex="-1"></a>Hamlet kills Polonius.</span> -<span id="cb318-6"><a href="#cb318-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb318-7"><a href="#cb318-7" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act V {#act-5}</span></span> -<span id="cb318-8"><a href="#cb318-8" aria-hidden="true" tabindex="-1"></a>Hamlet dies.</span> -<span id="cb318-9"><a href="#cb318-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb318-10"><a href="#cb318-10" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act I {#act-1}</span></span> -<span id="cb318-11"><a href="#cb318-11" aria-hidden="true" tabindex="-1"></a>Hamlet talks to ghost.</span></code></pre></div> +<div class="sourceCode" id="cb349"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb349-1"><a href="#cb349-1" aria-hidden="true" tabindex="-1"></a><span class="fu"># The Tragedy of Hamlet</span></span> +<span id="cb349-2"><a href="#cb349-2" aria-hidden="true" tabindex="-1"></a>Shakespeare's longest play.</span> +<span id="cb349-3"><a href="#cb349-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb349-4"><a href="#cb349-4" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act III {#act-3}</span></span> +<span id="cb349-5"><a href="#cb349-5" aria-hidden="true" tabindex="-1"></a>Hamlet kills Polonius.</span> +<span id="cb349-6"><a href="#cb349-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb349-7"><a href="#cb349-7" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act V {#act-5}</span></span> +<span id="cb349-8"><a href="#cb349-8" aria-hidden="true" tabindex="-1"></a>Hamlet dies.</span> +<span id="cb349-9"><a href="#cb349-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb349-10"><a href="#cb349-10" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act I {#act-1}</span></span> +<span id="cb349-11"><a href="#cb349-11" aria-hidden="true" tabindex="-1"></a>Hamlet talks to ghost.</span></code></pre></div> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb319"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb319-1"><a href="#cb319-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb319-2"><a href="#cb319-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[headerAttributes = yes]</span> -<span id="cb319-3"><a href="#cb319-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb319-4"><a href="#cb319-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb319-5"><a href="#cb319-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[slice = ^ ^act-3]{example.md}</span> -<span id="cb319-6"><a href="#cb319-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[slice = act-1]{example.md}</span> -<span id="cb319-7"><a href="#cb319-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[slice = act-3 act-5]{example.md}</span> -<span id="cb319-8"><a href="#cb319-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb319-9"><a href="#cb319-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb350"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb350-1"><a href="#cb350-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb350-2"><a href="#cb350-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[headerAttributes = yes]</span> +<span id="cb350-3"><a href="#cb350-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb350-4"><a href="#cb350-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb350-5"><a href="#cb350-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[slice = ^ ^act-3]{example.md}</span> +<span id="cb350-6"><a href="#cb350-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[slice = act-1]{example.md}</span> +<span id="cb350-7"><a href="#cb350-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[slice = act-3 act-5]{example.md}</span> +<span id="cb350-8"><a href="#cb350-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb350-9"><a href="#cb350-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb320"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb320-1"><a href="#cb320-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb351"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb351-1"><a href="#cb351-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -5391,8 +6004,8 @@ contain the following text:</p> <h2 id="act-v-2">Act V</h2> <p>Hamlet dies.</p> </blockquote> -<h4 data-number="2.2.1.43" id="option-smartellipses"><span -class="header-section-number">2.2.1.43</span> Option +<h4 data-number="2.2.1.48" id="option-smartellipses"><span +class="header-section-number">2.2.1.48</span> Option <code>smartEllipses</code></h4> <dl> <dt><code>smartEllipses</code> (default value: <code>false</code>)</dt> @@ -5415,55 +6028,63 @@ class="tex">T<sub>e</sub>X</span> macro.</p> </dl> </dd> </dl> -<h5 class="unnumbered" id="lua-module-example-11">Lua Module +<h5 class="unnumbered" id="lua-module-example-12">Lua Module Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb321"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb321-1"><a href="#cb321-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb321-2"><a href="#cb321-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span> -<span id="cb321-3"><a href="#cb321-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb321-4"><a href="#cb321-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> -<span id="cb321-5"><a href="#cb321-5" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> -<span id="cb321-6"><a href="#cb321-6" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new()</span> -<span id="cb321-7"><a href="#cb321-7" aria-hidden="true" tabindex="-1"></a> local input = "These are just three regular dots ..."</span> -<span id="cb321-8"><a href="#cb321-8" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> -<span id="cb321-9"><a href="#cb321-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> -<span id="cb321-10"><a href="#cb321-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> -<span id="cb321-11"><a href="#cb321-11" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> -<span id="cb321-12"><a href="#cb321-12" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({smartEllipses = true})</span> -<span id="cb321-13"><a href="#cb321-13" aria-hidden="true" tabindex="-1"></a> local input = "... and this is a victorian ellipsis."</span> -<span id="cb321-14"><a href="#cb321-14" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> -<span id="cb321-15"><a href="#cb321-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb352"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb352-1"><a href="#cb352-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb352-2"><a href="#cb352-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb352-3"><a href="#cb352-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span> +<span id="cb352-4"><a href="#cb352-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb352-5"><a href="#cb352-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb352-6"><a href="#cb352-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb352-7"><a href="#cb352-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb352-8"><a href="#cb352-8" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb352-9"><a href="#cb352-9" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new()</span> +<span id="cb352-10"><a href="#cb352-10" aria-hidden="true" tabindex="-1"></a> local input = "These are just three regular dots ..."</span> +<span id="cb352-11"><a href="#cb352-11" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> +<span id="cb352-12"><a href="#cb352-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> +<span id="cb352-13"><a href="#cb352-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb352-14"><a href="#cb352-14" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb352-15"><a href="#cb352-15" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({smartEllipses = true})</span> +<span id="cb352-16"><a href="#cb352-16" aria-hidden="true" tabindex="-1"></a> local input = "... and this is a victorian ellipsis."</span> +<span id="cb352-17"><a href="#cb352-17" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> +<span id="cb352-18"><a href="#cb352-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb352-19"><a href="#cb352-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Then, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb322"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb322-1"><a href="#cb322-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb353"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb353-1"><a href="#cb353-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>These are just three regular dots …</p> <p>. . . and this is a victorian ellipsis.</p> </blockquote> -<h5 class="unnumbered" id="lua-cli-example-9">Lua CLI Example</h5> +<h5 class="unnumbered" id="lua-cli-example-11">Lua CLI Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb323"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb323-1"><a href="#cb323-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb323-2"><a href="#cb323-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span> -<span id="cb323-3"><a href="#cb323-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb323-4"><a href="#cb323-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> -<span id="cb323-5"><a href="#cb323-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> -<span id="cb323-6"><a href="#cb323-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> -<span id="cb323-7"><a href="#cb323-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb354"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb354-1"><a href="#cb354-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb354-2"><a href="#cb354-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb354-3"><a href="#cb354-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span> +<span id="cb354-4"><a href="#cb354-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb354-5"><a href="#cb354-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb354-6"><a href="#cb354-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb354-7"><a href="#cb354-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> +<span id="cb354-8"><a href="#cb354-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> +<span id="cb354-9"><a href="#cb354-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> +<span id="cb354-10"><a href="#cb354-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb354-11"><a href="#cb354-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Using a text editor, create a text document named <code>content.md</code> with the following content:</p> -<div class="sourceCode" id="cb324"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb324-1"><a href="#cb324-1" aria-hidden="true" tabindex="-1"></a>Are these just three regular dots, a victorian ellipsis, or ... ?</span></code></pre></div> +<div class="sourceCode" id="cb355"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb355-1"><a href="#cb355-1" aria-hidden="true" tabindex="-1"></a>Are these just three regular dots, a victorian ellipsis, or ... ?</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb325"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb325-1"><a href="#cb325-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span> -<span id="cb325-2"><a href="#cb325-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ smartEllipses=true <span class="at">--</span> content.md optiontrue.tex</span> -<span id="cb325-3"><a href="#cb325-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb356"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb356-1"><a href="#cb356-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span> +<span id="cb356-2"><a href="#cb356-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ smartEllipses=true <span class="at">--</span> content.md optiontrue.tex</span> +<span id="cb356-3"><a href="#cb356-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua CLI script file, such as <code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems @@ -5480,95 +6101,95 @@ contain the following text:</p> <p>Are these just three regular dots, a victorian ellipsis, or . . . ?</p> </blockquote> -<h5 class="unnumbered" id="plain-tex-example-14">Plain <span +<h5 class="unnumbered" id="plain-tex-example-16">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb326"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb326-1"><a href="#cb326-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb326-2"><a href="#cb326-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span> -<span id="cb326-3"><a href="#cb326-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb326-4"><a href="#cb326-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb326-5"><a href="#cb326-5" aria-hidden="true" tabindex="-1"></a>These are just three regular dots ...</span> -<span id="cb326-6"><a href="#cb326-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb326-7"><a href="#cb326-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb326-8"><a href="#cb326-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSmartEllipses</span>{true}</span> -<span id="cb326-9"><a href="#cb326-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb326-10"><a href="#cb326-10" aria-hidden="true" tabindex="-1"></a>... and this is a victorian ellipsis.</span> -<span id="cb326-11"><a href="#cb326-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb326-12"><a href="#cb326-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb326-13"><a href="#cb326-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb357"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb357-1"><a href="#cb357-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb357-2"><a href="#cb357-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span> +<span id="cb357-3"><a href="#cb357-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb357-4"><a href="#cb357-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb357-5"><a href="#cb357-5" aria-hidden="true" tabindex="-1"></a>These are just three regular dots ...</span> +<span id="cb357-6"><a href="#cb357-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb357-7"><a href="#cb357-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb357-8"><a href="#cb357-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSmartEllipses</span>{true}</span> +<span id="cb357-9"><a href="#cb357-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb357-10"><a href="#cb357-10" aria-hidden="true" tabindex="-1"></a>... and this is a victorian ellipsis.</span> +<span id="cb357-11"><a href="#cb357-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb357-12"><a href="#cb357-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb357-13"><a href="#cb357-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb327"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb327-1"><a href="#cb327-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb358"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb358-1"><a href="#cb358-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>These are just three regular dots …</p> <p>. . . and this is a victorian ellipsis.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-37"><span +<h5 class="unnumbered" id="latex-example-39"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb328"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb328-1"><a href="#cb328-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb328-2"><a href="#cb328-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb328-3"><a href="#cb328-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb328-4"><a href="#cb328-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb328-5"><a href="#cb328-5" aria-hidden="true" tabindex="-1"></a> ellipsis = {. . .}</span> -<span id="cb328-6"><a href="#cb328-6" aria-hidden="true" tabindex="-1"></a> }</span> -<span id="cb328-7"><a href="#cb328-7" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb328-8"><a href="#cb328-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb328-9"><a href="#cb328-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb328-10"><a href="#cb328-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb328-11"><a href="#cb328-11" aria-hidden="true" tabindex="-1"></a>These are just three regular dots ...</span> -<span id="cb328-12"><a href="#cb328-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb328-13"><a href="#cb328-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb328-14"><a href="#cb328-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{smartEllipses}</span> -<span id="cb328-15"><a href="#cb328-15" aria-hidden="true" tabindex="-1"></a>... and this is a victorian ellipsis.</span> -<span id="cb328-16"><a href="#cb328-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb328-17"><a href="#cb328-17" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb328-18"><a href="#cb328-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb359"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb359-1"><a href="#cb359-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb359-2"><a href="#cb359-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb359-3"><a href="#cb359-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb359-4"><a href="#cb359-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb359-5"><a href="#cb359-5" aria-hidden="true" tabindex="-1"></a> ellipsis = {. . .}</span> +<span id="cb359-6"><a href="#cb359-6" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb359-7"><a href="#cb359-7" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb359-8"><a href="#cb359-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb359-9"><a href="#cb359-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb359-10"><a href="#cb359-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb359-11"><a href="#cb359-11" aria-hidden="true" tabindex="-1"></a>These are just three regular dots ...</span> +<span id="cb359-12"><a href="#cb359-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb359-13"><a href="#cb359-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb359-14"><a href="#cb359-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[smartEllipses]</span> +<span id="cb359-15"><a href="#cb359-15" aria-hidden="true" tabindex="-1"></a>... and this is a victorian ellipsis.</span> +<span id="cb359-16"><a href="#cb359-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb359-17"><a href="#cb359-17" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb359-18"><a href="#cb359-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb329"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb329-1"><a href="#cb329-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb360"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb360-1"><a href="#cb360-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>These are just three regular dots …</p> <p>. . . and this is a victorian ellipsis.</p> </blockquote> -<h5 class="unnumbered" id="context-example-23">Con<span +<h5 class="unnumbered" id="context-example-25">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb330"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb330-1"><a href="#cb330-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb330-2"><a href="#cb330-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span> -<span id="cb330-3"><a href="#cb330-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb330-4"><a href="#cb330-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb330-5"><a href="#cb330-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb330-6"><a href="#cb330-6" aria-hidden="true" tabindex="-1"></a>These are just three regular dots ...</span> -<span id="cb330-7"><a href="#cb330-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb330-8"><a href="#cb330-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb330-9"><a href="#cb330-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[smartEllipses = yes]</span> -<span id="cb330-10"><a href="#cb330-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb330-11"><a href="#cb330-11" aria-hidden="true" tabindex="-1"></a>... and this is a victorian ellipsis.</span> -<span id="cb330-12"><a href="#cb330-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb330-13"><a href="#cb330-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb330-14"><a href="#cb330-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb361"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb361-1"><a href="#cb361-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb361-2"><a href="#cb361-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span> +<span id="cb361-3"><a href="#cb361-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb361-4"><a href="#cb361-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb361-5"><a href="#cb361-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb361-6"><a href="#cb361-6" aria-hidden="true" tabindex="-1"></a>These are just three regular dots ...</span> +<span id="cb361-7"><a href="#cb361-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb361-8"><a href="#cb361-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb361-9"><a href="#cb361-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[smartEllipses = yes]</span> +<span id="cb361-10"><a href="#cb361-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb361-11"><a href="#cb361-11" aria-hidden="true" tabindex="-1"></a>... and this is a victorian ellipsis.</span> +<span id="cb361-12"><a href="#cb361-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb361-13"><a href="#cb361-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb361-14"><a href="#cb361-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb331"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb331-1"><a href="#cb331-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb362"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb362-1"><a href="#cb362-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>These are just three regular dots …</p> <p>. . . and this is a victorian ellipsis.</p> </blockquote> -<h4 data-number="2.2.1.44" id="option-startnumber"><span -class="header-section-number">2.2.1.44</span> Option +<h4 data-number="2.2.1.49" id="option-startnumber"><span +class="header-section-number">2.2.1.49</span> Option <code>startNumber</code></h4> <dl> <dt><code>startNumber</code> (default value: <code>true</code>)</dt> @@ -5594,36 +6215,36 @@ class="tex">T<sub>e</sub>X</span> macro.</p> </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-38"><span +<h5 class="unnumbered" id="latex-example-40"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb332"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb332-1"><a href="#cb332-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb332-2"><a href="#cb332-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb332-3"><a href="#cb332-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb332-4"><a href="#cb332-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb332-5"><a href="#cb332-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb332-6"><a href="#cb332-6" aria-hidden="true" tabindex="-1"></a>The following list respects the numbers specified in the markup:</span> -<span id="cb332-7"><a href="#cb332-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb332-8"><a href="#cb332-8" aria-hidden="true" tabindex="-1"></a>3. third item</span> -<span id="cb332-9"><a href="#cb332-9" aria-hidden="true" tabindex="-1"></a>4. fourth item</span> -<span id="cb332-10"><a href="#cb332-10" aria-hidden="true" tabindex="-1"></a>5. fifth item</span> -<span id="cb332-11"><a href="#cb332-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb332-12"><a href="#cb332-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb332-13"><a href="#cb332-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{startNumber=false}</span> -<span id="cb332-14"><a href="#cb332-14" aria-hidden="true" tabindex="-1"></a>The following list does not respect the numbers specified in the</span> -<span id="cb332-15"><a href="#cb332-15" aria-hidden="true" tabindex="-1"></a>markup:</span> -<span id="cb332-16"><a href="#cb332-16" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb332-17"><a href="#cb332-17" aria-hidden="true" tabindex="-1"></a>3. third item</span> -<span id="cb332-18"><a href="#cb332-18" aria-hidden="true" tabindex="-1"></a>4. fourth item</span> -<span id="cb332-19"><a href="#cb332-19" aria-hidden="true" tabindex="-1"></a>5. fifth item</span> -<span id="cb332-20"><a href="#cb332-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb332-21"><a href="#cb332-21" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb332-22"><a href="#cb332-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb363"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb363-1"><a href="#cb363-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb363-2"><a href="#cb363-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb363-3"><a href="#cb363-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb363-4"><a href="#cb363-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb363-5"><a href="#cb363-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb363-6"><a href="#cb363-6" aria-hidden="true" tabindex="-1"></a>The following list respects the numbers specified in the markup:</span> +<span id="cb363-7"><a href="#cb363-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb363-8"><a href="#cb363-8" aria-hidden="true" tabindex="-1"></a>3. third item</span> +<span id="cb363-9"><a href="#cb363-9" aria-hidden="true" tabindex="-1"></a>4. fourth item</span> +<span id="cb363-10"><a href="#cb363-10" aria-hidden="true" tabindex="-1"></a>5. fifth item</span> +<span id="cb363-11"><a href="#cb363-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb363-12"><a href="#cb363-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb363-13"><a href="#cb363-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[startNumber=false]</span> +<span id="cb363-14"><a href="#cb363-14" aria-hidden="true" tabindex="-1"></a>The following list does not respect the numbers specified in the</span> +<span id="cb363-15"><a href="#cb363-15" aria-hidden="true" tabindex="-1"></a>markup:</span> +<span id="cb363-16"><a href="#cb363-16" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb363-17"><a href="#cb363-17" aria-hidden="true" tabindex="-1"></a>3. third item</span> +<span id="cb363-18"><a href="#cb363-18" aria-hidden="true" tabindex="-1"></a>4. fourth item</span> +<span id="cb363-19"><a href="#cb363-19" aria-hidden="true" tabindex="-1"></a>5. fifth item</span> +<span id="cb363-20"><a href="#cb363-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb363-21"><a href="#cb363-21" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb363-22"><a href="#cb363-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb333"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb333-1"><a href="#cb333-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb364"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb364-1"><a href="#cb364-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -5641,34 +6262,34 @@ markup:</p> <li>fifth item</li> </ol> </blockquote> -<h5 class="unnumbered" id="context-example-24">Con<span +<h5 class="unnumbered" id="context-example-26">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb334"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb334-1"><a href="#cb334-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb334-2"><a href="#cb334-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb334-3"><a href="#cb334-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb334-4"><a href="#cb334-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb334-5"><a href="#cb334-5" aria-hidden="true" tabindex="-1"></a>The following list respects the numbers specified in the markup:</span> -<span id="cb334-6"><a href="#cb334-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb334-7"><a href="#cb334-7" aria-hidden="true" tabindex="-1"></a>3. third item</span> -<span id="cb334-8"><a href="#cb334-8" aria-hidden="true" tabindex="-1"></a>4. fourth item</span> -<span id="cb334-9"><a href="#cb334-9" aria-hidden="true" tabindex="-1"></a>5. fifth item</span> -<span id="cb334-10"><a href="#cb334-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb334-11"><a href="#cb334-11" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb334-12"><a href="#cb334-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[startNumber = no]</span> -<span id="cb334-13"><a href="#cb334-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb334-14"><a href="#cb334-14" aria-hidden="true" tabindex="-1"></a>The following list respects the numbers specified in the markup:</span> -<span id="cb334-15"><a href="#cb334-15" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb334-16"><a href="#cb334-16" aria-hidden="true" tabindex="-1"></a>3. third item</span> -<span id="cb334-17"><a href="#cb334-17" aria-hidden="true" tabindex="-1"></a>4. fourth item</span> -<span id="cb334-18"><a href="#cb334-18" aria-hidden="true" tabindex="-1"></a>5. fifth item</span> -<span id="cb334-19"><a href="#cb334-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb334-20"><a href="#cb334-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb365"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb365-1"><a href="#cb365-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb365-2"><a href="#cb365-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb365-3"><a href="#cb365-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb365-4"><a href="#cb365-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb365-5"><a href="#cb365-5" aria-hidden="true" tabindex="-1"></a>The following list respects the numbers specified in the markup:</span> +<span id="cb365-6"><a href="#cb365-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb365-7"><a href="#cb365-7" aria-hidden="true" tabindex="-1"></a>3. third item</span> +<span id="cb365-8"><a href="#cb365-8" aria-hidden="true" tabindex="-1"></a>4. fourth item</span> +<span id="cb365-9"><a href="#cb365-9" aria-hidden="true" tabindex="-1"></a>5. fifth item</span> +<span id="cb365-10"><a href="#cb365-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb365-11"><a href="#cb365-11" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb365-12"><a href="#cb365-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[startNumber = no]</span> +<span id="cb365-13"><a href="#cb365-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb365-14"><a href="#cb365-14" aria-hidden="true" tabindex="-1"></a>The following list respects the numbers specified in the markup:</span> +<span id="cb365-15"><a href="#cb365-15" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb365-16"><a href="#cb365-16" aria-hidden="true" tabindex="-1"></a>3. third item</span> +<span id="cb365-17"><a href="#cb365-17" aria-hidden="true" tabindex="-1"></a>4. fourth item</span> +<span id="cb365-18"><a href="#cb365-18" aria-hidden="true" tabindex="-1"></a>5. fifth item</span> +<span id="cb365-19"><a href="#cb365-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb365-20"><a href="#cb365-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb335"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb335-1"><a href="#cb335-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb366"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb366-1"><a href="#cb366-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -5686,8 +6307,8 @@ markup:</p> <li>fifth item</li> </ol> </blockquote> -<h4 data-number="2.2.1.45" id="option-strikethrough"><span -class="header-section-number">2.2.1.45</span> Option +<h4 data-number="2.2.1.50" id="option-strikethrough"><span +class="header-section-number">2.2.1.50</span> Option <code>strikeThrough</code></h4> <dl> <dt><code>strikeThrough</code> (default value: <code>false</code>)</dt> @@ -5698,8 +6319,8 @@ class="header-section-number">2.2.1.45</span> Option <p>Enable the Pandoc <a href="https://pandoc.org/MANUAL.html#extension-strikeout">strike-through syntax extension</a>:</p> -<div class="sourceCode" id="cb336"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb336-1"><a href="#cb336-1" aria-hidden="true" tabindex="-1"></a>This ~~is deleted text.~~</span></code></pre></div> +<div class="sourceCode" id="cb367"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb367-1"><a href="#cb367-1" aria-hidden="true" tabindex="-1"></a>This ~~is deleted text.~~</span></code></pre></div> </dd> </dl> </dd> @@ -5712,76 +6333,76 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb336-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="plain-tex-example-15">Plain <span +<h5 class="unnumbered" id="plain-tex-example-17">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb337"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb337-1"><a href="#cb337-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb337-2"><a href="#cb337-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStrikeThrough</span>{true}</span> -<span id="cb337-3"><a href="#cb337-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> soulutf8.sty</span> -<span id="cb337-4"><a href="#cb337-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\st</span>{#1}}</span> -<span id="cb337-5"><a href="#cb337-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb337-6"><a href="#cb337-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span> -<span id="cb337-7"><a href="#cb337-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb337-8"><a href="#cb337-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb368"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb368-1"><a href="#cb368-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb368-2"><a href="#cb368-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStrikeThrough</span>{true}</span> +<span id="cb368-3"><a href="#cb368-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> soulutf8.sty</span> +<span id="cb368-4"><a href="#cb368-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\st</span>{#1}}</span> +<span id="cb368-5"><a href="#cb368-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb368-6"><a href="#cb368-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span> +<span id="cb368-7"><a href="#cb368-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb368-8"><a href="#cb368-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb338"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb338-1"><a href="#cb338-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb369"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb369-1"><a href="#cb369-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>This is <del>a lunar roving vehicle</del> strike-through text.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-39"><span +<h5 class="unnumbered" id="latex-example-41"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb339"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb339-1"><a href="#cb339-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb339-2"><a href="#cb339-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[strikeThrough]{<span class="ex">markdown</span>}</span> -<span id="cb339-3"><a href="#cb339-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soulutf8</span>}</span> -<span id="cb339-4"><a href="#cb339-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb339-5"><a href="#cb339-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb339-6"><a href="#cb339-6" aria-hidden="true" tabindex="-1"></a> strikeThrough = {<span class="fu">\st</span>{#1}},</span> -<span id="cb339-7"><a href="#cb339-7" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb339-8"><a href="#cb339-8" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb339-9"><a href="#cb339-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb339-10"><a href="#cb339-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb339-11"><a href="#cb339-11" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span> -<span id="cb339-12"><a href="#cb339-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb339-13"><a href="#cb339-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb370"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb370-1"><a href="#cb370-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb370-2"><a href="#cb370-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[strikeThrough]{<span class="ex">markdown</span>}</span> +<span id="cb370-3"><a href="#cb370-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soulutf8</span>}</span> +<span id="cb370-4"><a href="#cb370-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb370-5"><a href="#cb370-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb370-6"><a href="#cb370-6" aria-hidden="true" tabindex="-1"></a> strikeThrough = {<span class="fu">\st</span>{#1}},</span> +<span id="cb370-7"><a href="#cb370-7" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb370-8"><a href="#cb370-8" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb370-9"><a href="#cb370-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb370-10"><a href="#cb370-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb370-11"><a href="#cb370-11" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span> +<span id="cb370-12"><a href="#cb370-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb370-13"><a href="#cb370-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb340"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb340-1"><a href="#cb340-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb371"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb371-1"><a href="#cb371-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>This is <del>a lunar roving vehicle</del> strike-through text.</p> </blockquote> -<h5 class="unnumbered" id="context-example-25">Con<span +<h5 class="unnumbered" id="context-example-27">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb341"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb341-1"><a href="#cb341-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb341-2"><a href="#cb341-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[strikeThrough = yes]</span> -<span id="cb341-3"><a href="#cb341-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\overstrikes</span>{#1}}</span> -<span id="cb341-4"><a href="#cb341-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb341-5"><a href="#cb341-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb341-6"><a href="#cb341-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span> -<span id="cb341-7"><a href="#cb341-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb341-8"><a href="#cb341-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb372"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb372-1"><a href="#cb372-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb372-2"><a href="#cb372-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[strikeThrough = yes]</span> +<span id="cb372-3"><a href="#cb372-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\overstrikes</span>{#1}}</span> +<span id="cb372-4"><a href="#cb372-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb372-5"><a href="#cb372-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb372-6"><a href="#cb372-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span> +<span id="cb372-7"><a href="#cb372-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb372-8"><a href="#cb372-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb342"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb342-1"><a href="#cb342-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb373"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb373-1"><a href="#cb373-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>This is <del>a lunar roving vehicle</del> strike-through text.</p> </blockquote> -<h4 data-number="2.2.1.46" id="option-stripindent"><span -class="header-section-number">2.2.1.46</span> Option +<h4 data-number="2.2.1.51" id="option-stripindent"><span +class="header-section-number">2.2.1.51</span> Option <code>stripIndent</code></h4> <dl> <dt><code>stripIndent</code> (default value: <code>false</code>)</dt> @@ -5792,14 +6413,14 @@ class="header-section-number">2.2.1.46</span> Option <p>Strip the minimal indentation of non-blank lines from all lines in a markdown document. Requires that the <strong><code>preserveTabs</code></strong> Lua option is disabled:</p> -<div class="sourceCode" id="cb343"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb343-1"><a href="#cb343-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb343-2"><a href="#cb343-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[stripIndent]{<span class="ex">markdown</span>}</span> -<span id="cb343-3"><a href="#cb343-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb343-4"><a href="#cb343-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb343-5"><a href="#cb343-5" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span> -<span id="cb343-6"><a href="#cb343-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb343-7"><a href="#cb343-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb374"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb374-1"><a href="#cb374-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb374-2"><a href="#cb374-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[stripIndent]{<span class="ex">markdown</span>}</span> +<span id="cb374-3"><a href="#cb374-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb374-4"><a href="#cb374-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb374-5"><a href="#cb374-5" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span> +<span id="cb374-6"><a href="#cb374-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb374-7"><a href="#cb374-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> </dd> </dl> </dd> @@ -5813,58 +6434,58 @@ document.</p> </dl> </dd> </dl> -<h5 class="unnumbered" id="plain-tex-example-16">Plain <span +<h5 class="unnumbered" id="plain-tex-example-18">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb344"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb344-1"><a href="#cb344-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb344-2"><a href="#cb344-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStripIndent</span>{true}</span> -<span id="cb344-3"><a href="#cb344-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb344-4"><a href="#cb344-4" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span> -<span id="cb344-5"><a href="#cb344-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb344-6"><a href="#cb344-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb375"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb375-1"><a href="#cb375-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb375-2"><a href="#cb375-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStripIndent</span>{true}</span> +<span id="cb375-3"><a href="#cb375-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb375-4"><a href="#cb375-4" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span> +<span id="cb375-5"><a href="#cb375-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb375-6"><a href="#cb375-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb345"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb345-1"><a href="#cb345-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb376"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb376-1"><a href="#cb376-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!”</p> -<h5 class="unnumbered" id="latex-example-40"><span +<h5 class="unnumbered" id="latex-example-42"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb346"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb346-1"><a href="#cb346-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb346-2"><a href="#cb346-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[stripIndent]{<span class="ex">markdown</span>}</span> -<span id="cb346-3"><a href="#cb346-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb346-4"><a href="#cb346-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb346-5"><a href="#cb346-5" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span> -<span id="cb346-6"><a href="#cb346-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb346-7"><a href="#cb346-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb377"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb377-1"><a href="#cb377-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb377-2"><a href="#cb377-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[stripIndent]{<span class="ex">markdown</span>}</span> +<span id="cb377-3"><a href="#cb377-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb377-4"><a href="#cb377-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb377-5"><a href="#cb377-5" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span> +<span id="cb377-6"><a href="#cb377-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb377-7"><a href="#cb377-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb347"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb347-1"><a href="#cb347-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb378"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb378-1"><a href="#cb378-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!”</p> -<h5 class="unnumbered" id="context-example-26">Con<span +<h5 class="unnumbered" id="context-example-28">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb348"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb348-1"><a href="#cb348-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb348-2"><a href="#cb348-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[stripIndent = yes]</span> -<span id="cb348-3"><a href="#cb348-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb348-4"><a href="#cb348-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\startmarkdown</span></span> -<span id="cb348-5"><a href="#cb348-5" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span> -<span id="cb348-6"><a href="#cb348-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\stopmarkdown</span></span> -<span id="cb348-7"><a href="#cb348-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb379"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb379-1"><a href="#cb379-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb379-2"><a href="#cb379-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[stripIndent = yes]</span> +<span id="cb379-3"><a href="#cb379-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb379-4"><a href="#cb379-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\startmarkdown</span></span> +<span id="cb379-5"><a href="#cb379-5" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span> +<span id="cb379-6"><a href="#cb379-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\stopmarkdown</span></span> +<span id="cb379-7"><a href="#cb379-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb349"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb349-1"><a href="#cb349-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb380"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb380-1"><a href="#cb380-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!”</p> -<h4 data-number="2.2.1.47" id="option-subscripts"><span -class="header-section-number">2.2.1.47</span> Option +<h4 data-number="2.2.1.52" id="option-subscripts"><span +class="header-section-number">2.2.1.52</span> Option <code>subscripts</code></h4> <dl> <dt><code>subscripts</code> (default value: <code>false</code>)</dt> @@ -5875,8 +6496,8 @@ class="header-section-number">2.2.1.47</span> Option <p>Enable the Pandoc <a href="https://pandoc.org/MANUAL.html#extension-superscript-subscript">subscript syntax extension</a>:</p> -<div class="sourceCode" id="cb350"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb350-1"><a href="#cb350-1" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span></code></pre></div> +<div class="sourceCode" id="cb381"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb381-1"><a href="#cb381-1" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span></code></pre></div> </dd> </dl> </dd> @@ -5889,48 +6510,48 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb350-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-41"><span +<h5 class="unnumbered" id="latex-example-43"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb351"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb351-1"><a href="#cb351-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb351-2"><a href="#cb351-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[subscripts]{<span class="ex">markdown</span>}</span> -<span id="cb351-3"><a href="#cb351-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb351-4"><a href="#cb351-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb351-5"><a href="#cb351-5" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span> -<span id="cb351-6"><a href="#cb351-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb351-7"><a href="#cb351-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb382"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb382-1"><a href="#cb382-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb382-2"><a href="#cb382-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[subscripts]{<span class="ex">markdown</span>}</span> +<span id="cb382-3"><a href="#cb382-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb382-4"><a href="#cb382-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb382-5"><a href="#cb382-5" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span> +<span id="cb382-6"><a href="#cb382-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb382-7"><a href="#cb382-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb352"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb352-1"><a href="#cb352-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb383"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb383-1"><a href="#cb383-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>H<sub>2</sub>O is a liquid.</p> </blockquote> -<h5 class="unnumbered" id="context-example-27">Con<span +<h5 class="unnumbered" id="context-example-29">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb353"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb353-1"><a href="#cb353-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb353-2"><a href="#cb353-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[subscripts = yes]</span> -<span id="cb353-3"><a href="#cb353-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb353-4"><a href="#cb353-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb353-5"><a href="#cb353-5" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span> -<span id="cb353-6"><a href="#cb353-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb353-7"><a href="#cb353-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb384"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb384-1"><a href="#cb384-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb384-2"><a href="#cb384-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[subscripts = yes]</span> +<span id="cb384-3"><a href="#cb384-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb384-4"><a href="#cb384-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb384-5"><a href="#cb384-5" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span> +<span id="cb384-6"><a href="#cb384-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb384-7"><a href="#cb384-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb354"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb354-1"><a href="#cb354-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb385"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb385-1"><a href="#cb385-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>H<sub>2</sub>O is a liquid.</p> </blockquote> -<h4 data-number="2.2.1.48" id="option-superscripts"><span -class="header-section-number">2.2.1.48</span> Option +<h4 data-number="2.2.1.53" id="option-superscripts"><span +class="header-section-number">2.2.1.53</span> Option <code>superscripts</code></h4> <dl> <dt><code>superscripts</code> (default value: <code>false</code>)</dt> @@ -5941,8 +6562,8 @@ class="header-section-number">2.2.1.48</span> Option <p>Enable the Pandoc <a href="https://pandoc.org/MANUAL.html#extension-superscript-subscript">superscript syntax extension</a>:</p> -<div class="sourceCode" id="cb355"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb355-1"><a href="#cb355-1" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span></code></pre></div> +<div class="sourceCode" id="cb386"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb386-1"><a href="#cb386-1" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span></code></pre></div> </dd> </dl> </dd> @@ -5955,48 +6576,171 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb355-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-42"><span +<h5 class="unnumbered" id="latex-example-44"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb356"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb356-1"><a href="#cb356-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb356-2"><a href="#cb356-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[superscripts]{<span class="ex">markdown</span>}</span> -<span id="cb356-3"><a href="#cb356-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb356-4"><a href="#cb356-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb356-5"><a href="#cb356-5" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span> -<span id="cb356-6"><a href="#cb356-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb356-7"><a href="#cb356-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb387"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb387-1"><a href="#cb387-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb387-2"><a href="#cb387-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[superscripts]{<span class="ex">markdown</span>}</span> +<span id="cb387-3"><a href="#cb387-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb387-4"><a href="#cb387-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb387-5"><a href="#cb387-5" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span> +<span id="cb387-6"><a href="#cb387-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb387-7"><a href="#cb387-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb357"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb357-1"><a href="#cb357-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb388"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb388-1"><a href="#cb388-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>2<sup>10</sup> is 1024.</p> </blockquote> -<h5 class="unnumbered" id="context-example-28">Con<span +<h5 class="unnumbered" id="context-example-30">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb358"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb358-1"><a href="#cb358-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb358-2"><a href="#cb358-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[superscripts = yes]</span> -<span id="cb358-3"><a href="#cb358-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb358-4"><a href="#cb358-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb358-5"><a href="#cb358-5" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span> -<span id="cb358-6"><a href="#cb358-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb358-7"><a href="#cb358-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb389"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb389-1"><a href="#cb389-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb389-2"><a href="#cb389-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[superscripts = yes]</span> +<span id="cb389-3"><a href="#cb389-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb389-4"><a href="#cb389-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb389-5"><a href="#cb389-5" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span> +<span id="cb389-6"><a href="#cb389-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb389-7"><a href="#cb389-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb359"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb359-1"><a href="#cb359-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb390"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb390-1"><a href="#cb390-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>2<sup>10</sup> is 1024.</p> </blockquote> -<h4 data-number="2.2.1.49" id="option-tablecaptions"><span -class="header-section-number">2.2.1.49</span> Option +<h4 data-number="2.2.1.54" id="option-tableattributes"><span +class="header-section-number">2.2.1.54</span> Option +<code>tableAttributes</code></h4> +<dl> +<dt><code>tableAttributes</code> (default value: +<code>false</code>)</dt> +<dd> +<dl> +<dt>true</dt> +<dd> +<p>Enable the assignment of HTML attributes to <a +href="#table-captions">table captions</a>.</p> +<div class="sourceCode" id="cb391"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb391-1"><a href="#cb391-1" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span> +<span id="cb391-2"><a href="#cb391-2" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span> +<span id="cb391-3"><a href="#cb391-3" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span> +<span id="cb391-4"><a href="#cb391-4" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span> +<span id="cb391-5"><a href="#cb391-5" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span> +<span id="cb391-6"><a href="#cb391-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb391-7"><a href="#cb391-7" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax. {#example-table}</span></code></pre></div> +</dd> +</dl> +</dd> +<dd> +<dl> +<dt>false</dt> +<dd> +<p>Disable the assignment of HTML attributes to table captions.</p> +</dd> +</dl> +</dd> +</dl> +<h5 class="unnumbered" id="latex-example-45"><span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb392"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb392-1"><a href="#cb392-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb392-2"><a href="#cb392-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[</span> +<span id="cb392-3"><a href="#cb392-3" aria-hidden="true" tabindex="-1"></a> pipeTables,</span> +<span id="cb392-4"><a href="#cb392-4" aria-hidden="true" tabindex="-1"></a> tableCaptions,</span> +<span id="cb392-5"><a href="#cb392-5" aria-hidden="true" tabindex="-1"></a> tableAttributes,</span> +<span id="cb392-6"><a href="#cb392-6" aria-hidden="true" tabindex="-1"></a> relativeReferences,</span> +<span id="cb392-7"><a href="#cb392-7" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</span>}</span> +<span id="cb392-8"><a href="#cb392-8" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span> +<span id="cb392-9"><a href="#cb392-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span> +<span id="cb392-10"><a href="#cb392-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb392-11"><a href="#cb392-11" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb392-12"><a href="#cb392-12" aria-hidden="true" tabindex="-1"></a> tableAttributeContextBegin = {</span> +<span id="cb392-13"><a href="#cb392-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span> +<span id="cb392-14"><a href="#cb392-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span> +<span id="cb392-15"><a href="#cb392-15" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb392-16"><a href="#cb392-16" aria-hidden="true" tabindex="-1"></a> attributeIdentifier = {</span> +<span id="cb392-17"><a href="#cb392-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span> +<span id="cb392-18"><a href="#cb392-18" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb392-19"><a href="#cb392-19" aria-hidden="true" tabindex="-1"></a> tableAttributeContextEnd = {</span> +<span id="cb392-20"><a href="#cb392-20" aria-hidden="true" tabindex="-1"></a> <span class="kw">\label</span>{<span class="ex">##1</span>}</span> +<span id="cb392-21"><a href="#cb392-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span> +<span id="cb392-22"><a href="#cb392-22" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb392-23"><a href="#cb392-23" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb392-24"><a href="#cb392-24" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb392-25"><a href="#cb392-25" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb392-26"><a href="#cb392-26" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb392-27"><a href="#cb392-27" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb392-28"><a href="#cb392-28" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb392-29"><a href="#cb392-29" aria-hidden="true" tabindex="-1"></a> tableAttributeContextEnd = {</span> +<span id="cb392-30"><a href="#cb392-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span> +<span id="cb392-31"><a href="#cb392-31" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb392-32"><a href="#cb392-32" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb392-33"><a href="#cb392-33" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb392-34"><a href="#cb392-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span> +<span id="cb392-35"><a href="#cb392-35" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb392-36"><a href="#cb392-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb392-37"><a href="#cb392-37" aria-hidden="true" tabindex="-1"></a>See Table <#example-table>.</span> +<span id="cb392-38"><a href="#cb392-38" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb392-39"><a href="#cb392-39" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span> +<span id="cb392-40"><a href="#cb392-40" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span> +<span id="cb392-41"><a href="#cb392-41" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span> +<span id="cb392-42"><a href="#cb392-42" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span> +<span id="cb392-43"><a href="#cb392-43" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span> +<span id="cb392-44"><a href="#cb392-44" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb392-45"><a href="#cb392-45" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax. {#example-table}</span> +<span id="cb392-46"><a href="#cb392-46" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb392-47"><a href="#cb392-47" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb393"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb393-1"><a href="#cb393-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<p>See Table 1.</p> +<table> +<caption>Table 1. Demonstration of pipe table syntax.</caption> +<thead> +<tr class="header"> +<th style="text-align: right;">Right</th> +<th style="text-align: left;">Left</th> +<th>Default</th> +<th style="text-align: center;">Center</th> +</tr> +</thead> +<tbody> +<tr class="odd"> +<td style="text-align: right;">12</td> +<td style="text-align: left;">12</td> +<td>12</td> +<td style="text-align: center;">12</td> +</tr> +<tr class="even"> +<td style="text-align: right;">123</td> +<td style="text-align: left;">123</td> +<td>123</td> +<td style="text-align: center;">123</td> +</tr> +<tr class="odd"> +<td style="text-align: right;">1</td> +<td style="text-align: left;">1</td> +<td>1</td> +<td style="text-align: center;">1</td> +</tr> +</tbody> +</table> +</blockquote> +<h4 data-number="2.2.1.55" id="table-captions"><span +class="header-section-number">2.2.1.55</span> Option <code>tableCaptions</code></h4> <dl> <dt><code>tableCaptions</code> (default value: <code>false</code>)</dt> @@ -6008,14 +6752,14 @@ class="header-section-number">2.2.1.49</span> Option href="https://pandoc.org/MANUAL.html#extension-table_captions">table caption syntax extension</a> for <a href="#pipe-tables">pipe tables</a>.</p> -<div class="sourceCode" id="cb360"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb360-1"><a href="#cb360-1" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span> -<span id="cb360-2"><a href="#cb360-2" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span> -<span id="cb360-3"><a href="#cb360-3" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span> -<span id="cb360-4"><a href="#cb360-4" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span> -<span id="cb360-5"><a href="#cb360-5" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span> -<span id="cb360-6"><a href="#cb360-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb360-7"><a href="#cb360-7" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax.</span></code></pre></div> +<div class="sourceCode" id="cb394"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb394-1"><a href="#cb394-1" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span> +<span id="cb394-2"><a href="#cb394-2" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span> +<span id="cb394-3"><a href="#cb394-3" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span> +<span id="cb394-4"><a href="#cb394-4" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span> +<span id="cb394-5"><a href="#cb394-5" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span> +<span id="cb394-6"><a href="#cb394-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb394-7"><a href="#cb394-7" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax.</span></code></pre></div> </dd> </dl> </dd> @@ -6028,27 +6772,27 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb360-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-43"><span +<h5 class="unnumbered" id="latex-example-46"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb361"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb361-1"><a href="#cb361-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb361-2"><a href="#cb361-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[pipeTables, tableCaptions]{<span class="ex">markdown</span>}</span> -<span id="cb361-3"><a href="#cb361-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb361-4"><a href="#cb361-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb361-5"><a href="#cb361-5" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span> -<span id="cb361-6"><a href="#cb361-6" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span> -<span id="cb361-7"><a href="#cb361-7" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span> -<span id="cb361-8"><a href="#cb361-8" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span> -<span id="cb361-9"><a href="#cb361-9" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span> -<span id="cb361-10"><a href="#cb361-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb361-11"><a href="#cb361-11" aria-hidden="true" tabindex="-1"></a>: Demonstration of pipe table syntax.</span> -<span id="cb361-12"><a href="#cb361-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb361-13"><a href="#cb361-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb395"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb395-1"><a href="#cb395-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb395-2"><a href="#cb395-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[pipeTables, tableCaptions]{<span class="ex">markdown</span>}</span> +<span id="cb395-3"><a href="#cb395-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb395-4"><a href="#cb395-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb395-5"><a href="#cb395-5" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span> +<span id="cb395-6"><a href="#cb395-6" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span> +<span id="cb395-7"><a href="#cb395-7" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span> +<span id="cb395-8"><a href="#cb395-8" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span> +<span id="cb395-9"><a href="#cb395-9" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span> +<span id="cb395-10"><a href="#cb395-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb395-11"><a href="#cb395-11" aria-hidden="true" tabindex="-1"></a>: Demonstration of pipe table syntax.</span> +<span id="cb395-12"><a href="#cb395-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb395-13"><a href="#cb395-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb362"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb362-1"><a href="#cb362-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb396"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb396-1"><a href="#cb396-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -6084,31 +6828,31 @@ contain the following text:</p> </tbody> </table> </blockquote> -<h5 class="unnumbered" id="context-example-29">Con<span +<h5 class="unnumbered" id="context-example-31">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb363"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb363-1"><a href="#cb363-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb363-2"><a href="#cb363-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span> -<span id="cb363-3"><a href="#cb363-3" aria-hidden="true" tabindex="-1"></a> [</span> -<span id="cb363-4"><a href="#cb363-4" aria-hidden="true" tabindex="-1"></a> pipeTables = yes,</span> -<span id="cb363-5"><a href="#cb363-5" aria-hidden="true" tabindex="-1"></a> tableCaptions = yes,</span> -<span id="cb363-6"><a href="#cb363-6" aria-hidden="true" tabindex="-1"></a> ]</span> -<span id="cb363-7"><a href="#cb363-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb363-8"><a href="#cb363-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb363-9"><a href="#cb363-9" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span> -<span id="cb363-10"><a href="#cb363-10" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span> -<span id="cb363-11"><a href="#cb363-11" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span> -<span id="cb363-12"><a href="#cb363-12" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span> -<span id="cb363-13"><a href="#cb363-13" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span> -<span id="cb363-14"><a href="#cb363-14" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb363-15"><a href="#cb363-15" aria-hidden="true" tabindex="-1"></a>: Demonstration of pipe table syntax.</span> -<span id="cb363-16"><a href="#cb363-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb363-17"><a href="#cb363-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb397"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb397-1"><a href="#cb397-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb397-2"><a href="#cb397-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span> +<span id="cb397-3"><a href="#cb397-3" aria-hidden="true" tabindex="-1"></a> [</span> +<span id="cb397-4"><a href="#cb397-4" aria-hidden="true" tabindex="-1"></a> pipeTables = yes,</span> +<span id="cb397-5"><a href="#cb397-5" aria-hidden="true" tabindex="-1"></a> tableCaptions = yes,</span> +<span id="cb397-6"><a href="#cb397-6" aria-hidden="true" tabindex="-1"></a> ]</span> +<span id="cb397-7"><a href="#cb397-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb397-8"><a href="#cb397-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb397-9"><a href="#cb397-9" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span> +<span id="cb397-10"><a href="#cb397-10" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span> +<span id="cb397-11"><a href="#cb397-11" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span> +<span id="cb397-12"><a href="#cb397-12" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span> +<span id="cb397-13"><a href="#cb397-13" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span> +<span id="cb397-14"><a href="#cb397-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb397-15"><a href="#cb397-15" aria-hidden="true" tabindex="-1"></a>: Demonstration of pipe table syntax.</span> +<span id="cb397-16"><a href="#cb397-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb397-17"><a href="#cb397-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb364"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb364-1"><a href="#cb364-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb398"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb398-1"><a href="#cb398-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -6144,8 +6888,8 @@ contain the following text:</p> </tbody> </table> </blockquote> -<h4 data-number="2.2.1.50" id="option-tasklists"><span -class="header-section-number">2.2.1.50</span> Option +<h4 data-number="2.2.1.56" id="option-tasklists"><span +class="header-section-number">2.2.1.56</span> Option <code>taskLists</code></h4> <dl> <dt><code>taskLists</code> (default value: <code>false</code>)</dt> @@ -6156,10 +6900,10 @@ class="header-section-number">2.2.1.50</span> Option <p>Enable the Pandoc <a href="https://pandoc.org/MANUAL.html#extension-task_lists">task list syntax extension</a>:</p> -<div class="sourceCode" id="cb365"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb365-1"><a href="#cb365-1" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span><span class="va">[ ]</span> an unticked task list item</span> -<span id="cb365-2"><a href="#cb365-2" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span><span class="co">[</span><span class="ot">/</span><span class="co">]</span> a half-checked task list item</span> -<span id="cb365-3"><a href="#cb365-3" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span><span class="co">[</span><span class="ot">X</span><span class="co">]</span> a ticked task list item</span></code></pre></div> +<div class="sourceCode" id="cb399"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb399-1"><a href="#cb399-1" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span><span class="va">[ ]</span> an unticked task list item</span> +<span id="cb399-2"><a href="#cb399-2" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span><span class="co">[</span><span class="ot">/</span><span class="co">]</span> a half-checked task list item</span> +<span id="cb399-3"><a href="#cb399-3" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span><span class="co">[</span><span class="ot">X</span><span class="co">]</span> a ticked task list item</span></code></pre></div> </dd> </dl> </dd> @@ -6172,30 +6916,30 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb365-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-44"><span +<h5 class="unnumbered" id="latex-example-47"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb366"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb366-1"><a href="#cb366-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb366-2"><a href="#cb366-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[taskLists]{<span class="ex">markdown</span>}</span> -<span id="cb366-3"><a href="#cb366-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb366-4"><a href="#cb366-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb366-5"><a href="#cb366-5" aria-hidden="true" tabindex="-1"></a> untickedBox = No,</span> -<span id="cb366-6"><a href="#cb366-6" aria-hidden="true" tabindex="-1"></a> halfTickedBox = Maybe,</span> -<span id="cb366-7"><a href="#cb366-7" aria-hidden="true" tabindex="-1"></a> tickedBox = Yes,</span> -<span id="cb366-8"><a href="#cb366-8" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb366-9"><a href="#cb366-9" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb366-10"><a href="#cb366-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb366-11"><a href="#cb366-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb366-12"><a href="#cb366-12" aria-hidden="true" tabindex="-1"></a>- [ ] you can't.</span> -<span id="cb366-13"><a href="#cb366-13" aria-hidden="true" tabindex="-1"></a>- [/] I can?</span> -<span id="cb366-14"><a href="#cb366-14" aria-hidden="true" tabindex="-1"></a>- [X] I can!</span> -<span id="cb366-15"><a href="#cb366-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb366-16"><a href="#cb366-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb400"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb400-1"><a href="#cb400-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb400-2"><a href="#cb400-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[taskLists]{<span class="ex">markdown</span>}</span> +<span id="cb400-3"><a href="#cb400-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb400-4"><a href="#cb400-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb400-5"><a href="#cb400-5" aria-hidden="true" tabindex="-1"></a> untickedBox = No,</span> +<span id="cb400-6"><a href="#cb400-6" aria-hidden="true" tabindex="-1"></a> halfTickedBox = Maybe,</span> +<span id="cb400-7"><a href="#cb400-7" aria-hidden="true" tabindex="-1"></a> tickedBox = Yes,</span> +<span id="cb400-8"><a href="#cb400-8" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb400-9"><a href="#cb400-9" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb400-10"><a href="#cb400-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb400-11"><a href="#cb400-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb400-12"><a href="#cb400-12" aria-hidden="true" tabindex="-1"></a>- [ ] you can't.</span> +<span id="cb400-13"><a href="#cb400-13" aria-hidden="true" tabindex="-1"></a>- [/] I can?</span> +<span id="cb400-14"><a href="#cb400-14" aria-hidden="true" tabindex="-1"></a>- [X] I can!</span> +<span id="cb400-15"><a href="#cb400-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb400-16"><a href="#cb400-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb367"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb367-1"><a href="#cb367-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb401"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb401-1"><a href="#cb401-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -6205,26 +6949,26 @@ contain the following text:</p> <li>Yes I can!</li> </ul> </blockquote> -<h5 class="unnumbered" id="context-example-30">Con<span +<h5 class="unnumbered" id="context-example-32">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb368"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb368-1"><a href="#cb368-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb368-2"><a href="#cb368-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[taskLists = yes]</span> -<span id="cb368-3"><a href="#cb368-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUntickedBox</span>{No}</span> -<span id="cb368-4"><a href="#cb368-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHalftickedBox</span>{Maybe}</span> -<span id="cb368-5"><a href="#cb368-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTickedBox</span>{Yes}</span> -<span id="cb368-6"><a href="#cb368-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb368-7"><a href="#cb368-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb368-8"><a href="#cb368-8" aria-hidden="true" tabindex="-1"></a>- [ ] you can't.</span> -<span id="cb368-9"><a href="#cb368-9" aria-hidden="true" tabindex="-1"></a>- [/] I can?</span> -<span id="cb368-10"><a href="#cb368-10" aria-hidden="true" tabindex="-1"></a>- [X] I can!</span> -<span id="cb368-11"><a href="#cb368-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb368-12"><a href="#cb368-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb402"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb402-1"><a href="#cb402-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb402-2"><a href="#cb402-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[taskLists = yes]</span> +<span id="cb402-3"><a href="#cb402-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUntickedBox</span>{No}</span> +<span id="cb402-4"><a href="#cb402-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHalftickedBox</span>{Maybe}</span> +<span id="cb402-5"><a href="#cb402-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTickedBox</span>{Yes}</span> +<span id="cb402-6"><a href="#cb402-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb402-7"><a href="#cb402-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb402-8"><a href="#cb402-8" aria-hidden="true" tabindex="-1"></a>- [ ] you can't.</span> +<span id="cb402-9"><a href="#cb402-9" aria-hidden="true" tabindex="-1"></a>- [/] I can?</span> +<span id="cb402-10"><a href="#cb402-10" aria-hidden="true" tabindex="-1"></a>- [X] I can!</span> +<span id="cb402-11"><a href="#cb402-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb402-12"><a href="#cb402-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb369"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb369-1"><a href="#cb369-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb403"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb403-1"><a href="#cb403-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -6234,8 +6978,8 @@ contain the following text:</p> <li>Yes I can!</li> </ul> </blockquote> -<h4 data-number="2.2.1.51" id="option-texcomments"><span -class="header-section-number">2.2.1.51</span> Option +<h4 data-number="2.2.1.57" id="option-texcomments"><span +class="header-section-number">2.2.1.57</span> Option <code>texComments</code></h4> <dl> <dt><code>texComments</code> (default value: <code>false</code>)</dt> @@ -6244,15 +6988,15 @@ class="header-section-number">2.2.1.51</span> Option <dt>true</dt> <dd> <p>Strip <span class="tex">T<sub>e</sub>X</span>-style comments.</p> -<div class="sourceCode" id="cb370"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb370-1"><a href="#cb370-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb370-2"><a href="#cb370-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texComments]{<span class="ex">markdown</span>}</span> -<span id="cb370-3"><a href="#cb370-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb370-4"><a href="#cb370-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb370-5"><a href="#cb370-5" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span> -<span id="cb370-6"><a href="#cb370-6" aria-hidden="true" tabindex="-1"></a> lo *world*!</span> -<span id="cb370-7"><a href="#cb370-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb370-8"><a href="#cb370-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb404"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb404-1"><a href="#cb404-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb404-2"><a href="#cb404-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texComments]{<span class="ex">markdown</span>}</span> +<span id="cb404-3"><a href="#cb404-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb404-4"><a href="#cb404-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb404-5"><a href="#cb404-5" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span> +<span id="cb404-6"><a href="#cb404-6" aria-hidden="true" tabindex="-1"></a> lo *world*!</span> +<span id="cb404-7"><a href="#cb404-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb404-8"><a href="#cb404-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Always enabled when <strong><code>hybrid</code></strong> is enabled.</p> </dd> @@ -6268,61 +7012,61 @@ comments.</p> </dl> </dd> </dl> -<h5 class="unnumbered" id="plain-tex-example-17">Plain <span +<h5 class="unnumbered" id="plain-tex-example-19">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb371"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb371-1"><a href="#cb371-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb371-2"><a href="#cb371-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexComments</span>{true}</span> -<span id="cb371-3"><a href="#cb371-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb371-4"><a href="#cb371-4" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span> -<span id="cb371-5"><a href="#cb371-5" aria-hidden="true" tabindex="-1"></a> lo *world*!</span> -<span id="cb371-6"><a href="#cb371-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb371-7"><a href="#cb371-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb405"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb405-1"><a href="#cb405-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb405-2"><a href="#cb405-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexComments</span>{true}</span> +<span id="cb405-3"><a href="#cb405-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb405-4"><a href="#cb405-4" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span> +<span id="cb405-5"><a href="#cb405-5" aria-hidden="true" tabindex="-1"></a> lo *world*!</span> +<span id="cb405-6"><a href="#cb405-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb405-7"><a href="#cb405-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb372"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb372-1"><a href="#cb372-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb406"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb406-1"><a href="#cb406-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!”</p> -<h5 class="unnumbered" id="latex-example-45"><span +<h5 class="unnumbered" id="latex-example-48"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb373"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb373-1"><a href="#cb373-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb373-2"><a href="#cb373-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texComments]{<span class="ex">markdown</span>}</span> -<span id="cb373-3"><a href="#cb373-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb373-4"><a href="#cb373-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb373-5"><a href="#cb373-5" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span> -<span id="cb373-6"><a href="#cb373-6" aria-hidden="true" tabindex="-1"></a> lo *world*!</span> -<span id="cb373-7"><a href="#cb373-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb373-8"><a href="#cb373-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb407"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb407-1"><a href="#cb407-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb407-2"><a href="#cb407-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texComments]{<span class="ex">markdown</span>}</span> +<span id="cb407-3"><a href="#cb407-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb407-4"><a href="#cb407-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb407-5"><a href="#cb407-5" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span> +<span id="cb407-6"><a href="#cb407-6" aria-hidden="true" tabindex="-1"></a> lo *world*!</span> +<span id="cb407-7"><a href="#cb407-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb407-8"><a href="#cb407-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb374"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb374-1"><a href="#cb374-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb408"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb408-1"><a href="#cb408-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!”</p> -<h5 class="unnumbered" id="context-example-31">Con<span +<h5 class="unnumbered" id="context-example-33">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb375"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb375-1"><a href="#cb375-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb375-2"><a href="#cb375-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texComments = yes]</span> -<span id="cb375-3"><a href="#cb375-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb375-4"><a href="#cb375-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb375-5"><a href="#cb375-5" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span> -<span id="cb375-6"><a href="#cb375-6" aria-hidden="true" tabindex="-1"></a> lo *world*!</span> -<span id="cb375-7"><a href="#cb375-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb375-8"><a href="#cb375-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb409"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb409-1"><a href="#cb409-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb409-2"><a href="#cb409-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texComments = yes]</span> +<span id="cb409-3"><a href="#cb409-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb409-4"><a href="#cb409-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb409-5"><a href="#cb409-5" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span> +<span id="cb409-6"><a href="#cb409-6" aria-hidden="true" tabindex="-1"></a> lo *world*!</span> +<span id="cb409-7"><a href="#cb409-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb409-8"><a href="#cb409-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb376"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb376-1"><a href="#cb376-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb410"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb410-1"><a href="#cb410-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!”</p> -<h4 data-number="2.2.1.52" id="option-texmathdollars"><span -class="header-section-number">2.2.1.52</span> Option +<h4 data-number="2.2.1.58" id="option-texmathdollars"><span +class="header-section-number">2.2.1.58</span> Option <code>texMathDollars</code></h4> <dl> <dt><code>texMathDollars</code> (default value: <code>false</code>)</dt> @@ -6333,10 +7077,10 @@ class="header-section-number">2.2.1.52</span> Option <p>Enable the Pandoc <a href="https://pandoc.org/MANUAL.html#extension-tex_math_dollars">dollar math syntax extension</a>:</p> -<div class="sourceCode" id="cb377"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb377-1"><a href="#cb377-1" aria-hidden="true" tabindex="-1"></a><span class="an">inline math:</span><span class="co"> $E=mc^2$</span></span> -<span id="cb377-2"><a href="#cb377-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb377-3"><a href="#cb377-3" aria-hidden="true" tabindex="-1"></a>display math: $$E=mc^2$$</span></code></pre></div> +<div class="sourceCode" id="cb411"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb411-1"><a href="#cb411-1" aria-hidden="true" tabindex="-1"></a><span class="an">inline math:</span><span class="co"> $E=mc^2$</span></span> +<span id="cb411-2"><a href="#cb411-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb411-3"><a href="#cb411-3" aria-hidden="true" tabindex="-1"></a>display math: $$E=mc^2$$</span></code></pre></div> </dd> </dl> </dd> @@ -6349,25 +7093,29 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb377-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="lua-module-example-12">Lua Module +<h5 class="unnumbered" id="lua-module-example-13">Lua Module Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb378"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb378-1"><a href="#cb378-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb378-2"><a href="#cb378-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb378-3"><a href="#cb378-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> -<span id="cb378-4"><a href="#cb378-4" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> -<span id="cb378-5"><a href="#cb378-5" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span> -<span id="cb378-6"><a href="#cb378-6" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({texMathDollars = true})</span> -<span id="cb378-7"><a href="#cb378-7" aria-hidden="true" tabindex="-1"></a> local input =</span> -<span id="cb378-8"><a href="#cb378-8" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">$E=mc^2$</span>]] .. newline .. newline ..</span> -<span id="cb378-9"><a href="#cb378-9" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span>]]</span> -<span id="cb378-10"><a href="#cb378-10" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> -<span id="cb378-11"><a href="#cb378-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb412"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb412-1"><a href="#cb412-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb412-2"><a href="#cb412-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb412-3"><a href="#cb412-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb412-4"><a href="#cb412-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb412-5"><a href="#cb412-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb412-6"><a href="#cb412-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb412-7"><a href="#cb412-7" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb412-8"><a href="#cb412-8" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span> +<span id="cb412-9"><a href="#cb412-9" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({texMathDollars = true})</span> +<span id="cb412-10"><a href="#cb412-10" aria-hidden="true" tabindex="-1"></a> local input =</span> +<span id="cb412-11"><a href="#cb412-11" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">$E=mc^2$</span>]] .. newline .. newline ..</span> +<span id="cb412-12"><a href="#cb412-12" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span>]]</span> +<span id="cb412-13"><a href="#cb412-13" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> +<span id="cb412-14"><a href="#cb412-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb412-15"><a href="#cb412-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Then, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb379"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb379-1"><a href="#cb379-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb413"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb413-1"><a href="#cb413-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -6376,27 +7124,31 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p> <p><span class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p> </blockquote> -<h5 class="unnumbered" id="lua-cli-example-10">Lua CLI Example</h5> +<h5 class="unnumbered" id="lua-cli-example-12">Lua CLI Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb380"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb380-1"><a href="#cb380-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb380-2"><a href="#cb380-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb380-3"><a href="#cb380-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> -<span id="cb380-4"><a href="#cb380-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> -<span id="cb380-5"><a href="#cb380-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> -<span id="cb380-6"><a href="#cb380-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb414"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb414-1"><a href="#cb414-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb414-2"><a href="#cb414-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb414-3"><a href="#cb414-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb414-4"><a href="#cb414-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb414-5"><a href="#cb414-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb414-6"><a href="#cb414-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> +<span id="cb414-7"><a href="#cb414-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> +<span id="cb414-8"><a href="#cb414-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> +<span id="cb414-9"><a href="#cb414-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb414-10"><a href="#cb414-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Using a text editor, create a text document named <code>content.md</code> with the following content:</p> -<div class="sourceCode" id="cb381"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb381-1"><a href="#cb381-1" aria-hidden="true" tabindex="-1"></a>$E=mc^2$</span> -<span id="cb381-2"><a href="#cb381-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb381-3"><a href="#cb381-3" aria-hidden="true" tabindex="-1"></a>$$\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx$$</span></code></pre></div> +<div class="sourceCode" id="cb415"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb415-1"><a href="#cb415-1" aria-hidden="true" tabindex="-1"></a>$E=mc^2$</span> +<span id="cb415-2"><a href="#cb415-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb415-3"><a href="#cb415-3" aria-hidden="true" tabindex="-1"></a>$$\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx$$</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb382"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb382-1"><a href="#cb382-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span> -<span id="cb382-2"><a href="#cb382-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ texMathDollars=true <span class="at">--</span> content.md optiontrue.tex</span> -<span id="cb382-3"><a href="#cb382-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb416"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb416-1"><a href="#cb416-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span> +<span id="cb416-2"><a href="#cb416-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ texMathDollars=true <span class="at">--</span> content.md optiontrue.tex</span> +<span id="cb416-3"><a href="#cb416-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua CLI script file, such as <code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems @@ -6417,24 +7169,24 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p> <p><span class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p> </blockquote> -<h5 class="unnumbered" id="plain-tex-example-18">Plain <span +<h5 class="unnumbered" id="plain-tex-example-20">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb383"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb383-1"><a href="#cb383-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb383-2"><a href="#cb383-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb383-3"><a href="#cb383-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDollars</span>{true}</span> -<span id="cb383-4"><a href="#cb383-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb383-5"><a href="#cb383-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span> -<span id="cb383-6"><a href="#cb383-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb383-7"><a href="#cb383-7" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span> -<span id="cb383-8"><a href="#cb383-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb383-9"><a href="#cb383-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb383-10"><a href="#cb383-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb417"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb417-1"><a href="#cb417-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb417-2"><a href="#cb417-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb417-3"><a href="#cb417-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDollars</span>{true}</span> +<span id="cb417-4"><a href="#cb417-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb417-5"><a href="#cb417-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span> +<span id="cb417-6"><a href="#cb417-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb417-7"><a href="#cb417-7" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span> +<span id="cb417-8"><a href="#cb417-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb417-9"><a href="#cb417-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb417-10"><a href="#cb417-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb384"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb384-1"><a href="#cb384-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb418"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb418-1"><a href="#cb418-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -6443,25 +7195,25 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p> <p><span class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p> </blockquote> -<h5 class="unnumbered" id="latex-example-46"><span +<h5 class="unnumbered" id="latex-example-49"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb385"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb385-1"><a href="#cb385-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb385-2"><a href="#cb385-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathDollars]{<span class="ex">markdown</span>}</span> -<span id="cb385-3"><a href="#cb385-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb385-4"><a href="#cb385-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb385-5"><a href="#cb385-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb385-6"><a href="#cb385-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span> -<span id="cb385-7"><a href="#cb385-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb385-8"><a href="#cb385-8" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span> -<span id="cb385-9"><a href="#cb385-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb385-10"><a href="#cb385-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb385-11"><a href="#cb385-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb419"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb419-1"><a href="#cb419-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb419-2"><a href="#cb419-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathDollars]{<span class="ex">markdown</span>}</span> +<span id="cb419-3"><a href="#cb419-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb419-4"><a href="#cb419-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb419-5"><a href="#cb419-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb419-6"><a href="#cb419-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span> +<span id="cb419-7"><a href="#cb419-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb419-8"><a href="#cb419-8" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span> +<span id="cb419-9"><a href="#cb419-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb419-10"><a href="#cb419-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb419-11"><a href="#cb419-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb386"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb386-1"><a href="#cb386-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb420"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb420-1"><a href="#cb420-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -6470,25 +7222,25 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p> <p><span class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p> </blockquote> -<h5 class="unnumbered" id="context-example-32">Con<span +<h5 class="unnumbered" id="context-example-34">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb387"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb387-1"><a href="#cb387-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb387-2"><a href="#cb387-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathDollars = yes]</span> -<span id="cb387-3"><a href="#cb387-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb387-4"><a href="#cb387-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb387-5"><a href="#cb387-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb387-6"><a href="#cb387-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span> -<span id="cb387-7"><a href="#cb387-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb387-8"><a href="#cb387-8" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span> -<span id="cb387-9"><a href="#cb387-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb387-10"><a href="#cb387-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb387-11"><a href="#cb387-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb421"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb421-1"><a href="#cb421-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb421-2"><a href="#cb421-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathDollars = yes]</span> +<span id="cb421-3"><a href="#cb421-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb421-4"><a href="#cb421-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb421-5"><a href="#cb421-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb421-6"><a href="#cb421-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span> +<span id="cb421-7"><a href="#cb421-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb421-8"><a href="#cb421-8" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span> +<span id="cb421-9"><a href="#cb421-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb421-10"><a href="#cb421-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb421-11"><a href="#cb421-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb388"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb388-1"><a href="#cb388-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb422"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb422-1"><a href="#cb422-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -6497,8 +7249,8 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p> <p><span class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p> </blockquote> -<h4 data-number="2.2.1.53" id="option-texmathdoublebackslash"><span -class="header-section-number">2.2.1.53</span> Option +<h4 data-number="2.2.1.59" id="option-texmathdoublebackslash"><span +class="header-section-number">2.2.1.59</span> Option <code>texMathDoubleBackslash</code></h4> <dl> <dt><code>texMathDoubleBackslash</code> (default value: @@ -6510,10 +7262,10 @@ class="header-section-number">2.2.1.53</span> Option <p>Enable the Pandoc <a href="https://pandoc.org/MANUAL.html#extension-tex_math_double_backslash">double backslash math syntax extension</a>:</p> -<div class="sourceCode" id="cb389"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb389-1"><a href="#cb389-1" aria-hidden="true" tabindex="-1"></a><span class="an">inline math:</span><span class="co"> \\(E=mc^2\\)</span></span> -<span id="cb389-2"><a href="#cb389-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb389-3"><a href="#cb389-3" aria-hidden="true" tabindex="-1"></a>display math: <span class="sc">\\</span><span class="co">[</span><span class="ot">E=mc^2\\]</span></span></code></pre></div> +<div class="sourceCode" id="cb423"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb423-1"><a href="#cb423-1" aria-hidden="true" tabindex="-1"></a><span class="an">inline math:</span><span class="co"> \\(E=mc^2\\)</span></span> +<span id="cb423-2"><a href="#cb423-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb423-3"><a href="#cb423-3" aria-hidden="true" tabindex="-1"></a>display math: <span class="sc">\\</span><span class="co">[</span><span class="ot">E=mc^2\\]</span></span></code></pre></div> </dd> </dl> </dd> @@ -6526,25 +7278,29 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb389-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="lua-module-example-13">Lua Module +<h5 class="unnumbered" id="lua-module-example-14">Lua Module Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb390"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb390-1"><a href="#cb390-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb390-2"><a href="#cb390-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb390-3"><a href="#cb390-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> -<span id="cb390-4"><a href="#cb390-4" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> -<span id="cb390-5"><a href="#cb390-5" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span> -<span id="cb390-6"><a href="#cb390-6" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({texMathDoubleBackslash = true})</span> -<span id="cb390-7"><a href="#cb390-7" aria-hidden="true" tabindex="-1"></a> local input =</span> -<span id="cb390-8"><a href="#cb390-8" aria-hidden="true" tabindex="-1"></a> [[<span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)]] .. newline .. newline ..</span> -<span id="cb390-9"><a href="#cb390-9" aria-hidden="true" tabindex="-1"></a> [[<span class="fu">\\</span>[<span class="fu">\hat</span>{f} <span class="fu">\left</span> ( <span class="fu">\xi</span> <span class="fu">\right</span> )= <span class="fu">\int</span>_{-<span class="fu">\infty</span>}^{<span class="fu">\infty</span>} f<span class="fu">\left</span> ( x <span class="fu">\right</span> ) e^{-i2<span class="fu">\pi</span> <span class="fu">\xi</span> x} dx<span class="fu">\\</span>]]]</span> -<span id="cb390-10"><a href="#cb390-10" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> -<span id="cb390-11"><a href="#cb390-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb424"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb424-1"><a href="#cb424-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb424-2"><a href="#cb424-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb424-3"><a href="#cb424-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb424-4"><a href="#cb424-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb424-5"><a href="#cb424-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb424-6"><a href="#cb424-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb424-7"><a href="#cb424-7" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb424-8"><a href="#cb424-8" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span> +<span id="cb424-9"><a href="#cb424-9" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({texMathDoubleBackslash = true})</span> +<span id="cb424-10"><a href="#cb424-10" aria-hidden="true" tabindex="-1"></a> local input =</span> +<span id="cb424-11"><a href="#cb424-11" aria-hidden="true" tabindex="-1"></a> [[<span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)]] .. newline .. newline ..</span> +<span id="cb424-12"><a href="#cb424-12" aria-hidden="true" tabindex="-1"></a> [[<span class="fu">\\</span>[<span class="fu">\hat</span>{f} <span class="fu">\left</span> ( <span class="fu">\xi</span> <span class="fu">\right</span> )= <span class="fu">\int</span>_{-<span class="fu">\infty</span>}^{<span class="fu">\infty</span>} f<span class="fu">\left</span> ( x <span class="fu">\right</span> ) e^{-i2<span class="fu">\pi</span> <span class="fu">\xi</span> x} dx<span class="fu">\\</span>]]]</span> +<span id="cb424-13"><a href="#cb424-13" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> +<span id="cb424-14"><a href="#cb424-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb424-15"><a href="#cb424-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Then, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb391"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb391-1"><a href="#cb391-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb425"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb425-1"><a href="#cb425-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -6553,27 +7309,31 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p> <p><span class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p> </blockquote> -<h5 class="unnumbered" id="lua-cli-example-11">Lua CLI Example</h5> +<h5 class="unnumbered" id="lua-cli-example-13">Lua CLI Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb392"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb392-1"><a href="#cb392-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb392-2"><a href="#cb392-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb392-3"><a href="#cb392-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> -<span id="cb392-4"><a href="#cb392-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> -<span id="cb392-5"><a href="#cb392-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> -<span id="cb392-6"><a href="#cb392-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb426"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb426-1"><a href="#cb426-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb426-2"><a href="#cb426-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb426-3"><a href="#cb426-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb426-4"><a href="#cb426-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb426-5"><a href="#cb426-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb426-6"><a href="#cb426-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> +<span id="cb426-7"><a href="#cb426-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> +<span id="cb426-8"><a href="#cb426-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> +<span id="cb426-9"><a href="#cb426-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb426-10"><a href="#cb426-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Using a text editor, create a text document named <code>content.md</code> with the following content:</p> -<div class="sourceCode" id="cb393"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb393-1"><a href="#cb393-1" aria-hidden="true" tabindex="-1"></a><span class="sc">\\</span>(E=mc^2<span class="sc">\\</span>)</span> -<span id="cb393-2"><a href="#cb393-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb393-3"><a href="#cb393-3" aria-hidden="true" tabindex="-1"></a><span class="sc">\\</span><span class="co">[</span><span class="ot">\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx\\]</span></span></code></pre></div> +<div class="sourceCode" id="cb427"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb427-1"><a href="#cb427-1" aria-hidden="true" tabindex="-1"></a><span class="sc">\\</span>(E=mc^2<span class="sc">\\</span>)</span> +<span id="cb427-2"><a href="#cb427-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb427-3"><a href="#cb427-3" aria-hidden="true" tabindex="-1"></a><span class="sc">\\</span><span class="co">[</span><span class="ot">\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx\\]</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb394"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb394-1"><a href="#cb394-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span> -<span id="cb394-2"><a href="#cb394-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ texMathDoubleBackslash=true <span class="at">--</span> content.md optiontrue.tex</span> -<span id="cb394-3"><a href="#cb394-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb428"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb428-1"><a href="#cb428-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span> +<span id="cb428-2"><a href="#cb428-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ texMathDoubleBackslash=true <span class="at">--</span> content.md optiontrue.tex</span> +<span id="cb428-3"><a href="#cb428-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua CLI script file, such as <code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems @@ -6595,24 +7355,24 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p> <p><span class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p> </blockquote> -<h5 class="unnumbered" id="plain-tex-example-19">Plain <span +<h5 class="unnumbered" id="plain-tex-example-21">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb395"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb395-1"><a href="#cb395-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb395-2"><a href="#cb395-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb395-3"><a href="#cb395-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDoubleBackslash</span>{true}</span> -<span id="cb395-4"><a href="#cb395-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb395-5"><a href="#cb395-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)</span> -<span id="cb395-6"><a href="#cb395-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb395-7"><a href="#cb395-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>[<span class="fu">\hat</span>{f} <span class="fu">\left</span> ( <span class="fu">\xi</span> <span class="fu">\right</span> )= <span class="fu">\int</span>_{-<span class="fu">\infty</span>}^{<span class="fu">\infty</span>} f<span class="fu">\left</span> ( x <span class="fu">\right</span> ) e^{-i2<span class="fu">\pi</span> <span class="fu">\xi</span> x} dx<span class="fu">\\</span>]</span> -<span id="cb395-8"><a href="#cb395-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb395-9"><a href="#cb395-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb395-10"><a href="#cb395-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb429"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb429-1"><a href="#cb429-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb429-2"><a href="#cb429-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb429-3"><a href="#cb429-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDoubleBackslash</span>{true}</span> +<span id="cb429-4"><a href="#cb429-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb429-5"><a href="#cb429-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)</span> +<span id="cb429-6"><a href="#cb429-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb429-7"><a href="#cb429-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>[<span class="fu">\hat</span>{f} <span class="fu">\left</span> ( <span class="fu">\xi</span> <span class="fu">\right</span> )= <span class="fu">\int</span>_{-<span class="fu">\infty</span>}^{<span class="fu">\infty</span>} f<span class="fu">\left</span> ( x <span class="fu">\right</span> ) e^{-i2<span class="fu">\pi</span> <span class="fu">\xi</span> x} dx<span class="fu">\\</span>]</span> +<span id="cb429-8"><a href="#cb429-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb429-9"><a href="#cb429-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb429-10"><a href="#cb429-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb396"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb396-1"><a href="#cb396-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb430"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb430-1"><a href="#cb430-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -6621,25 +7381,25 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p> <p><span class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p> </blockquote> -<h5 class="unnumbered" id="latex-example-47"><span +<h5 class="unnumbered" id="latex-example-50"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb397"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb397-1"><a href="#cb397-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb397-2"><a href="#cb397-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathDoubleBackslash]{<span class="ex">markdown</span>}</span> -<span id="cb397-3"><a href="#cb397-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb397-4"><a href="#cb397-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb397-5"><a href="#cb397-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb397-6"><a href="#cb397-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)</span> -<span id="cb397-7"><a href="#cb397-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb397-8"><a href="#cb397-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>[<span class="fu">\hat</span>{f} <span class="fu">\left</span> ( <span class="fu">\xi</span> <span class="fu">\right</span> )= <span class="fu">\int</span>_{-<span class="fu">\infty</span>}^{<span class="fu">\infty</span>} f<span class="fu">\left</span> ( x <span class="fu">\right</span> ) e^{-i2<span class="fu">\pi</span> <span class="fu">\xi</span> x} dx<span class="fu">\\</span>]</span> -<span id="cb397-9"><a href="#cb397-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb397-10"><a href="#cb397-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb397-11"><a href="#cb397-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb431"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb431-1"><a href="#cb431-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb431-2"><a href="#cb431-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathDoubleBackslash]{<span class="ex">markdown</span>}</span> +<span id="cb431-3"><a href="#cb431-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb431-4"><a href="#cb431-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb431-5"><a href="#cb431-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb431-6"><a href="#cb431-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)</span> +<span id="cb431-7"><a href="#cb431-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb431-8"><a href="#cb431-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>[<span class="fu">\hat</span>{f} <span class="fu">\left</span> ( <span class="fu">\xi</span> <span class="fu">\right</span> )= <span class="fu">\int</span>_{-<span class="fu">\infty</span>}^{<span class="fu">\infty</span>} f<span class="fu">\left</span> ( x <span class="fu">\right</span> ) e^{-i2<span class="fu">\pi</span> <span class="fu">\xi</span> x} dx<span class="fu">\\</span>]</span> +<span id="cb431-9"><a href="#cb431-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb431-10"><a href="#cb431-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb431-11"><a href="#cb431-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb398"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb398-1"><a href="#cb398-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb432"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb432-1"><a href="#cb432-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -6648,25 +7408,25 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p> <p><span class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p> </blockquote> -<h5 class="unnumbered" id="context-example-33">Con<span +<h5 class="unnumbered" id="context-example-35">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb399"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb399-1"><a href="#cb399-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb399-2"><a href="#cb399-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathDoubleBackslash = yes]</span> -<span id="cb399-3"><a href="#cb399-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb399-4"><a href="#cb399-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb399-5"><a href="#cb399-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb399-6"><a href="#cb399-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)</span> -<span id="cb399-7"><a href="#cb399-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb399-8"><a href="#cb399-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>[<span class="fu">\hat</span>{f} <span class="fu">\left</span> ( <span class="fu">\xi</span> <span class="fu">\right</span> )= <span class="fu">\int</span>_{-<span class="fu">\infty</span>}^{<span class="fu">\infty</span>} f<span class="fu">\left</span> ( x <span class="fu">\right</span> ) e^{-i2<span class="fu">\pi</span> <span class="fu">\xi</span> x} dx<span class="fu">\\</span>]</span> -<span id="cb399-9"><a href="#cb399-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb399-10"><a href="#cb399-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb399-11"><a href="#cb399-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb433"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb433-1"><a href="#cb433-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb433-2"><a href="#cb433-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathDoubleBackslash = yes]</span> +<span id="cb433-3"><a href="#cb433-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb433-4"><a href="#cb433-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb433-5"><a href="#cb433-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb433-6"><a href="#cb433-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)</span> +<span id="cb433-7"><a href="#cb433-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb433-8"><a href="#cb433-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>[<span class="fu">\hat</span>{f} <span class="fu">\left</span> ( <span class="fu">\xi</span> <span class="fu">\right</span> )= <span class="fu">\int</span>_{-<span class="fu">\infty</span>}^{<span class="fu">\infty</span>} f<span class="fu">\left</span> ( x <span class="fu">\right</span> ) e^{-i2<span class="fu">\pi</span> <span class="fu">\xi</span> x} dx<span class="fu">\\</span>]</span> +<span id="cb433-9"><a href="#cb433-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb433-10"><a href="#cb433-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb433-11"><a href="#cb433-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb400"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb400-1"><a href="#cb400-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb434"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb434-1"><a href="#cb434-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -6675,8 +7435,8 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p> <p><span class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p> </blockquote> -<h4 data-number="2.2.1.54" id="option-texmathsinglebackslash"><span -class="header-section-number">2.2.1.54</span> Option +<h4 data-number="2.2.1.60" id="option-texmathsinglebackslash"><span +class="header-section-number">2.2.1.60</span> Option <code>texMathSingleBackslash</code></h4> <dl> <dt><code>texMathSingleBackslash</code> (default value: @@ -6688,10 +7448,10 @@ class="header-section-number">2.2.1.54</span> Option <p>Enable the Pandoc <a href="https://pandoc.org/MANUAL.html#extension-tex_math_single_backslash">single backslash math syntax extension</a>:</p> -<div class="sourceCode" id="cb401"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb401-1"><a href="#cb401-1" aria-hidden="true" tabindex="-1"></a><span class="an">inline math:</span><span class="co"> \(E=mc^2\)</span></span> -<span id="cb401-2"><a href="#cb401-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb401-3"><a href="#cb401-3" aria-hidden="true" tabindex="-1"></a>display math: <span class="sc">\[</span>E=mc^2<span class="sc">\]</span></span></code></pre></div> +<div class="sourceCode" id="cb435"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb435-1"><a href="#cb435-1" aria-hidden="true" tabindex="-1"></a><span class="an">inline math:</span><span class="co"> \(E=mc^2\)</span></span> +<span id="cb435-2"><a href="#cb435-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb435-3"><a href="#cb435-3" aria-hidden="true" tabindex="-1"></a>display math: <span class="sc">\[</span>E=mc^2<span class="sc">\]</span></span></code></pre></div> </dd> </dl> </dd> @@ -6704,25 +7464,29 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb401-1"><a hr </dl> </dd> </dl> -<h5 class="unnumbered" id="lua-module-example-14">Lua Module +<h5 class="unnumbered" id="lua-module-example-15">Lua Module Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb402"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb402-1"><a href="#cb402-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb402-2"><a href="#cb402-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb402-3"><a href="#cb402-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> -<span id="cb402-4"><a href="#cb402-4" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> -<span id="cb402-5"><a href="#cb402-5" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span> -<span id="cb402-6"><a href="#cb402-6" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({texMathSingleBackslash = true})</span> -<span id="cb402-7"><a href="#cb402-7" aria-hidden="true" tabindex="-1"></a> local input =</span> -<span id="cb402-8"><a href="#cb402-8" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">\(E=mc^2\)</span>]] .. newline .. newline ..</span> -<span id="cb402-9"><a href="#cb402-9" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">\[</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx\]</span>]]</span> -<span id="cb402-10"><a href="#cb402-10" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> -<span id="cb402-11"><a href="#cb402-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb436"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb436-1"><a href="#cb436-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb436-2"><a href="#cb436-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb436-3"><a href="#cb436-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb436-4"><a href="#cb436-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb436-5"><a href="#cb436-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb436-6"><a href="#cb436-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span> +<span id="cb436-7"><a href="#cb436-7" aria-hidden="true" tabindex="-1"></a> local markdown = require("markdown")</span> +<span id="cb436-8"><a href="#cb436-8" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span> +<span id="cb436-9"><a href="#cb436-9" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({texMathSingleBackslash = true})</span> +<span id="cb436-10"><a href="#cb436-10" aria-hidden="true" tabindex="-1"></a> local input =</span> +<span id="cb436-11"><a href="#cb436-11" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">\(E=mc^2\)</span>]] .. newline .. newline ..</span> +<span id="cb436-12"><a href="#cb436-12" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">\[</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx\]</span>]]</span> +<span id="cb436-13"><a href="#cb436-13" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span> +<span id="cb436-14"><a href="#cb436-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb436-15"><a href="#cb436-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Then, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb403"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb403-1"><a href="#cb403-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb437"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb437-1"><a href="#cb437-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -6731,27 +7495,31 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p> <p><span class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p> </blockquote> -<h5 class="unnumbered" id="lua-cli-example-12">Lua CLI Example</h5> +<h5 class="unnumbered" id="lua-cli-example-14">Lua CLI Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb404"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb404-1"><a href="#cb404-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb404-2"><a href="#cb404-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb404-3"><a href="#cb404-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> -<span id="cb404-4"><a href="#cb404-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> -<span id="cb404-5"><a href="#cb404-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> -<span id="cb404-6"><a href="#cb404-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb438"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb438-1"><a href="#cb438-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb438-2"><a href="#cb438-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb438-3"><a href="#cb438-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb438-4"><a href="#cb438-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb438-5"><a href="#cb438-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span> +<span id="cb438-6"><a href="#cb438-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span> +<span id="cb438-7"><a href="#cb438-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span> +<span id="cb438-8"><a href="#cb438-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span> +<span id="cb438-9"><a href="#cb438-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb438-10"><a href="#cb438-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Using a text editor, create a text document named <code>content.md</code> with the following content:</p> -<div class="sourceCode" id="cb405"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb405-1"><a href="#cb405-1" aria-hidden="true" tabindex="-1"></a><span class="sc">\(</span>E=mc^2<span class="sc">\)</span></span> -<span id="cb405-2"><a href="#cb405-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb405-3"><a href="#cb405-3" aria-hidden="true" tabindex="-1"></a><span class="sc">\[</span>\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx<span class="sc">\]</span></span></code></pre></div> +<div class="sourceCode" id="cb439"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb439-1"><a href="#cb439-1" aria-hidden="true" tabindex="-1"></a><span class="sc">\(</span>E=mc^2<span class="sc">\)</span></span> +<span id="cb439-2"><a href="#cb439-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb439-3"><a href="#cb439-3" aria-hidden="true" tabindex="-1"></a><span class="sc">\[</span>\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx<span class="sc">\]</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb406"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb406-1"><a href="#cb406-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span> -<span id="cb406-2"><a href="#cb406-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ texMathSingleBackslash=true <span class="at">--</span> content.md optiontrue.tex</span> -<span id="cb406-3"><a href="#cb406-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb440"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb440-1"><a href="#cb440-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span> +<span id="cb440-2"><a href="#cb440-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ texMathSingleBackslash=true <span class="at">--</span> content.md optiontrue.tex</span> +<span id="cb440-3"><a href="#cb440-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua CLI script file, such as <code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems @@ -6772,24 +7540,24 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p> <p><span class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p> </blockquote> -<h5 class="unnumbered" id="plain-tex-example-20">Plain <span +<h5 class="unnumbered" id="plain-tex-example-22">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb407"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb407-1"><a href="#cb407-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb407-2"><a href="#cb407-2" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb407-3"><a href="#cb407-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathSingleBackslash</span>{true}</span> -<span id="cb407-4"><a href="#cb407-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb407-5"><a href="#cb407-5" aria-hidden="true" tabindex="-1"></a><span class="ss">\(E=mc^2\)</span></span> -<span id="cb407-6"><a href="#cb407-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb407-7"><a href="#cb407-7" aria-hidden="true" tabindex="-1"></a><span class="ss">\[</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx\]</span></span> -<span id="cb407-8"><a href="#cb407-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb407-9"><a href="#cb407-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb407-10"><a href="#cb407-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb441"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb441-1"><a href="#cb441-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb441-2"><a href="#cb441-2" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb441-3"><a href="#cb441-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathSingleBackslash</span>{true}</span> +<span id="cb441-4"><a href="#cb441-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb441-5"><a href="#cb441-5" aria-hidden="true" tabindex="-1"></a><span class="ss">\(E=mc^2\)</span></span> +<span id="cb441-6"><a href="#cb441-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb441-7"><a href="#cb441-7" aria-hidden="true" tabindex="-1"></a><span class="ss">\[</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx\]</span></span> +<span id="cb441-8"><a href="#cb441-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb441-9"><a href="#cb441-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb441-10"><a href="#cb441-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb408"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb408-1"><a href="#cb408-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb442"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb442-1"><a href="#cb442-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -6798,25 +7566,25 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p> <p><span class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p> </blockquote> -<h5 class="unnumbered" id="latex-example-48"><span +<h5 class="unnumbered" id="latex-example-51"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb409"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb409-1"><a href="#cb409-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb409-2"><a href="#cb409-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathSingleBackslash]{<span class="ex">markdown</span>}</span> -<span id="cb409-3"><a href="#cb409-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb409-4"><a href="#cb409-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb409-5"><a href="#cb409-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb409-6"><a href="#cb409-6" aria-hidden="true" tabindex="-1"></a><span class="ss">\(E=mc^2\)</span></span> -<span id="cb409-7"><a href="#cb409-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb409-8"><a href="#cb409-8" aria-hidden="true" tabindex="-1"></a><span class="ss">\[</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx\]</span></span> -<span id="cb409-9"><a href="#cb409-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb409-10"><a href="#cb409-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb409-11"><a href="#cb409-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb443"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb443-1"><a href="#cb443-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb443-2"><a href="#cb443-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathSingleBackslash]{<span class="ex">markdown</span>}</span> +<span id="cb443-3"><a href="#cb443-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb443-4"><a href="#cb443-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb443-5"><a href="#cb443-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb443-6"><a href="#cb443-6" aria-hidden="true" tabindex="-1"></a><span class="ss">\(E=mc^2\)</span></span> +<span id="cb443-7"><a href="#cb443-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb443-8"><a href="#cb443-8" aria-hidden="true" tabindex="-1"></a><span class="ss">\[</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx\]</span></span> +<span id="cb443-9"><a href="#cb443-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb443-10"><a href="#cb443-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb443-11"><a href="#cb443-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb410"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb410-1"><a href="#cb410-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb444"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb444-1"><a href="#cb444-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -6825,25 +7593,25 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p> <p><span class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p> </blockquote> -<h5 class="unnumbered" id="context-example-34">Con<span +<h5 class="unnumbered" id="context-example-36">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb411"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb411-1"><a href="#cb411-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb411-2"><a href="#cb411-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathSingleBackslash = yes]</span> -<span id="cb411-3"><a href="#cb411-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb411-4"><a href="#cb411-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb411-5"><a href="#cb411-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb411-6"><a href="#cb411-6" aria-hidden="true" tabindex="-1"></a><span class="ss">\(E=mc^2\)</span></span> -<span id="cb411-7"><a href="#cb411-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb411-8"><a href="#cb411-8" aria-hidden="true" tabindex="-1"></a><span class="ss">\[</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx\]</span></span> -<span id="cb411-9"><a href="#cb411-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb411-10"><a href="#cb411-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb411-11"><a href="#cb411-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb445"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb445-1"><a href="#cb445-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb445-2"><a href="#cb445-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathSingleBackslash = yes]</span> +<span id="cb445-3"><a href="#cb445-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb445-4"><a href="#cb445-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb445-5"><a href="#cb445-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb445-6"><a href="#cb445-6" aria-hidden="true" tabindex="-1"></a><span class="ss">\(E=mc^2\)</span></span> +<span id="cb445-7"><a href="#cb445-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb445-8"><a href="#cb445-8" aria-hidden="true" tabindex="-1"></a><span class="ss">\[</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx\]</span></span> +<span id="cb445-9"><a href="#cb445-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb445-10"><a href="#cb445-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb445-11"><a href="#cb445-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb412"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb412-1"><a href="#cb412-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb446"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb446-1"><a href="#cb446-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -6852,8 +7620,8 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p> <p><span class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p> </blockquote> -<h4 data-number="2.2.1.55" id="option-tightlists"><span -class="header-section-number">2.2.1.55</span> Option +<h4 data-number="2.2.1.61" id="option-tightlists"><span +class="header-section-number">2.2.1.61</span> Option <code>tightLists</code></h4> <dl> <dt><code>tightLists</code> (default value: <code>true</code>)</dt> @@ -6865,16 +7633,16 @@ class="header-section-number">2.2.1.55</span> Option paragraphs will be considered <em>tight</em>. Tight lists will produce tight renderers that may produce different output than lists that are not tight:</p> -<div class="sourceCode" id="cb413"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb413-1"><a href="#cb413-1" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>This is</span> -<span id="cb413-2"><a href="#cb413-2" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>a tight</span> -<span id="cb413-3"><a href="#cb413-3" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>unordered list.</span> -<span id="cb413-4"><a href="#cb413-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb413-5"><a href="#cb413-5" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>This is</span> -<span id="cb413-6"><a href="#cb413-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb413-7"><a href="#cb413-7" aria-hidden="true" tabindex="-1"></a> not a tight</span> -<span id="cb413-8"><a href="#cb413-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb413-9"><a href="#cb413-9" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>unordered list.</span></code></pre></div> +<div class="sourceCode" id="cb447"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb447-1"><a href="#cb447-1" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>This is</span> +<span id="cb447-2"><a href="#cb447-2" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>a tight</span> +<span id="cb447-3"><a href="#cb447-3" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>unordered list.</span> +<span id="cb447-4"><a href="#cb447-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb447-5"><a href="#cb447-5" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>This is</span> +<span id="cb447-6"><a href="#cb447-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb447-7"><a href="#cb447-7" aria-hidden="true" tabindex="-1"></a> not a tight</span> +<span id="cb447-8"><a href="#cb447-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb447-9"><a href="#cb447-9" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>unordered list.</span></code></pre></div> </dd> </dl> </dd> @@ -6889,43 +7657,43 @@ multiple paragraphs.</p> </dl> </dd> </dl> -<h5 class="unnumbered" id="latex-example-49"><span +<h5 class="unnumbered" id="latex-example-52"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb414"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb414-1"><a href="#cb414-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb414-2"><a href="#cb414-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb414-3"><a href="#cb414-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb414-4"><a href="#cb414-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb414-5"><a href="#cb414-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb414-6"><a href="#cb414-6" aria-hidden="true" tabindex="-1"></a>The following list is tight:</span> -<span id="cb414-7"><a href="#cb414-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb414-8"><a href="#cb414-8" aria-hidden="true" tabindex="-1"></a>- first item</span> -<span id="cb414-9"><a href="#cb414-9" aria-hidden="true" tabindex="-1"></a>- second item</span> -<span id="cb414-10"><a href="#cb414-10" aria-hidden="true" tabindex="-1"></a>- third item</span> -<span id="cb414-11"><a href="#cb414-11" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb414-12"><a href="#cb414-12" aria-hidden="true" tabindex="-1"></a>The following list is loose:</span> -<span id="cb414-13"><a href="#cb414-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb414-14"><a href="#cb414-14" aria-hidden="true" tabindex="-1"></a>- first item</span> -<span id="cb414-15"><a href="#cb414-15" aria-hidden="true" tabindex="-1"></a>- second item that spans</span> -<span id="cb414-16"><a href="#cb414-16" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb414-17"><a href="#cb414-17" aria-hidden="true" tabindex="-1"></a> multiple paragraphs</span> -<span id="cb414-18"><a href="#cb414-18" aria-hidden="true" tabindex="-1"></a>- third item</span> -<span id="cb414-19"><a href="#cb414-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb414-20"><a href="#cb414-20" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb414-21"><a href="#cb414-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{tightLists=false}</span> -<span id="cb414-22"><a href="#cb414-22" aria-hidden="true" tabindex="-1"></a>The following list is now also loose:</span> -<span id="cb414-23"><a href="#cb414-23" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb414-24"><a href="#cb414-24" aria-hidden="true" tabindex="-1"></a>- first item</span> -<span id="cb414-25"><a href="#cb414-25" aria-hidden="true" tabindex="-1"></a>- second item</span> -<span id="cb414-26"><a href="#cb414-26" aria-hidden="true" tabindex="-1"></a>- third item</span> -<span id="cb414-27"><a href="#cb414-27" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb414-28"><a href="#cb414-28" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb414-29"><a href="#cb414-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb448"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb448-1"><a href="#cb448-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb448-2"><a href="#cb448-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb448-3"><a href="#cb448-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb448-4"><a href="#cb448-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb448-5"><a href="#cb448-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb448-6"><a href="#cb448-6" aria-hidden="true" tabindex="-1"></a>The following list is tight:</span> +<span id="cb448-7"><a href="#cb448-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb448-8"><a href="#cb448-8" aria-hidden="true" tabindex="-1"></a>- first item</span> +<span id="cb448-9"><a href="#cb448-9" aria-hidden="true" tabindex="-1"></a>- second item</span> +<span id="cb448-10"><a href="#cb448-10" aria-hidden="true" tabindex="-1"></a>- third item</span> +<span id="cb448-11"><a href="#cb448-11" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb448-12"><a href="#cb448-12" aria-hidden="true" tabindex="-1"></a>The following list is loose:</span> +<span id="cb448-13"><a href="#cb448-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb448-14"><a href="#cb448-14" aria-hidden="true" tabindex="-1"></a>- first item</span> +<span id="cb448-15"><a href="#cb448-15" aria-hidden="true" tabindex="-1"></a>- second item that spans</span> +<span id="cb448-16"><a href="#cb448-16" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb448-17"><a href="#cb448-17" aria-hidden="true" tabindex="-1"></a> multiple paragraphs</span> +<span id="cb448-18"><a href="#cb448-18" aria-hidden="true" tabindex="-1"></a>- third item</span> +<span id="cb448-19"><a href="#cb448-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb448-20"><a href="#cb448-20" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb448-21"><a href="#cb448-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[tightLists=false]</span> +<span id="cb448-22"><a href="#cb448-22" aria-hidden="true" tabindex="-1"></a>The following list is now also loose:</span> +<span id="cb448-23"><a href="#cb448-23" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb448-24"><a href="#cb448-24" aria-hidden="true" tabindex="-1"></a>- first item</span> +<span id="cb448-25"><a href="#cb448-25" aria-hidden="true" tabindex="-1"></a>- second item</span> +<span id="cb448-26"><a href="#cb448-26" aria-hidden="true" tabindex="-1"></a>- third item</span> +<span id="cb448-27"><a href="#cb448-27" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb448-28"><a href="#cb448-28" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb448-29"><a href="#cb448-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb415"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb415-1"><a href="#cb415-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb449"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb449-1"><a href="#cb449-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -6949,8 +7717,8 @@ contain the following text:</p> <li><p>third item</p></li> </ul> </blockquote> -<h4 data-number="2.2.1.56" id="option-underscores"><span -class="header-section-number">2.2.1.56</span> Option +<h4 data-number="2.2.1.62" id="option-underscores"><span +class="header-section-number">2.2.1.62</span> Option <code>underscores</code></h4> <dl> <dt><code>underscores</code> (default value: <code>true</code>)</dt> @@ -6960,11 +7728,11 @@ class="header-section-number">2.2.1.56</span> Option <dd> <p>Both underscores and asterisks can be used to denote emphasis and strong emphasis:</p> -<div class="sourceCode" id="cb416"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb416-1"><a href="#cb416-1" aria-hidden="true" tabindex="-1"></a>*single asterisks*</span> -<span id="cb416-2"><a href="#cb416-2" aria-hidden="true" tabindex="-1"></a>_single underscores_</span> -<span id="cb416-3"><a href="#cb416-3" aria-hidden="true" tabindex="-1"></a>**double asterisks**</span> -<span id="cb416-4"><a href="#cb416-4" aria-hidden="true" tabindex="-1"></a>__double underscores__</span></code></pre></div> +<div class="sourceCode" id="cb450"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb450-1"><a href="#cb450-1" aria-hidden="true" tabindex="-1"></a>*single asterisks*</span> +<span id="cb450-2"><a href="#cb450-2" aria-hidden="true" tabindex="-1"></a>_single underscores_</span> +<span id="cb450-3"><a href="#cb450-3" aria-hidden="true" tabindex="-1"></a>**double asterisks**</span> +<span id="cb450-4"><a href="#cb450-4" aria-hidden="true" tabindex="-1"></a>__double underscores__</span></code></pre></div> </dd> </dl> </dd> @@ -6980,27 +7748,27 @@ constantly escape subscripts.</p> </dl> </dd> </dl> -<h5 class="unnumbered" id="plain-tex-example-21">Plain <span +<h5 class="unnumbered" id="plain-tex-example-23">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb417"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb417-1"><a href="#cb417-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb417-2"><a href="#cb417-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span> -<span id="cb417-3"><a href="#cb417-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb417-4"><a href="#cb417-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb417-5"><a href="#cb417-5" aria-hidden="true" tabindex="-1"></a>This is _emphasized text_ and this is a math subscript: <span class="ss">$m</span><span class="sc">\_</span><span class="ss">n$</span>.</span> -<span id="cb417-6"><a href="#cb417-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb417-7"><a href="#cb417-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb417-8"><a href="#cb417-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionUnderscores</span>{false}</span> -<span id="cb417-9"><a href="#cb417-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb417-10"><a href="#cb417-10" aria-hidden="true" tabindex="-1"></a>This is *emphasized text* and this is a math subscript: <span class="ss">$m_n$</span>.</span> -<span id="cb417-11"><a href="#cb417-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb417-12"><a href="#cb417-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb417-13"><a href="#cb417-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb451"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb451-1"><a href="#cb451-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb451-2"><a href="#cb451-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span> +<span id="cb451-3"><a href="#cb451-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb451-4"><a href="#cb451-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb451-5"><a href="#cb451-5" aria-hidden="true" tabindex="-1"></a>This is _emphasized text_ and this is a math subscript: <span class="ss">$m</span><span class="sc">\_</span><span class="ss">n$</span>.</span> +<span id="cb451-6"><a href="#cb451-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb451-7"><a href="#cb451-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb451-8"><a href="#cb451-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionUnderscores</span>{false}</span> +<span id="cb451-9"><a href="#cb451-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb451-10"><a href="#cb451-10" aria-hidden="true" tabindex="-1"></a>This is *emphasized text* and this is a math subscript: <span class="ss">$m_n$</span>.</span> +<span id="cb451-11"><a href="#cb451-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb451-12"><a href="#cb451-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb451-13"><a href="#cb451-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb418"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb418-1"><a href="#cb418-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb452"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb452-1"><a href="#cb452-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -7009,27 +7777,27 @@ contain the following text:</p> <p>This is <em>emphasized text</em> and this is a math subscript: <em>mₙ</em>.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-50"><span +<h5 class="unnumbered" id="latex-example-53"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb419"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb419-1"><a href="#cb419-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb419-2"><a href="#cb419-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[hybrid]{<span class="ex">markdown</span>}</span> -<span id="cb419-3"><a href="#cb419-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb419-4"><a href="#cb419-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb419-5"><a href="#cb419-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb419-6"><a href="#cb419-6" aria-hidden="true" tabindex="-1"></a>This is _emphasized text_ and this is a math subscript: <span class="ss">$m</span><span class="sc">\_</span><span class="ss">n$</span>.</span> -<span id="cb419-7"><a href="#cb419-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb419-8"><a href="#cb419-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb419-9"><a href="#cb419-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{underscores=false}</span> -<span id="cb419-10"><a href="#cb419-10" aria-hidden="true" tabindex="-1"></a>This is *emphasized text* and this is a math subscript: <span class="ss">$m_n$</span>.</span> -<span id="cb419-11"><a href="#cb419-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb419-12"><a href="#cb419-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb419-13"><a href="#cb419-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb453"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb453-1"><a href="#cb453-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb453-2"><a href="#cb453-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[hybrid]{<span class="ex">markdown</span>}</span> +<span id="cb453-3"><a href="#cb453-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb453-4"><a href="#cb453-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb453-5"><a href="#cb453-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb453-6"><a href="#cb453-6" aria-hidden="true" tabindex="-1"></a>This is _emphasized text_ and this is a math subscript: <span class="ss">$m</span><span class="sc">\_</span><span class="ss">n$</span>.</span> +<span id="cb453-7"><a href="#cb453-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb453-8"><a href="#cb453-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb453-9"><a href="#cb453-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[underscores=false]</span> +<span id="cb453-10"><a href="#cb453-10" aria-hidden="true" tabindex="-1"></a>This is *emphasized text* and this is a math subscript: <span class="ss">$m_n$</span>.</span> +<span id="cb453-11"><a href="#cb453-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb453-12"><a href="#cb453-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb453-13"><a href="#cb453-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb420"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb420-1"><a href="#cb420-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb454"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb454-1"><a href="#cb454-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -7038,28 +7806,28 @@ contain the following text:</p> <p>This is <em>emphasized text</em> and this is a math subscript: <em>mₙ</em>.</p> </blockquote> -<h5 class="unnumbered" id="context-example-35">Con<span +<h5 class="unnumbered" id="context-example-37">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb421"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb421-1"><a href="#cb421-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb421-2"><a href="#cb421-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span> -<span id="cb421-3"><a href="#cb421-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb421-4"><a href="#cb421-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb421-5"><a href="#cb421-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb421-6"><a href="#cb421-6" aria-hidden="true" tabindex="-1"></a>This is _emphasized text_ and this is a math subscript: <span class="ss">$m</span><span class="sc">\_</span><span class="ss">n$</span>.</span> -<span id="cb421-7"><a href="#cb421-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb421-8"><a href="#cb421-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb421-9"><a href="#cb421-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[underscores = yes]</span> -<span id="cb421-10"><a href="#cb421-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb421-11"><a href="#cb421-11" aria-hidden="true" tabindex="-1"></a>This is *emphasized text* and this is a math subscript: <span class="ss">$m_n$</span>.</span> -<span id="cb421-12"><a href="#cb421-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb421-13"><a href="#cb421-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb421-14"><a href="#cb421-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb455"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb455-1"><a href="#cb455-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb455-2"><a href="#cb455-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span> +<span id="cb455-3"><a href="#cb455-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb455-4"><a href="#cb455-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb455-5"><a href="#cb455-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb455-6"><a href="#cb455-6" aria-hidden="true" tabindex="-1"></a>This is _emphasized text_ and this is a math subscript: <span class="ss">$m</span><span class="sc">\_</span><span class="ss">n$</span>.</span> +<span id="cb455-7"><a href="#cb455-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb455-8"><a href="#cb455-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb455-9"><a href="#cb455-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[underscores = yes]</span> +<span id="cb455-10"><a href="#cb455-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb455-11"><a href="#cb455-11" aria-hidden="true" tabindex="-1"></a>This is *emphasized text* and this is a math subscript: <span class="ss">$m_n$</span>.</span> +<span id="cb455-12"><a href="#cb455-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb455-13"><a href="#cb455-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb455-14"><a href="#cb455-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb422"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb422-1"><a href="#cb422-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb456"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb456-1"><a href="#cb456-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -7086,8 +7854,16 @@ plain <span class="tex">T<sub>e</sub>X</span></h4> <strong><code>taskLists</code></strong> Lua option to <code>true</code>, you would include the following code in your plain <span class="tex">T<sub>e</sub>X</span> document:</p> -<div class="sourceCode" id="cb423"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb423-1"><a href="#cb423-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTaskLists</span>{true}</span></code></pre></div> +<div class="sourceCode" id="cb457"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb457-1"><a href="#cb457-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTaskLists</span>{true}</span></code></pre></div> +<p>Alternatively, you can also set plain <span +class="tex">T<sub>e</sub>X</span> options using the +<code>\markdownSetup</code> <span class="tex">T<sub>e</sub>X</span> +macro. For example, to set the <strong><code>taskLists</code></strong> +Lua option to <code>true</code>, you would include the following code in +your plain <span class="tex">T<sub>e</sub>X</span> document:</p> +<div class="sourceCode" id="cb458"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb458-1"><a href="#cb458-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{taskLists = true}</span></code></pre></div> <h4 data-number="2.2.2.2" id="finalizing-and-freezing-the-cache"><span class="header-section-number">2.2.2.2</span> Finalizing and Freezing the Cache</h4> @@ -7122,10 +7898,7 @@ the following commands that you can use to specify the location of temporary files produced during the conversion from Markdown to <span class="tex">T<sub>e</sub>X</span>:</p> <ul> -<li><code>\markdownOptionHelperScriptFileName</code>,</li> <li><code>\markdownOptionInputTempFileName</code>,</li> -<li><code>\markdownOptionOutputTempFileName</code>,</li> -<li><code>\markdownOptionErrorTempFileName</code>,</li> <li><code>\markdownOptionOutputDir</code>,</li> <li><code>\markdownOptionCacheDir</code>, and</li> <li><code>\markdownOptionFrozenCacheFileName</code>.</li> @@ -7137,24 +7910,22 @@ options.</p> <p>Using a text editor, create a folder named <code>output-directory</code> and a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb424"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb424-1"><a href="#cb424-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb424-2"><a href="#cb424-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb424-3"><a href="#cb424-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHelperScriptFileName</span>{helper-script.lua}</span> -<span id="cb424-4"><a href="#cb424-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionInputTempFileName</span>{temporary-input.md}</span> -<span id="cb424-5"><a href="#cb424-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionOutputTempFileName</span>{temporary-output.tex}</span> -<span id="cb424-6"><a href="#cb424-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionErrorTempFileName</span>{error-output.txt}</span> -<span id="cb424-7"><a href="#cb424-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionOutputDir</span>{output-directory}</span> -<span id="cb424-8"><a href="#cb424-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionCacheDir</span>{output-directory/cache-directory}</span> -<span id="cb424-9"><a href="#cb424-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownOptionFinalizeCachetrue</span></span> -<span id="cb424-10"><a href="#cb424-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCacheFileName</span>{output-directory/cache-directory/frozen-cache.tex}</span> -<span id="cb424-11"><a href="#cb424-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb424-12"><a href="#cb424-12" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> -<span id="cb424-13"><a href="#cb424-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb424-14"><a href="#cb424-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb459"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb459-1"><a href="#cb459-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb459-2"><a href="#cb459-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb459-3"><a href="#cb459-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionInputTempFileName</span>{temporary-input.md}</span> +<span id="cb459-4"><a href="#cb459-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionOutputDir</span>{output-directory}</span> +<span id="cb459-5"><a href="#cb459-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionCacheDir</span>{output-directory/cache-directory}</span> +<span id="cb459-6"><a href="#cb459-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionEagerCache</span>{true}</span> +<span id="cb459-7"><a href="#cb459-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFinalizeCache</span>{true}</span> +<span id="cb459-8"><a href="#cb459-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCacheFileName</span>{output-directory/cache-directory/frozen-cache.tex}</span> +<span id="cb459-9"><a href="#cb459-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb459-10"><a href="#cb459-10" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> +<span id="cb459-11"><a href="#cb459-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb459-12"><a href="#cb459-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb425"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb425-1"><a href="#cb425-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> <span class="at">--output-directory</span> output-directory document.tex</span></code></pre></div> +<div class="sourceCode" id="cb460"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb460-1"><a href="#cb460-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> <span class="at">--output-directory</span> output-directory document.tex</span></code></pre></div> <p>A text document named <code>temporary-input.md</code> should be produced in the folder named <code>output-directory</code> and contain the following text:</p> @@ -7167,23 +7938,65 @@ document. LuaTeX does not need other temporary files to perform the conversion from markdown to <span class="tex">T<sub>e</sub>X</span>. To produce the remaining temporary files, invoke pdfTeX from the terminal:</p> -<div class="sourceCode" id="cb426"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb426-1"><a href="#cb426-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> <span class="at">--output-directory</span> output-directory <span class="at">--shell-escape</span> document.tex</span></code></pre></div> -<p>Text documents named <code>helper-script.lua</code>, and -<code>temporary-output.md</code> should be produced in the folder named -<code>output-directory</code>. The document named -<code>helper-script.lua</code> will contain Lua code that was executed -to convert markdown to plain <span class="tex">T<sub>e</sub>X</span>. -The document named <code>temporary-output.tex</code> will contain the -input markdown document converted to <span +<div class="sourceCode" id="cb461"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb461-1"><a href="#cb461-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> <span class="at">--output-directory</span> output-directory <span class="at">--shell-escape</span> document.tex</span></code></pre></div> +<p>Text document named <code>temporary-output.md</code> should be +produced in the folder named <code>output-directory</code>. The document +will contain the input markdown document converted to <span class="tex">T<sub>e</sub>X</span>.</p> -<p>No document named <code>error-output.txt</code> should be produced in -the folder named <code>output-directory</code>. This document would only -be produced if an error had occured while executing the Lua code. If -this happens, please <a -href="https://github.com/witiko/markdown/issues">file a bug</a>.</p> -<h4 data-number="2.2.2.4" id="package-documentation"><span -class="header-section-number">2.2.2.4</span> Package Documentation</h4> +<h4 data-number="2.2.2.4" id="plain"><span +class="header-section-number">2.2.2.4</span> No default token renderer +prototypes</h4> +<p>The Markdown package provides default definitions for token renderer +prototypes using the <code>witiko/markdown/defaults</code> theme. +Although these default definitions provide a useful starting point for +authors, they use extra resources, especially with higher-level <span +class="tex">T<sub>e</sub>X</span> formats such as <span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> and Con<span +class="tex">T<sub>e</sub>X</span>t. Furthermore, the default definitions +may change at any time, which may pose a problem for maintainers of +Markdown themes and templates who may require a stable output.</p> +<p>The <code>\markdownOptionPlain</code> macro specifies whether +higher-level <span class="tex">T<sub>e</sub>X</span> formats should only +use the plain <span class="tex">T<sub>e</sub>X</span> default +definitions or whether they should also use the format-specific default +definitions. Whereas plain <span class="tex">T<sub>e</sub>X</span> +default definitions only provide definitions for simple elements such as +emphasis, strong emphasis, and paragraph separators, format-specific +default definitions add support for more complex elements such as lists, +tables, and citations. On the flip side, plain <span +class="tex">T<sub>e</sub>X</span> default definitions load no extra +resources and are rather stable, whereas format-specific default +definitions load extra resources and are subject to a more rapid +change.</p> +<p>Here is how you would enable the macro in a <span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> document:</p> +<div class="sourceCode" id="cb462"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb462-1"><a href="#cb462-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[plain]{<span class="ex">markdown</span>}</span></code></pre></div> +<p>Here is how you would enable the macro in a Con<span +class="tex">T<sub>e</sub>X</span>t document:</p> +<div class="sourceCode" id="cb463"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb463-1"><a href="#cb463-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionPlain</span>{true}</span> +<span id="cb463-2"><a href="#cb463-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span></code></pre></div> +<p>The macro must be set before or during the loading of the package. +Setting the macro after loading the package has no effect.</p> +<p>The <code>\markdownOptionNoDefaults</code> macro specifies whether we +should prevent the loading of default definitions or not. This is useful +in contexts, where we want to have total control over how all elements +are rendered.</p> +<p>Here is how you would enable the macro in a <span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> document:</p> +<div class="sourceCode" id="cb464"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb464-1"><a href="#cb464-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[noDefaults]{<span class="ex">markdown</span>}</span></code></pre></div> +<p>Here is how you would enable the macro in a Con<span +class="tex">T<sub>e</sub>X</span>t document:</p> +<div class="sourceCode" id="cb465"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb465-1"><a href="#cb465-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionNoDefaults</span>{true}</span> +<span id="cb465-2"><a href="#cb465-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span></code></pre></div> +<p>The macro must be set before or during the loading of the package. +Setting the macro after loading the package has no effect.</p> +<h4 data-number="2.2.2.5" id="package-documentation"><span +class="header-section-number">2.2.2.5</span> Package Documentation</h4> <p>The <code>\markdownOptionStripPercentSigns</code> macro controls whether a percent sign (<code>\%</code>) at the beginning of a line will be discarded when reading Markdown input from a <span @@ -7197,33 +8010,179 @@ Mittelbach. The recognized values of the macro are <code>true</code> <code>false</code>.</p> <p>Using a text editor, create a text document named <code>document.dtx</code> with the following content:</p> -<div class="sourceCode" id="cb427"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb427-1"><a href="#cb427-1" aria-hidden="true" tabindex="-1"></a><span class="co">% \iffalse</span></span> -<span id="cb427-2"><a href="#cb427-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">ltxdoc</span>}</span> -<span id="cb427-3"><a href="#cb427-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[stripPercentSigns]{<span class="ex">markdown</span>}</span> -<span id="cb427-4"><a href="#cb427-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb427-5"><a href="#cb427-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\DocInput</span>{document.dtx}</span> -<span id="cb427-6"><a href="#cb427-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span> -<span id="cb427-7"><a href="#cb427-7" aria-hidden="true" tabindex="-1"></a><span class="co">% \fi</span></span> -<span id="cb427-8"><a href="#cb427-8" aria-hidden="true" tabindex="-1"></a><span class="co">%</span></span> -<span id="cb427-9"><a href="#cb427-9" aria-hidden="true" tabindex="-1"></a><span class="co">% \begin{markdown}</span></span> -<span id="cb427-10"><a href="#cb427-10" aria-hidden="true" tabindex="-1"></a><span class="co">% Hello *world*!</span></span> -<span id="cb427-11"><a href="#cb427-11" aria-hidden="true" tabindex="-1"></a><span class="co">% \end{markdown}</span></span></code></pre></div> +<div class="sourceCode" id="cb466"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb466-1"><a href="#cb466-1" aria-hidden="true" tabindex="-1"></a><span class="co">% \iffalse</span></span> +<span id="cb466-2"><a href="#cb466-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">ltxdoc</span>}</span> +<span id="cb466-3"><a href="#cb466-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[stripPercentSigns]{<span class="ex">markdown</span>}</span> +<span id="cb466-4"><a href="#cb466-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb466-5"><a href="#cb466-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\DocInput</span>{document.dtx}</span> +<span id="cb466-6"><a href="#cb466-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span> +<span id="cb466-7"><a href="#cb466-7" aria-hidden="true" tabindex="-1"></a><span class="co">% \fi</span></span> +<span id="cb466-8"><a href="#cb466-8" aria-hidden="true" tabindex="-1"></a><span class="co">%</span></span> +<span id="cb466-9"><a href="#cb466-9" aria-hidden="true" tabindex="-1"></a><span class="co">% \begin{markdown}</span></span> +<span id="cb466-10"><a href="#cb466-10" aria-hidden="true" tabindex="-1"></a><span class="co">% Hello *world*!</span></span> +<span id="cb466-11"><a href="#cb466-11" aria-hidden="true" tabindex="-1"></a><span class="co">% \end{markdown}</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb428"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb428-1"><a href="#cb428-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.dtx</span></code></pre></div> +<div class="sourceCode" id="cb467"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb467-1"><a href="#cb467-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.dtx</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the text “Hello <em>world</em>!”</p> -<h3 data-number="2.2.3" id="latex-1"><span -class="header-section-number">2.2.3</span> <span +<h3 data-number="2.2.3" id="themes"><span +class="header-section-number">2.2.3</span> Themes</h3> +<p>User-defined themes for the Markdown package provide a +domain-specific interpretation of Markdown tokens. Themes allow the +authors to achieve a specific look and other high-level goals without +low-level programming.</p> +<p>Built-in plain <span class="tex">T<sub>e</sub>X</span> themes +provided with the Markdown package include:</p> +<dl> +<dt><strong><code>witiko/tilde</code></strong></dt> +<dd> +<p>A theme that makes tilde (<code>~</code>) always typeset the +non-breaking space even when the <strong><code>hybrid</code></strong> +Lua option is disabled.</p> +</dd> +</dl> +<h5 class="unnumbered" id="plain-tex-example-24">Plain <span +class="tex">T<sub>e</sub>X</span> Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb468"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb468-1"><a href="#cb468-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb468-2"><a href="#cb468-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{import=witiko/tilde}</span> +<span id="cb468-3"><a href="#cb468-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb468-4"><a href="#cb468-4" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span> +<span id="cb468-5"><a href="#cb468-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb468-6"><a href="#cb468-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb469"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb469-1"><a href="#cb469-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text, where the middot (<code>·</code>) denotes a +non-breaking space:</p> +<blockquote> +<p>Bartel·Leendert van·der·Waerden</p> +</blockquote> +<dl> +<dt><strong><code>witiko/markdown/defaults</code></strong></dt> +<dd> +<p>A plain <span class="tex">T<sub>e</sub>X</span> theme with the +default definitions of token renderer prototypes for plain <span +class="tex">T<sub>e</sub>X</span>. This theme is loaded automatically +together with the package and explicitly loading it has no effect.</p> +</dd> +</dl> +<h3 data-number="2.2.4" id="snippets"><span +class="header-section-number">2.2.4</span> Snippets</h3> +<p>User-defined themes provide global control over high-level goals. +However, it is often desirable to change only some local aspects of a +document. Snippets provide syntactic sugar for defining and invoking +various options locally.</p> +<p>Here is how we can use snippets to store options and invoke them +later in <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span>:</p> +<div class="sourceCode" id="cb470"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb470-1"><a href="#cb470-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetupSnippet</span>{romanNumerals}{</span> +<span id="cb470-2"><a href="#cb470-2" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb470-3"><a href="#cb470-3" aria-hidden="true" tabindex="-1"></a> olItemWithNumber = {<span class="co">%</span></span> +<span id="cb470-4"><a href="#cb470-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\item</span>[<span class="fu">\romannumeral</span>#1<span class="fu">\relax</span>.]<span class="co">%</span></span> +<span id="cb470-5"><a href="#cb470-5" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb470-6"><a href="#cb470-6" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb470-7"><a href="#cb470-7" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb470-8"><a href="#cb470-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb470-9"><a href="#cb470-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb470-10"><a href="#cb470-10" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by arabic numerals:</span> +<span id="cb470-11"><a href="#cb470-11" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb470-12"><a href="#cb470-12" aria-hidden="true" tabindex="-1"></a>1. wahid</span> +<span id="cb470-13"><a href="#cb470-13" aria-hidden="true" tabindex="-1"></a>2. aithnayn</span> +<span id="cb470-14"><a href="#cb470-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb470-15"><a href="#cb470-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb470-16"><a href="#cb470-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[snippet=romanNumerals]</span> +<span id="cb470-17"><a href="#cb470-17" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb470-18"><a href="#cb470-18" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span> +<span id="cb470-19"><a href="#cb470-19" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb470-20"><a href="#cb470-20" aria-hidden="true" tabindex="-1"></a>3. tres</span> +<span id="cb470-21"><a href="#cb470-21" aria-hidden="true" tabindex="-1"></a>4. quattuor</span> +<span id="cb470-22"><a href="#cb470-22" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb470-23"><a href="#cb470-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span></code></pre></div> +<p>If the <code>romanNumerals</code> snippet were defined in the +<code>jdoe/lists</code> theme, we could import the +<code>jdoe/lists</code> theme and use the qualified name +<code>jdoe/lists/romanNumerals</code> to invoke the snippet:</p> +<div class="sourceCode" id="cb471"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb471-1"><a href="#cb471-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{import=jdoe/lists}</span> +<span id="cb471-2"><a href="#cb471-2" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[snippet=jdoe/lists/romanNumerals]</span> +<span id="cb471-3"><a href="#cb471-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb471-4"><a href="#cb471-4" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span> +<span id="cb471-5"><a href="#cb471-5" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb471-6"><a href="#cb471-6" aria-hidden="true" tabindex="-1"></a>3. tres</span> +<span id="cb471-7"><a href="#cb471-7" aria-hidden="true" tabindex="-1"></a>4. quattuor</span> +<span id="cb471-8"><a href="#cb471-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb471-9"><a href="#cb471-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span></code></pre></div> +<p>Alternatively, we can use the extended variant of the +<code>import</code> <span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> option that allows us +to import the <code>romanNumerals</code> snippet to the current +namespace for easier access:</p> +<div class="sourceCode" id="cb472"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb472-1"><a href="#cb472-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb472-2"><a href="#cb472-2" aria-hidden="true" tabindex="-1"></a> import = {</span> +<span id="cb472-3"><a href="#cb472-3" aria-hidden="true" tabindex="-1"></a> jdoe/lists = romanNumerals,</span> +<span id="cb472-4"><a href="#cb472-4" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb472-5"><a href="#cb472-5" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb472-6"><a href="#cb472-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[snippet=romanNumerals]</span> +<span id="cb472-7"><a href="#cb472-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb472-8"><a href="#cb472-8" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span> +<span id="cb472-9"><a href="#cb472-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb472-10"><a href="#cb472-10" aria-hidden="true" tabindex="-1"></a>3. tres</span> +<span id="cb472-11"><a href="#cb472-11" aria-hidden="true" tabindex="-1"></a>4. quattuor</span> +<span id="cb472-12"><a href="#cb472-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb472-13"><a href="#cb472-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span></code></pre></div> +<p>Furthermore, we can also specify the name of the snippet in the +current namespace, which can be different from the name of the snippet +in the <code>jdoe/lists</code> theme. For example, we can make the +snippet <code>jdoe/lists/romanNumerals</code> available under the name +<code>roman</code>.</p> +<div class="sourceCode" id="cb473"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb473-1"><a href="#cb473-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb473-2"><a href="#cb473-2" aria-hidden="true" tabindex="-1"></a> import = {</span> +<span id="cb473-3"><a href="#cb473-3" aria-hidden="true" tabindex="-1"></a> jdoe/lists = romanNumerals as roman,</span> +<span id="cb473-4"><a href="#cb473-4" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb473-5"><a href="#cb473-5" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb473-6"><a href="#cb473-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[snippet=roman]</span> +<span id="cb473-7"><a href="#cb473-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb473-8"><a href="#cb473-8" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span> +<span id="cb473-9"><a href="#cb473-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb473-10"><a href="#cb473-10" aria-hidden="true" tabindex="-1"></a>3. tres</span> +<span id="cb473-11"><a href="#cb473-11" aria-hidden="true" tabindex="-1"></a>4. quattuor</span> +<span id="cb473-12"><a href="#cb473-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb473-13"><a href="#cb473-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span></code></pre></div> +<p>Several themes and/or snippets can be loaded at once using the +extended variant of the <code>import</code> <span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> option:</p> +<div class="sourceCode" id="cb474"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb474-1"><a href="#cb474-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb474-2"><a href="#cb474-2" aria-hidden="true" tabindex="-1"></a> import = {</span> +<span id="cb474-3"><a href="#cb474-3" aria-hidden="true" tabindex="-1"></a> jdoe/longpackagename/lists = {</span> +<span id="cb474-4"><a href="#cb474-4" aria-hidden="true" tabindex="-1"></a> arabic as arabic1,</span> +<span id="cb474-5"><a href="#cb474-5" aria-hidden="true" tabindex="-1"></a> roman,</span> +<span id="cb474-6"><a href="#cb474-6" aria-hidden="true" tabindex="-1"></a> alphabetic,</span> +<span id="cb474-7"><a href="#cb474-7" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb474-8"><a href="#cb474-8" aria-hidden="true" tabindex="-1"></a> jdoe/anotherlongpackagename/lists = {</span> +<span id="cb474-9"><a href="#cb474-9" aria-hidden="true" tabindex="-1"></a> arabic as arabic2,</span> +<span id="cb474-10"><a href="#cb474-10" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb474-11"><a href="#cb474-11" aria-hidden="true" tabindex="-1"></a> jdoe/yetanotherlongpackagename,</span> +<span id="cb474-12"><a href="#cb474-12" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb474-13"><a href="#cb474-13" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> +<h3 data-number="2.2.5" id="latex-1"><span +class="header-section-number">2.2.5</span> <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span></h3> <p><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> options allow us to disable the redefinition of the default renderer prototypes from plain <span class="tex">T<sub>e</sub>X</span>, load user-defined themes, and invoke user-defined set-up snippets.</p> -<h4 data-number="2.2.3.1" +<h4 data-number="2.2.5.1" id="setting-lua-and-plain-tex-options-from-latex"><span -class="header-section-number">2.2.3.1</span> Setting Lua and plain <span +class="header-section-number">2.2.5.1</span> Setting Lua and plain <span class="tex">T<sub>e</sub>X</span> options from <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span></h4> <p>As a rule of thumb, we can set all Lua options directly from <span @@ -7231,59 +8190,60 @@ class="latex">L<sup>a</sup>T<sub>e</sub>X</span>. For example, to set the <strong><code>taskLists</code></strong> Lua option to <code>true</code>, we would include the following code in our <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> document:</p> -<div class="sourceCode" id="cb429"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb429-1"><a href="#cb429-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb429-2"><a href="#cb429-2" aria-hidden="true" tabindex="-1"></a> taskLists = true,</span> -<span id="cb429-3"><a href="#cb429-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> +<div class="sourceCode" id="cb475"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb475-1"><a href="#cb475-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb475-2"><a href="#cb475-2" aria-hidden="true" tabindex="-1"></a> taskLists = true,</span> +<span id="cb475-3"><a href="#cb475-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> <p>We can also set all plain <span class="tex">T<sub>e</sub>X</span> options directly from <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span>. For example, to set -the <code>\markdownOptionHelperScriptFileName</code> plain <span +the <code>\markdownOptionInputTempFileName</code> plain <span class="tex">T<sub>e</sub>X</span> option to <code>helper-script.lua</code>, we would inclde the following code in our <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> document:</p> -<div class="sourceCode" id="cb430"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb430-1"><a href="#cb430-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb430-2"><a href="#cb430-2" aria-hidden="true" tabindex="-1"></a> helperScriptFileName = helper-script.lua,</span> -<span id="cb430-3"><a href="#cb430-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> -<h4 data-number="2.2.3.2" id="latexplain"><span -class="header-section-number">2.2.3.2</span> No default token renderer -prototypes</h4> -<p>Default token renderer prototypes require <span -class="latex">L<sup>a</sup>T<sub>e</sub>X</span> packages that may clash -with other packages used in a document. Additionally, if we redefine -token renderers and renderer prototypes ourselves, the default -definitions will bring no benefit to us. Using the <code>plain</code> -package option, we can keep the default definitions from the plain <span -class="tex">T<sub>e</sub>X</span> implementation and prevent the soft -<span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> prerequisites -from being loaded: The plain option must be set before or when loading -the package. Setting the option after loading the package will have no -effect.</p> -<div class="sourceCode" id="cb431"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb431-1"><a href="#cb431-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[plain]{<span class="ex">markdown</span>}</span></code></pre></div> -<h4 data-number="2.2.3.3" id="latexthemes"><span -class="header-section-number">2.2.3.3</span> <span -class="latex">L<sup>a</sup>T<sub>e</sub>X</span> themes</h4> -<p>User-defined <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> -themes for the Markdown package provide a domain-specific interpretation -of Markdown tokens. Similarly to <span -class="latex">L<sup>a</sup>T<sub>e</sub>X</span> packages, themes allow -the authors to achieve a specific look and other high-level goals -without low-level programming.</p> +<div class="sourceCode" id="cb476"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb476-1"><a href="#cb476-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb476-2"><a href="#cb476-2" aria-hidden="true" tabindex="-1"></a> inputTempFileName = temporary-input.md,</span> +<span id="cb476-3"><a href="#cb476-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> +<h3 data-number="2.2.6" id="latexthemes"><span +class="header-section-number">2.2.6</span> Themes</h3> +<p>In <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span>, we expand +on the concept of <a href="#themes">themes</a> by allowing a theme to be +a full-blown <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> +package. Specifically, the key-values <code>theme</code>=⟨<em>theme +name</em>⟩ and <code>import</code>=⟨<em>theme name</em>⟩ load a <span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> package named +<code>markdowntheme</code>⟨<em>munged theme name</em>⟩<code>.sty</code> +if it exists and a <span class="tex">T<sub>e</sub>X</span> document +named <code>markdowntheme</code>\meta{munged theme +name}<code>.tex</code> otherwise.</p> +<p>Having the Markdown package automatically load either the generic +<code>.tex</code> <em>theme file</em> or the <span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span>-specific +<code>.sty</code> theme file allows developers to have a single +<em>theme file</em>, when the theme is small or the difference between +<span class="tex">T<sub>e</sub>X</span> formats is unimportant, and +scale up to separate theme files native to different <span +class="tex">T<sub>e</sub>X</span> formats for large multi-format themes, +where different code is needed for different <span +class="tex">T<sub>e</sub>X</span> formats. To enable code reuse, +developers can load the <code>.tex</code> theme file from the +<code>.sty</code> theme file using the +<code>\markdownLoadPlainTeXTheme</code> macro.</p> <p>For example, to load themes named <code>witiko/beamer/MU</code> and <code>witiko/dot</code>, you would use the following code in the preamble of your document:</p> -<div class="sourceCode" id="cb432"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb432-1"><a href="#cb432-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[</span> -<span id="cb432-2"><a href="#cb432-2" aria-hidden="true" tabindex="-1"></a> import=witiko/beamer/MU,</span> -<span id="cb432-3"><a href="#cb432-3" aria-hidden="true" tabindex="-1"></a> import=witiko/dot,</span> -<span id="cb432-4"><a href="#cb432-4" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</span>}</span></code></pre></div> +<div class="sourceCode" id="cb477"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb477-1"><a href="#cb477-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[</span> +<span id="cb477-2"><a href="#cb477-2" aria-hidden="true" tabindex="-1"></a> import=witiko/beamer/MU,</span> +<span id="cb477-3"><a href="#cb477-3" aria-hidden="true" tabindex="-1"></a> import=witiko/dot,</span> +<span id="cb477-4"><a href="#cb477-4" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</span>}</span></code></pre></div> <p>Due to limitations of <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span>, themes may not be loaded after the beginning of a <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> document.</p> -<p>Example themes provided with the Markdown package include:</p> +<p>Built-in <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> +themes provided with the Markdown package include:</p> <dl> <dt><strong><code>witiko/dot</code></strong></dt> <dd> @@ -7296,48 +8256,48 @@ installed. The theme also requires shell access unless the class="tex">T<sub>e</sub>X</span> option is enabled.</p> </dd> </dl> -<h5 class="unnumbered" id="latex-example-51"><span +<h5 class="unnumbered" id="latex-example-54"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb433"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb433-1"><a href="#cb433-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb433-2"><a href="#cb433-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[import=witiko/dot]{<span class="ex">markdown</span>}</span> -<span id="cb433-3"><a href="#cb433-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\setkeys</span>{Gin}{</span> -<span id="cb433-4"><a href="#cb433-4" aria-hidden="true" tabindex="-1"></a> width=<span class="fu">\columnwidth</span>,</span> -<span id="cb433-5"><a href="#cb433-5" aria-hidden="true" tabindex="-1"></a> height=0.65<span class="fu">\paperheight</span>,</span> -<span id="cb433-6"><a href="#cb433-6" aria-hidden="true" tabindex="-1"></a> keepaspectratio}</span> -<span id="cb433-7"><a href="#cb433-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb433-8"><a href="#cb433-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb433-9"><a href="#cb433-9" aria-hidden="true" tabindex="-1"></a>``` dot Various formats of mathemathical formulae</span> -<span id="cb433-10"><a href="#cb433-10" aria-hidden="true" tabindex="-1"></a>digraph tree {</span> -<span id="cb433-11"><a href="#cb433-11" aria-hidden="true" tabindex="-1"></a> margin = 0;</span> -<span id="cb433-12"><a href="#cb433-12" aria-hidden="true" tabindex="-1"></a> rankdir = "LR";</span> -<span id="cb433-13"><a href="#cb433-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb433-14"><a href="#cb433-14" aria-hidden="true" tabindex="-1"></a> latex -> pmml;</span> -<span id="cb433-15"><a href="#cb433-15" aria-hidden="true" tabindex="-1"></a> latex -> cmml;</span> -<span id="cb433-16"><a href="#cb433-16" aria-hidden="true" tabindex="-1"></a> pmml -> slt;</span> -<span id="cb433-17"><a href="#cb433-17" aria-hidden="true" tabindex="-1"></a> cmml -> opt;</span> -<span id="cb433-18"><a href="#cb433-18" aria-hidden="true" tabindex="-1"></a> cmml -> prefix;</span> -<span id="cb433-19"><a href="#cb433-19" aria-hidden="true" tabindex="-1"></a> cmml -> infix;</span> -<span id="cb433-20"><a href="#cb433-20" aria-hidden="true" tabindex="-1"></a> pmml -> mterms [style=dashed];</span> -<span id="cb433-21"><a href="#cb433-21" aria-hidden="true" tabindex="-1"></a> cmml -> mterms;</span> -<span id="cb433-22"><a href="#cb433-22" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb433-23"><a href="#cb433-23" aria-hidden="true" tabindex="-1"></a> latex [label = "LaTeX"];</span> -<span id="cb433-24"><a href="#cb433-24" aria-hidden="true" tabindex="-1"></a> pmml [label = "Presentation MathML"];</span> -<span id="cb433-25"><a href="#cb433-25" aria-hidden="true" tabindex="-1"></a> cmml [label = "Content MathML"];</span> -<span id="cb433-26"><a href="#cb433-26" aria-hidden="true" tabindex="-1"></a> slt [label = "Symbol Layout Tree"];</span> -<span id="cb433-27"><a href="#cb433-27" aria-hidden="true" tabindex="-1"></a> opt [label = "Operator Tree"];</span> -<span id="cb433-28"><a href="#cb433-28" aria-hidden="true" tabindex="-1"></a> prefix [label = "Prefix"];</span> -<span id="cb433-29"><a href="#cb433-29" aria-hidden="true" tabindex="-1"></a> infix [label = "Infix"];</span> -<span id="cb433-30"><a href="#cb433-30" aria-hidden="true" tabindex="-1"></a> mterms [label = "M-Terms"];</span> -<span id="cb433-31"><a href="#cb433-31" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb433-32"><a href="#cb433-32" aria-hidden="true" tabindex="-1"></a>```</span> -<span id="cb433-33"><a href="#cb433-33" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb433-34"><a href="#cb433-34" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb478"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb478-1"><a href="#cb478-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb478-2"><a href="#cb478-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[import=witiko/dot]{<span class="ex">markdown</span>}</span> +<span id="cb478-3"><a href="#cb478-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\setkeys</span>{Gin}{</span> +<span id="cb478-4"><a href="#cb478-4" aria-hidden="true" tabindex="-1"></a> width=<span class="fu">\columnwidth</span>,</span> +<span id="cb478-5"><a href="#cb478-5" aria-hidden="true" tabindex="-1"></a> height=0.65<span class="fu">\paperheight</span>,</span> +<span id="cb478-6"><a href="#cb478-6" aria-hidden="true" tabindex="-1"></a> keepaspectratio}</span> +<span id="cb478-7"><a href="#cb478-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb478-8"><a href="#cb478-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb478-9"><a href="#cb478-9" aria-hidden="true" tabindex="-1"></a>``` dot Various formats of mathemathical formulae</span> +<span id="cb478-10"><a href="#cb478-10" aria-hidden="true" tabindex="-1"></a>digraph tree {</span> +<span id="cb478-11"><a href="#cb478-11" aria-hidden="true" tabindex="-1"></a> margin = 0;</span> +<span id="cb478-12"><a href="#cb478-12" aria-hidden="true" tabindex="-1"></a> rankdir = "LR";</span> +<span id="cb478-13"><a href="#cb478-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb478-14"><a href="#cb478-14" aria-hidden="true" tabindex="-1"></a> latex -> pmml;</span> +<span id="cb478-15"><a href="#cb478-15" aria-hidden="true" tabindex="-1"></a> latex -> cmml;</span> +<span id="cb478-16"><a href="#cb478-16" aria-hidden="true" tabindex="-1"></a> pmml -> slt;</span> +<span id="cb478-17"><a href="#cb478-17" aria-hidden="true" tabindex="-1"></a> cmml -> opt;</span> +<span id="cb478-18"><a href="#cb478-18" aria-hidden="true" tabindex="-1"></a> cmml -> prefix;</span> +<span id="cb478-19"><a href="#cb478-19" aria-hidden="true" tabindex="-1"></a> cmml -> infix;</span> +<span id="cb478-20"><a href="#cb478-20" aria-hidden="true" tabindex="-1"></a> pmml -> mterms [style=dashed];</span> +<span id="cb478-21"><a href="#cb478-21" aria-hidden="true" tabindex="-1"></a> cmml -> mterms;</span> +<span id="cb478-22"><a href="#cb478-22" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb478-23"><a href="#cb478-23" aria-hidden="true" tabindex="-1"></a> latex [label = "LaTeX"];</span> +<span id="cb478-24"><a href="#cb478-24" aria-hidden="true" tabindex="-1"></a> pmml [label = "Presentation MathML"];</span> +<span id="cb478-25"><a href="#cb478-25" aria-hidden="true" tabindex="-1"></a> cmml [label = "Content MathML"];</span> +<span id="cb478-26"><a href="#cb478-26" aria-hidden="true" tabindex="-1"></a> slt [label = "Symbol Layout Tree"];</span> +<span id="cb478-27"><a href="#cb478-27" aria-hidden="true" tabindex="-1"></a> opt [label = "Operator Tree"];</span> +<span id="cb478-28"><a href="#cb478-28" aria-hidden="true" tabindex="-1"></a> prefix [label = "Prefix"];</span> +<span id="cb478-29"><a href="#cb478-29" aria-hidden="true" tabindex="-1"></a> infix [label = "Infix"];</span> +<span id="cb478-30"><a href="#cb478-30" aria-hidden="true" tabindex="-1"></a> mterms [label = "M-Terms"];</span> +<span id="cb478-31"><a href="#cb478-31" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb478-32"><a href="#cb478-32" aria-hidden="true" tabindex="-1"></a>```</span> +<span id="cb478-33"><a href="#cb478-33" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb478-34"><a href="#cb478-34" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb434"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb434-1"><a href="#cb434-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb479"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb479-1"><a href="#cb479-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain a drawing of a directed graph similar to Figure 1 from the following conference article:</p> @@ -7363,164 +8323,82 @@ Wget or cURL installed. The theme also requires shell access unless the class="tex">T<sub>e</sub>X</span> option is enabled.</p> </dd> </dl> -<h5 class="unnumbered" id="latex-example-52"><span +<h5 class="unnumbered" id="latex-example-55"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb435"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb435-1"><a href="#cb435-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb435-2"><a href="#cb435-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[import=witiko/graphicx/http]{<span class="ex">markdown</span>}</span> -<span id="cb435-3"><a href="#cb435-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb435-4"><a href="#cb435-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb435-5"><a href="#cb435-5" aria-hidden="true" tabindex="-1"></a>![img](https://github.com/witiko/markdown/raw/main/markdown.png</span> -<span id="cb435-6"><a href="#cb435-6" aria-hidden="true" tabindex="-1"></a> "The banner of the Markdown package")</span> -<span id="cb435-7"><a href="#cb435-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb435-8"><a href="#cb435-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb480"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb480-1"><a href="#cb480-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb480-2"><a href="#cb480-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[import=witiko/graphicx/http]{<span class="ex">markdown</span>}</span> +<span id="cb480-3"><a href="#cb480-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb480-4"><a href="#cb480-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb480-5"><a href="#cb480-5" aria-hidden="true" tabindex="-1"></a>![img](https://github.com/witiko/markdown/raw/main/markdown.png</span> +<span id="cb480-6"><a href="#cb480-6" aria-hidden="true" tabindex="-1"></a> "The banner of the Markdown package")</span> +<span id="cb480-7"><a href="#cb480-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb480-8"><a href="#cb480-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb436"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb436-1"><a href="#cb436-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb481"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb481-1"><a href="#cb481-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following image:</p> <blockquote> <figure> -<img -src="https://github.com/witiko/markdown/raw/main/markdown.png%20%22The%20banner%20of%20the%20Markdown%20package%22" -alt="img" /> +<img src="https://github.com/witiko/markdown/raw/main/markdown.png" +title="The banner of the Markdown package" alt="img" /> <figcaption aria-hidden="true">img</figcaption> </figure> </blockquote> <dl> -<dt><strong><code>witiko/tilde</code></strong></dt> +<dt><strong><code>witiko/markdown/defaults</code></strong></dt> +<dd> +<p>A <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> theme with +the default definitions of token renderer prototypes for plain <span +class="tex">T<sub>e</sub>X</span>. This theme is loaded automatically +together with the package and explicitly loading it has no effect.</p> +</dd> +</dl> +<h3 data-number="2.2.7" id="themes-1"><span +class="header-section-number">2.2.7</span> Themes</h3> +<p>In Con<span class="tex">T<sub>e</sub>X</span>t, we expand on the +concept of <a href="#themes">themes</a> by allowing a theme to be a +full-blown Con<span class="tex">T<sub>e</sub>X</span>t module. +Specifically, the key-values <code>theme</code>=⟨<em>theme name</em>⟩ +and <code>import</code>=⟨<em>theme name</em>⟩ load a Con<span +class="tex">T<sub>e</sub>X</span>t module named +<code>t-markdowntheme</code>⟨<em>munged theme +name</em>⟩<code>.tex</code> if it exists and a <span +class="tex">T<sub>e</sub>X</span> document named +<code>markdowntheme</code>\meta{munged theme name}<code>.tex</code> +otherwise.</p> +<p>Having the Markdown package automatically load either the generic +<code>.tex</code> <em>theme file</em> or the Con<span +class="tex">T<sub>e</sub>X</span>t-specific <code>t-*.tex</code> theme +file allows developers to have a single <em>theme file</em>, when the +theme is small or the difference between <span +class="tex">T<sub>e</sub>X</span> formats is unimportant, and scale up +to separate theme files native to different <span +class="tex">T<sub>e</sub>X</span> formats for large multi-format themes, +where different code is needed for different <span +class="tex">T<sub>e</sub>X</span> formats. To enable code reuse, +developers can load the <code>.tex</code> theme file from the +<code>t-*.tex</code> theme file using the +<code>\markdownLoadPlainTeXTheme</code> macro.</p> +<p>For example, to load a theme named <code>witiko/tilde</code> in your +document:</p> +<div class="sourceCode" id="cb482"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb482-1"><a href="#cb482-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb482-2"><a href="#cb482-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[import=witiko/tilde]</span></code></pre></div> +<p>Built-in Con<span class="tex">T<sub>e</sub>X</span>t themes provided +with the Markdown package include:</p> +<dl> +<dt><strong><code>witiko/markdown/defaults</code></strong></dt> <dd> -<p>A theme that makes tilde (<code>~</code>) always typeset the -non-breaking space even when the <strong><code>hybrid</code></strong> -Lua option is disabled.</p> +<p>A Con<span class="tex">T<sub>e</sub>X</span>t theme with the default +definitions of token renderer prototypes for plain <span +class="tex">T<sub>e</sub>X</span>. This theme is loaded automatically +together with the package and explicitly loading it has no effect.</p> </dd> </dl> -<h5 class="unnumbered" id="latex-example-53"><span -class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> -<p>Using a text editor, create a text document named -<code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb437"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb437-1"><a href="#cb437-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb437-2"><a href="#cb437-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[import=witiko/tilde]{<span class="ex">markdown</span>}</span> -<span id="cb437-3"><a href="#cb437-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb437-4"><a href="#cb437-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb437-5"><a href="#cb437-5" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span> -<span id="cb437-6"><a href="#cb437-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb437-7"><a href="#cb437-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> -<p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb438"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb438-1"><a href="#cb438-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> -<p>A PDF document named <code>document.pdf</code> should be produced and -contain the following text, where the middot (<code>·</code>) denotes a -non-breaking space:</p> -<blockquote> -<p>Bartel·Leendert van·der·Waerden</p> -</blockquote> -<h4 data-number="2.2.3.4" id="latexsnippets"><span -class="header-section-number">2.2.3.4</span> <span -class="latex">L<sup>a</sup>T<sub>e</sub>X</span> snippets</h4> -<p>User-defined <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> -themes provide global control over high-level goals. However, it is -often desirable to change only some local aspects of a document. <span -class="latex">L<sup>a</sup>T<sub>e</sub>X</span> snippets provide -syntactic sugar for defining and invoking various options locally.</p> -<p>Here is how we can use snippets to store options and invoke them -later:</p> -<div class="sourceCode" id="cb439"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb439-1"><a href="#cb439-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetupSnippet</span>{romanNumerals}{</span> -<span id="cb439-2"><a href="#cb439-2" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb439-3"><a href="#cb439-3" aria-hidden="true" tabindex="-1"></a> olItemWithNumber = {<span class="co">%</span></span> -<span id="cb439-4"><a href="#cb439-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\item</span>[<span class="fu">\romannumeral</span>#1<span class="fu">\relax</span>.]<span class="co">%</span></span> -<span id="cb439-5"><a href="#cb439-5" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb439-6"><a href="#cb439-6" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb439-7"><a href="#cb439-7" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb439-8"><a href="#cb439-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb439-9"><a href="#cb439-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb439-10"><a href="#cb439-10" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by arabic numerals:</span> -<span id="cb439-11"><a href="#cb439-11" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb439-12"><a href="#cb439-12" aria-hidden="true" tabindex="-1"></a>1. wahid</span> -<span id="cb439-13"><a href="#cb439-13" aria-hidden="true" tabindex="-1"></a>2. aithnayn</span> -<span id="cb439-14"><a href="#cb439-14" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb439-15"><a href="#cb439-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb439-16"><a href="#cb439-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{snippet=romanNumerals}</span> -<span id="cb439-17"><a href="#cb439-17" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb439-18"><a href="#cb439-18" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span> -<span id="cb439-19"><a href="#cb439-19" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb439-20"><a href="#cb439-20" aria-hidden="true" tabindex="-1"></a>3. tres</span> -<span id="cb439-21"><a href="#cb439-21" aria-hidden="true" tabindex="-1"></a>4. quattuor</span> -<span id="cb439-22"><a href="#cb439-22" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb439-23"><a href="#cb439-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span></code></pre></div> -<p>If the <code>romanNumerals</code> snippet were defined in the -<code>jdoe/lists</code> theme, we could import the -<code>jdoe/lists</code> theme and use the qualified name -<code>jdoe/lists/romanNumerals</code> to invoke the snippet:</p> -<div class="sourceCode" id="cb440"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb440-1"><a href="#cb440-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{import=jdoe/lists}</span> -<span id="cb440-2"><a href="#cb440-2" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{snippet=jdoe/lists/romanNumerals}</span> -<span id="cb440-3"><a href="#cb440-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb440-4"><a href="#cb440-4" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span> -<span id="cb440-5"><a href="#cb440-5" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb440-6"><a href="#cb440-6" aria-hidden="true" tabindex="-1"></a>3. tres</span> -<span id="cb440-7"><a href="#cb440-7" aria-hidden="true" tabindex="-1"></a>4. quattuor</span> -<span id="cb440-8"><a href="#cb440-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb440-9"><a href="#cb440-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span></code></pre></div> -<p>Alternatively, we can use the extended variant of the -<code>import</code> <span -class="latex">L<sup>a</sup>T<sub>e</sub>X</span> option that allows us -to import the <code>romanNumerals</code> snippet to the current -namespace for easier access:</p> -<div class="sourceCode" id="cb441"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb441-1"><a href="#cb441-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb441-2"><a href="#cb441-2" aria-hidden="true" tabindex="-1"></a> import = {</span> -<span id="cb441-3"><a href="#cb441-3" aria-hidden="true" tabindex="-1"></a> jdoe/lists = romanNumerals,</span> -<span id="cb441-4"><a href="#cb441-4" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb441-5"><a href="#cb441-5" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb441-6"><a href="#cb441-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{snippet=romanNumerals}</span> -<span id="cb441-7"><a href="#cb441-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb441-8"><a href="#cb441-8" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span> -<span id="cb441-9"><a href="#cb441-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb441-10"><a href="#cb441-10" aria-hidden="true" tabindex="-1"></a>3. tres</span> -<span id="cb441-11"><a href="#cb441-11" aria-hidden="true" tabindex="-1"></a>4. quattuor</span> -<span id="cb441-12"><a href="#cb441-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb441-13"><a href="#cb441-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span></code></pre></div> -<p>Furthermore, we can also specify the name of the snippet in the -current namespace, which can be different from the name of the snippet -in the <code>jdoe/lists</code> theme. For example, we can make the -snippet <code>jdoe/lists/romanNumerals</code> available under the name -<code>roman</code>.</p> -<div class="sourceCode" id="cb442"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb442-1"><a href="#cb442-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb442-2"><a href="#cb442-2" aria-hidden="true" tabindex="-1"></a> import = {</span> -<span id="cb442-3"><a href="#cb442-3" aria-hidden="true" tabindex="-1"></a> jdoe/lists = romanNumerals as roman,</span> -<span id="cb442-4"><a href="#cb442-4" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb442-5"><a href="#cb442-5" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb442-6"><a href="#cb442-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{snippet=roman}</span> -<span id="cb442-7"><a href="#cb442-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb442-8"><a href="#cb442-8" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span> -<span id="cb442-9"><a href="#cb442-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb442-10"><a href="#cb442-10" aria-hidden="true" tabindex="-1"></a>3. tres</span> -<span id="cb442-11"><a href="#cb442-11" aria-hidden="true" tabindex="-1"></a>4. quattuor</span> -<span id="cb442-12"><a href="#cb442-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb442-13"><a href="#cb442-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span></code></pre></div> -<p>Several themes and/or snippets can be loaded at once using the -extended variant of the <code>import</code> <span -class="latex">L<sup>a</sup>T<sub>e</sub>X</span> option:</p> -<div class="sourceCode" id="cb443"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb443-1"><a href="#cb443-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb443-2"><a href="#cb443-2" aria-hidden="true" tabindex="-1"></a> import = {</span> -<span id="cb443-3"><a href="#cb443-3" aria-hidden="true" tabindex="-1"></a> jdoe/longpackagename/lists = {</span> -<span id="cb443-4"><a href="#cb443-4" aria-hidden="true" tabindex="-1"></a> arabic as arabic1,</span> -<span id="cb443-5"><a href="#cb443-5" aria-hidden="true" tabindex="-1"></a> roman,</span> -<span id="cb443-6"><a href="#cb443-6" aria-hidden="true" tabindex="-1"></a> alphabetic,</span> -<span id="cb443-7"><a href="#cb443-7" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb443-8"><a href="#cb443-8" aria-hidden="true" tabindex="-1"></a> jdoe/anotherlongpackagename/lists = {</span> -<span id="cb443-9"><a href="#cb443-9" aria-hidden="true" tabindex="-1"></a> arabic as arabic2,</span> -<span id="cb443-10"><a href="#cb443-10" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb443-11"><a href="#cb443-11" aria-hidden="true" tabindex="-1"></a> jdoe/yetanotherlongpackagename,</span> -<span id="cb443-12"><a href="#cb443-12" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb443-13"><a href="#cb443-13" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> <h2 data-number="2.3" id="markdown-tokens"><span class="header-section-number">2.3</span> Markdown Tokens</h2> <p>A key feature of the Markdown package is the support for manipulating @@ -7536,67 +8414,74 @@ class="tex">T<sub>e</sub>X</span> macros, which render markdown tokens. In this section, I will describe the individual token renderers.</p> <h4 data-number="2.3.1.1" id="attribute-renderers"><span class="header-section-number">2.3.1.1</span> Attribute Renderers</h4> -<p>The following macros are only produced, when the -<strong><code>headerAttributes</code></strong> option is enabled.</p> +<p>The following macros are only produced, when at least one of the +following options for markdown attributes on different elements is +enabled:</p> +<ul> +<li><strong><code>autoIdentifiers</code></strong></li> +<li><strong><code>fencedCodeAttributes</code></strong></li> +<li><strong><code>gfmAutoIdentifiers</code></strong></li> +<li><strong><code>headerAttributes</code></strong></li> +<li><strong><code>inlineCodeAttributes</code></strong></li> +<li><strong><code>linkAttributes</code></strong></li> +</ul> <p><code>\markdownRendererAttributeIdentifier</code> represents the ⟨<em>identifier</em>⟩ of a markdown element (<code>id="</code>⟨<em>identifier</em>⟩<code>"</code> in HTML and -<code>#</code>⟨<em>identifier</em>⟩ in Markdown’s -<strong><code>headerAttributes</code></strong> syntax extension). The -macro receives a single attribute that corresponds to the +<code>#</code>⟨<em>identifier</em>⟩ in markdown attributes). The macro +receives a single attribute that corresponds to the ⟨<em>identifier</em>⟩.</p> <p><code>\markdownRendererAttributeClassName</code> represents the ⟨<em>class name</em>⟩ of a markdown element (<code>class="</code>⟨<em>class name</em>⟩ …<code>"</code> in HTML and -<code>.</code>⟨<em>class name</em>⟩ in Markdown’s -<strong><code>headerAttributes</code></strong> syntax extension). The -macro receives a single attribute that corresponds to the \meta{class -name}.</p> +<code>.</code>⟨<em>class name</em>⟩ in markdown attributes). The macro +receives a single attribute that corresponds to the ⟨<em>class +name</em>⟩.</p> <p><code>\markdownRendererAttributeKeyValue</code> represents a HTML attribute in the form ⟨<em>key</em>⟩<code>=</code>⟨<em>value</em>⟩ that is neither an identifier nor a class name. The macro receives two attributes that correspond to the ⟨<em>key</em>⟩ and the ⟨<em>value</em>⟩, respectively.</p> -<h5 class="unnumbered" id="latex-example-54"><span +<h5 class="unnumbered" id="latex-example-56"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb444"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb444-1"><a href="#cb444-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb444-2"><a href="#cb444-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes, underscores=false]{<span class="ex">markdown</span>}</span> -<span id="cb444-3"><a href="#cb444-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb444-4"><a href="#cb444-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb444-5"><a href="#cb444-5" aria-hidden="true" tabindex="-1"></a> attributeIdentifier = {<span class="co">%</span></span> -<span id="cb444-6"><a href="#cb444-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb444-7"><a href="#cb444-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(Identifier: #1)}</span> -<span id="cb444-8"><a href="#cb444-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb444-9"><a href="#cb444-9" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb444-10"><a href="#cb444-10" aria-hidden="true" tabindex="-1"></a> attributeClassName = {<span class="co">%</span></span> -<span id="cb444-11"><a href="#cb444-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb444-12"><a href="#cb444-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(Class name: #1)}</span> -<span id="cb444-13"><a href="#cb444-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb444-14"><a href="#cb444-14" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb444-15"><a href="#cb444-15" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {<span class="co">%</span></span> -<span id="cb444-16"><a href="#cb444-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb444-17"><a href="#cb444-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(Key: #1, Value: #2)}</span> -<span id="cb444-18"><a href="#cb444-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb444-19"><a href="#cb444-19" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb444-20"><a href="#cb444-20" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb444-21"><a href="#cb444-21" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb444-22"><a href="#cb444-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb444-23"><a href="#cb444-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb444-24"><a href="#cb444-24" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb444-25"><a href="#cb444-25" aria-hidden="true" tabindex="-1"></a># First top-level heading {jane=doe}</span> -<span id="cb444-26"><a href="#cb444-26" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb444-27"><a href="#cb444-27" aria-hidden="true" tabindex="-1"></a>## A subheading {#identifier}</span> -<span id="cb444-28"><a href="#cb444-28" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb444-29"><a href="#cb444-29" aria-hidden="true" tabindex="-1"></a># Second top-level heading {.class_name}</span> -<span id="cb444-30"><a href="#cb444-30" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb444-31"><a href="#cb444-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb444-32"><a href="#cb444-32" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb483"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb483-1"><a href="#cb483-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb483-2"><a href="#cb483-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes, underscores=false]{<span class="ex">markdown</span>}</span> +<span id="cb483-3"><a href="#cb483-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb483-4"><a href="#cb483-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb483-5"><a href="#cb483-5" aria-hidden="true" tabindex="-1"></a> attributeIdentifier = {<span class="co">%</span></span> +<span id="cb483-6"><a href="#cb483-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb483-7"><a href="#cb483-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(Identifier: #1)}</span> +<span id="cb483-8"><a href="#cb483-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb483-9"><a href="#cb483-9" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb483-10"><a href="#cb483-10" aria-hidden="true" tabindex="-1"></a> attributeClassName = {<span class="co">%</span></span> +<span id="cb483-11"><a href="#cb483-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb483-12"><a href="#cb483-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(Class name: #1)}</span> +<span id="cb483-13"><a href="#cb483-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb483-14"><a href="#cb483-14" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb483-15"><a href="#cb483-15" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {<span class="co">%</span></span> +<span id="cb483-16"><a href="#cb483-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb483-17"><a href="#cb483-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(Key: #1, Value: #2)}</span> +<span id="cb483-18"><a href="#cb483-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb483-19"><a href="#cb483-19" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb483-20"><a href="#cb483-20" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb483-21"><a href="#cb483-21" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb483-22"><a href="#cb483-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb483-23"><a href="#cb483-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb483-24"><a href="#cb483-24" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb483-25"><a href="#cb483-25" aria-hidden="true" tabindex="-1"></a># First top-level heading {jane=doe}</span> +<span id="cb483-26"><a href="#cb483-26" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb483-27"><a href="#cb483-27" aria-hidden="true" tabindex="-1"></a>## A subheading {#identifier}</span> +<span id="cb483-28"><a href="#cb483-28" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb483-29"><a href="#cb483-29" aria-hidden="true" tabindex="-1"></a># Second top-level heading {.class_name}</span> +<span id="cb483-30"><a href="#cb483-30" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb483-31"><a href="#cb483-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb483-32"><a href="#cb483-32" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb445"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb445-1"><a href="#cb445-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb484"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb484-1"><a href="#cb484-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -7613,35 +8498,35 @@ class="header-section-number">2.3.1.2</span> Block Quote Renderers</h4> the beginning of a block quote. The macro receives no arguments.</p> <p>The <code>\markdownRendererBlockQuoteEnd</code> macro represents the end of a block quote. The macro receives no arguments.</p> -<h5 class="unnumbered" id="plain-tex-example-22">Plain <span +<h5 class="unnumbered" id="plain-tex-example-25">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb446"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb446-1"><a href="#cb446-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb446-2"><a href="#cb446-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteBegin</span>{<span class="co">%</span></span> -<span id="cb446-3"><a href="#cb446-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span> -<span id="cb446-4"><a href="#cb446-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\vskip\parindent</span></span> -<span id="cb446-5"><a href="#cb446-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\leftskip</span>=2<span class="fu">\parindent</span></span> -<span id="cb446-6"><a href="#cb446-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\parindent</span>=0pt</span> -<span id="cb446-7"><a href="#cb446-7" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb446-8"><a href="#cb446-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteEnd</span>{<span class="co">%</span></span> -<span id="cb446-9"><a href="#cb446-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb446-10"><a href="#cb446-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\vskip\parindent</span></span> -<span id="cb446-11"><a href="#cb446-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span> -<span id="cb446-12"><a href="#cb446-12" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb446-13"><a href="#cb446-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb446-14"><a href="#cb446-14" aria-hidden="true" tabindex="-1"></a>A quote from William Shakespeare's King Lear:</span> -<span id="cb446-15"><a href="#cb446-15" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb446-16"><a href="#cb446-16" aria-hidden="true" tabindex="-1"></a>> This is the excellent foppery of the world that when we are</span> -<span id="cb446-17"><a href="#cb446-17" aria-hidden="true" tabindex="-1"></a>> sick in fortune---often the surfeit of our own behavior---we</span> -<span id="cb446-18"><a href="#cb446-18" aria-hidden="true" tabindex="-1"></a>> make guilty of our disasters the sun, the moon, and the</span> -<span id="cb446-19"><a href="#cb446-19" aria-hidden="true" tabindex="-1"></a>> stars [...]</span> -<span id="cb446-20"><a href="#cb446-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb446-21"><a href="#cb446-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb485"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb485-1"><a href="#cb485-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb485-2"><a href="#cb485-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteBegin</span>{<span class="co">%</span></span> +<span id="cb485-3"><a href="#cb485-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span> +<span id="cb485-4"><a href="#cb485-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\vskip\parindent</span></span> +<span id="cb485-5"><a href="#cb485-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\leftskip</span>=2<span class="fu">\parindent</span></span> +<span id="cb485-6"><a href="#cb485-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\parindent</span>=0pt</span> +<span id="cb485-7"><a href="#cb485-7" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb485-8"><a href="#cb485-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteEnd</span>{<span class="co">%</span></span> +<span id="cb485-9"><a href="#cb485-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb485-10"><a href="#cb485-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\vskip\parindent</span></span> +<span id="cb485-11"><a href="#cb485-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span> +<span id="cb485-12"><a href="#cb485-12" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb485-13"><a href="#cb485-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb485-14"><a href="#cb485-14" aria-hidden="true" tabindex="-1"></a>A quote from William Shakespeare's King Lear:</span> +<span id="cb485-15"><a href="#cb485-15" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb485-16"><a href="#cb485-16" aria-hidden="true" tabindex="-1"></a>> This is the excellent foppery of the world that when we are</span> +<span id="cb485-17"><a href="#cb485-17" aria-hidden="true" tabindex="-1"></a>> sick in fortune---often the surfeit of our own behavior---we</span> +<span id="cb485-18"><a href="#cb485-18" aria-hidden="true" tabindex="-1"></a>> make guilty of our disasters the sun, the moon, and the</span> +<span id="cb485-19"><a href="#cb485-19" aria-hidden="true" tabindex="-1"></a>> stars [...]</span> +<span id="cb485-20"><a href="#cb485-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb485-21"><a href="#cb485-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb447"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb447-1"><a href="#cb447-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb486"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb486-1"><a href="#cb486-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -7652,32 +8537,32 @@ fortune—often the surfeit of our own behavior—we make guilty of our disasters the sun, the moon, and the stars […]</p> </blockquote> </blockquote> -<h5 class="unnumbered" id="latex-example-55"><span +<h5 class="unnumbered" id="latex-example-57"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb448"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb448-1"><a href="#cb448-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb448-2"><a href="#cb448-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb448-3"><a href="#cb448-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb448-4"><a href="#cb448-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb448-5"><a href="#cb448-5" aria-hidden="true" tabindex="-1"></a> blockQuoteBegin = {<span class="kw">\begin</span>{<span class="ex">quote</span>}},</span> -<span id="cb448-6"><a href="#cb448-6" aria-hidden="true" tabindex="-1"></a> blockQuoteEnd = {<span class="kw">\end</span>{<span class="ex">quote</span>}},</span> -<span id="cb448-7"><a href="#cb448-7" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb448-8"><a href="#cb448-8" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb448-9"><a href="#cb448-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb448-10"><a href="#cb448-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb448-11"><a href="#cb448-11" aria-hidden="true" tabindex="-1"></a>A quote from William Shakespeare's King Lear:</span> -<span id="cb448-12"><a href="#cb448-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb448-13"><a href="#cb448-13" aria-hidden="true" tabindex="-1"></a>> This is the excellent foppery of the world that when we are</span> -<span id="cb448-14"><a href="#cb448-14" aria-hidden="true" tabindex="-1"></a>> sick in fortune---often the surfeit of our own behavior---we</span> -<span id="cb448-15"><a href="#cb448-15" aria-hidden="true" tabindex="-1"></a>> make guilty of our disasters the sun, the moon, and the</span> -<span id="cb448-16"><a href="#cb448-16" aria-hidden="true" tabindex="-1"></a>> stars [...]</span> -<span id="cb448-17"><a href="#cb448-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb448-18"><a href="#cb448-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb487"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb487-1"><a href="#cb487-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb487-2"><a href="#cb487-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb487-3"><a href="#cb487-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb487-4"><a href="#cb487-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb487-5"><a href="#cb487-5" aria-hidden="true" tabindex="-1"></a> blockQuoteBegin = {<span class="kw">\begin</span>{<span class="ex">quote</span>}},</span> +<span id="cb487-6"><a href="#cb487-6" aria-hidden="true" tabindex="-1"></a> blockQuoteEnd = {<span class="kw">\end</span>{<span class="ex">quote</span>}},</span> +<span id="cb487-7"><a href="#cb487-7" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb487-8"><a href="#cb487-8" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb487-9"><a href="#cb487-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb487-10"><a href="#cb487-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb487-11"><a href="#cb487-11" aria-hidden="true" tabindex="-1"></a>A quote from William Shakespeare's King Lear:</span> +<span id="cb487-12"><a href="#cb487-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb487-13"><a href="#cb487-13" aria-hidden="true" tabindex="-1"></a>> This is the excellent foppery of the world that when we are</span> +<span id="cb487-14"><a href="#cb487-14" aria-hidden="true" tabindex="-1"></a>> sick in fortune---often the surfeit of our own behavior---we</span> +<span id="cb487-15"><a href="#cb487-15" aria-hidden="true" tabindex="-1"></a>> make guilty of our disasters the sun, the moon, and the</span> +<span id="cb487-16"><a href="#cb487-16" aria-hidden="true" tabindex="-1"></a>> stars [...]</span> +<span id="cb487-17"><a href="#cb487-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb487-18"><a href="#cb487-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb449"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb449-1"><a href="#cb449-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb488"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb488-1"><a href="#cb488-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -7688,27 +8573,27 @@ fortune—often the surfeit of our own behavior—we make guilty of our disasters the sun, the moon, and the stars […]</p> </blockquote> </blockquote> -<h5 class="unnumbered" id="context-example-36">Con<span +<h5 class="unnumbered" id="context-example-38">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb450"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb450-1"><a href="#cb450-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb450-2"><a href="#cb450-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteBegin</span>{<span class="fu">\startquotation</span>}</span> -<span id="cb450-3"><a href="#cb450-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteEnd</span>{<span class="fu">\stopquotation</span>}</span> -<span id="cb450-4"><a href="#cb450-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb450-5"><a href="#cb450-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb450-6"><a href="#cb450-6" aria-hidden="true" tabindex="-1"></a>A quote from William Shakespeare's King Lear:</span> -<span id="cb450-7"><a href="#cb450-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb450-8"><a href="#cb450-8" aria-hidden="true" tabindex="-1"></a>> This is the excellent foppery of the world that when we are</span> -<span id="cb450-9"><a href="#cb450-9" aria-hidden="true" tabindex="-1"></a>> sick in fortune---often the surfeit of our own behavior---we</span> -<span id="cb450-10"><a href="#cb450-10" aria-hidden="true" tabindex="-1"></a>> make guilty of our disasters the sun, the moon, and the</span> -<span id="cb450-11"><a href="#cb450-11" aria-hidden="true" tabindex="-1"></a>> stars [...]</span> -<span id="cb450-12"><a href="#cb450-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb450-13"><a href="#cb450-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb489"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb489-1"><a href="#cb489-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb489-2"><a href="#cb489-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteBegin</span>{<span class="fu">\startquotation</span>}</span> +<span id="cb489-3"><a href="#cb489-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteEnd</span>{<span class="fu">\stopquotation</span>}</span> +<span id="cb489-4"><a href="#cb489-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb489-5"><a href="#cb489-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb489-6"><a href="#cb489-6" aria-hidden="true" tabindex="-1"></a>A quote from William Shakespeare's King Lear:</span> +<span id="cb489-7"><a href="#cb489-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb489-8"><a href="#cb489-8" aria-hidden="true" tabindex="-1"></a>> This is the excellent foppery of the world that when we are</span> +<span id="cb489-9"><a href="#cb489-9" aria-hidden="true" tabindex="-1"></a>> sick in fortune---often the surfeit of our own behavior---we</span> +<span id="cb489-10"><a href="#cb489-10" aria-hidden="true" tabindex="-1"></a>> make guilty of our disasters the sun, the moon, and the</span> +<span id="cb489-11"><a href="#cb489-11" aria-hidden="true" tabindex="-1"></a>> stars [...]</span> +<span id="cb489-12"><a href="#cb489-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb489-13"><a href="#cb489-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb451"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb451-1"><a href="#cb451-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb490"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb490-1"><a href="#cb490-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -7727,32 +8612,32 @@ Context Renderers</h4> <strong><code>bracketedSpans</code></strong> option is enabled.</p> <p>The <code>\markdownRendererBracketedSpanAttributeContextBegin</code> and <code>\markdownRendererBracketedSpanAttributeContextEnd</code> -macros represent the beginning and the end of an inline bracketed span -in which the attributes of the span apply. The macros receive no +macros represent the beginning and the end of a context in which the +attributes of an inline bracketed span apply. The macros receive no arguments.</p> -<h5 class="unnumbered" id="latex-example-56"><span +<h5 class="unnumbered" id="latex-example-58"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb452"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb452-1"><a href="#cb452-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb452-2"><a href="#cb452-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[bracketedSpans]{<span class="ex">markdown</span>}</span> -<span id="cb452-3"><a href="#cb452-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb452-4"><a href="#cb452-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb452-5"><a href="#cb452-5" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextBegin = {(},</span> -<span id="cb452-6"><a href="#cb452-6" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextEnd = {)},</span> -<span id="cb452-7"><a href="#cb452-7" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb452-8"><a href="#cb452-8" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb452-9"><a href="#cb452-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb452-10"><a href="#cb452-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb452-11"><a href="#cb452-11" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb452-12"><a href="#cb452-12" aria-hidden="true" tabindex="-1"></a>[foo [bar]{#identifier}]{key=value} [baz]{.class_name}</span> -<span id="cb452-13"><a href="#cb452-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb452-14"><a href="#cb452-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb452-15"><a href="#cb452-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb491"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb491-1"><a href="#cb491-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb491-2"><a href="#cb491-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[bracketedSpans]{<span class="ex">markdown</span>}</span> +<span id="cb491-3"><a href="#cb491-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb491-4"><a href="#cb491-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb491-5"><a href="#cb491-5" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextBegin = {(},</span> +<span id="cb491-6"><a href="#cb491-6" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextEnd = {)},</span> +<span id="cb491-7"><a href="#cb491-7" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb491-8"><a href="#cb491-8" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb491-9"><a href="#cb491-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb491-10"><a href="#cb491-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb491-11"><a href="#cb491-11" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb491-12"><a href="#cb491-12" aria-hidden="true" tabindex="-1"></a>[foo [bar]{#identifier}]{key=value} [baz]{.class_name}</span> +<span id="cb491-13"><a href="#cb491-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb491-14"><a href="#cb491-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb491-15"><a href="#cb491-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb453"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb453-1"><a href="#cb453-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb492"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb492-1"><a href="#cb492-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -7781,56 +8666,56 @@ of a bulleted list that contains no item with several paragraphs of text (the list is tight). This macro will only be produced, when the <strong><code>tightLists</code></strong> option is disabled. The macro receives no arguments.</p> -<h5 class="unnumbered" id="plain-tex-example-23">Plain <span +<h5 class="unnumbered" id="plain-tex-example-26">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb454"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb454-1"><a href="#cb454-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb454-2"><a href="#cb454-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTightLists</span>{true}</span> -<span id="cb454-3"><a href="#cb454-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb454-4"><a href="#cb454-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span> -<span id="cb454-5"><a href="#cb454-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBeginTight</span>{ (}</span> -<span id="cb454-6"><a href="#cb454-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span> -<span id="cb454-7"><a href="#cb454-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span> -<span id="cb454-8"><a href="#cb454-8" aria-hidden="true" tabindex="-1"></a> ,</span> -<span id="cb454-9"><a href="#cb454-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{, and }<span class="co">%</span></span> -<span id="cb454-10"><a href="#cb454-10" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb454-11"><a href="#cb454-11" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb454-12"><a href="#cb454-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{}</span> -<span id="cb454-13"><a href="#cb454-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEndTight</span>{).}</span> -<span id="cb454-14"><a href="#cb454-14" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb454-15"><a href="#cb454-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb454-16"><a href="#cb454-16" aria-hidden="true" tabindex="-1"></a>This is a tight list</span> -<span id="cb454-17"><a href="#cb454-17" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb454-18"><a href="#cb454-18" aria-hidden="true" tabindex="-1"></a>- the first item</span> -<span id="cb454-19"><a href="#cb454-19" aria-hidden="true" tabindex="-1"></a>- the second item</span> -<span id="cb454-20"><a href="#cb454-20" aria-hidden="true" tabindex="-1"></a>- the third item</span> -<span id="cb454-21"><a href="#cb454-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb454-22"><a href="#cb454-22" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb454-23"><a href="#cb454-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> -<span id="cb454-24"><a href="#cb454-24" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span> -<span id="cb454-25"><a href="#cb454-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> -<span id="cb454-26"><a href="#cb454-26" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb454-27"><a href="#cb454-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBegin</span>{}</span> -<span id="cb454-28"><a href="#cb454-28" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{--<span class="fu">\kern</span> 0.5em}</span> -<span id="cb454-29"><a href="#cb454-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{.<span class="fu">\par</span>}</span> -<span id="cb454-30"><a href="#cb454-30" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEnd</span>{}</span> -<span id="cb454-31"><a href="#cb454-31" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb454-32"><a href="#cb454-32" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb454-33"><a href="#cb454-33" aria-hidden="true" tabindex="-1"></a>This is a loose list</span> -<span id="cb454-34"><a href="#cb454-34" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb454-35"><a href="#cb454-35" aria-hidden="true" tabindex="-1"></a>- This is the first item</span> -<span id="cb454-36"><a href="#cb454-36" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb454-37"><a href="#cb454-37" aria-hidden="true" tabindex="-1"></a>- This is the second item</span> -<span id="cb454-38"><a href="#cb454-38" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb454-39"><a href="#cb454-39" aria-hidden="true" tabindex="-1"></a>- This is the third item</span> -<span id="cb454-40"><a href="#cb454-40" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb454-41"><a href="#cb454-41" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb454-42"><a href="#cb454-42" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb493"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb493-1"><a href="#cb493-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb493-2"><a href="#cb493-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTightLists</span>{true}</span> +<span id="cb493-3"><a href="#cb493-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb493-4"><a href="#cb493-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span> +<span id="cb493-5"><a href="#cb493-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBeginTight</span>{ (}</span> +<span id="cb493-6"><a href="#cb493-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span> +<span id="cb493-7"><a href="#cb493-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span> +<span id="cb493-8"><a href="#cb493-8" aria-hidden="true" tabindex="-1"></a> ,</span> +<span id="cb493-9"><a href="#cb493-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{, and }<span class="co">%</span></span> +<span id="cb493-10"><a href="#cb493-10" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb493-11"><a href="#cb493-11" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb493-12"><a href="#cb493-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{}</span> +<span id="cb493-13"><a href="#cb493-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEndTight</span>{).}</span> +<span id="cb493-14"><a href="#cb493-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb493-15"><a href="#cb493-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb493-16"><a href="#cb493-16" aria-hidden="true" tabindex="-1"></a>This is a tight list</span> +<span id="cb493-17"><a href="#cb493-17" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb493-18"><a href="#cb493-18" aria-hidden="true" tabindex="-1"></a>- the first item</span> +<span id="cb493-19"><a href="#cb493-19" aria-hidden="true" tabindex="-1"></a>- the second item</span> +<span id="cb493-20"><a href="#cb493-20" aria-hidden="true" tabindex="-1"></a>- the third item</span> +<span id="cb493-21"><a href="#cb493-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb493-22"><a href="#cb493-22" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb493-23"><a href="#cb493-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> +<span id="cb493-24"><a href="#cb493-24" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span> +<span id="cb493-25"><a href="#cb493-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> +<span id="cb493-26"><a href="#cb493-26" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb493-27"><a href="#cb493-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBegin</span>{}</span> +<span id="cb493-28"><a href="#cb493-28" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{--<span class="fu">\kern</span> 0.5em}</span> +<span id="cb493-29"><a href="#cb493-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{.<span class="fu">\par</span>}</span> +<span id="cb493-30"><a href="#cb493-30" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEnd</span>{}</span> +<span id="cb493-31"><a href="#cb493-31" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb493-32"><a href="#cb493-32" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb493-33"><a href="#cb493-33" aria-hidden="true" tabindex="-1"></a>This is a loose list</span> +<span id="cb493-34"><a href="#cb493-34" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb493-35"><a href="#cb493-35" aria-hidden="true" tabindex="-1"></a>- This is the first item</span> +<span id="cb493-36"><a href="#cb493-36" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb493-37"><a href="#cb493-37" aria-hidden="true" tabindex="-1"></a>- This is the second item</span> +<span id="cb493-38"><a href="#cb493-38" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb493-39"><a href="#cb493-39" aria-hidden="true" tabindex="-1"></a>- This is the third item</span> +<span id="cb493-40"><a href="#cb493-40" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb493-41"><a href="#cb493-41" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb493-42"><a href="#cb493-42" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb455"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb455-1"><a href="#cb455-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb494"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb494-1"><a href="#cb494-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -7843,61 +8728,61 @@ item).</p> <li><p>This is the third item.</p></li> </ul> </blockquote> -<h5 class="unnumbered" id="latex-example-57"><span +<h5 class="unnumbered" id="latex-example-59"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb456"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb456-1"><a href="#cb456-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb456-2"><a href="#cb456-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[tightLists]{<span class="ex">markdown</span>}</span> -<span id="cb456-3"><a href="#cb456-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb456-4"><a href="#cb456-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb456-5"><a href="#cb456-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{</span> -<span id="cb456-6"><a href="#cb456-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb456-7"><a href="#cb456-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {},</span> -<span id="cb456-8"><a href="#cb456-8" aria-hidden="true" tabindex="-1"></a> ulBeginTight = { (},</span> -<span id="cb456-9"><a href="#cb456-9" aria-hidden="true" tabindex="-1"></a> ulItem = {<span class="co">%</span></span> -<span id="cb456-10"><a href="#cb456-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span> -<span id="cb456-11"><a href="#cb456-11" aria-hidden="true" tabindex="-1"></a> ,</span> -<span id="cb456-12"><a href="#cb456-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{, and }<span class="co">%</span></span> -<span id="cb456-13"><a href="#cb456-13" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb456-14"><a href="#cb456-14" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb456-15"><a href="#cb456-15" aria-hidden="true" tabindex="-1"></a> ulItemEnd = {},</span> -<span id="cb456-16"><a href="#cb456-16" aria-hidden="true" tabindex="-1"></a> ulEndTight = {).},</span> -<span id="cb456-17"><a href="#cb456-17" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb456-18"><a href="#cb456-18" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb456-19"><a href="#cb456-19" aria-hidden="true" tabindex="-1"></a>This is a tight list</span> -<span id="cb456-20"><a href="#cb456-20" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb456-21"><a href="#cb456-21" aria-hidden="true" tabindex="-1"></a>- the first item</span> -<span id="cb456-22"><a href="#cb456-22" aria-hidden="true" tabindex="-1"></a>- the second item</span> -<span id="cb456-23"><a href="#cb456-23" aria-hidden="true" tabindex="-1"></a>- the third item</span> -<span id="cb456-24"><a href="#cb456-24" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb456-25"><a href="#cb456-25" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb456-26"><a href="#cb456-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{</span> -<span id="cb456-27"><a href="#cb456-27" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb456-28"><a href="#cb456-28" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span> -<span id="cb456-29"><a href="#cb456-29" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span> -<span id="cb456-30"><a href="#cb456-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> -<span id="cb456-31"><a href="#cb456-31" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb456-32"><a href="#cb456-32" aria-hidden="true" tabindex="-1"></a> ulBeginTight = {<span class="kw">\begin</span>{<span class="ex">itemize</span>}},</span> -<span id="cb456-33"><a href="#cb456-33" aria-hidden="true" tabindex="-1"></a> ulItem = {<span class="fu">\item</span>},</span> -<span id="cb456-34"><a href="#cb456-34" aria-hidden="true" tabindex="-1"></a> ulItemEnd = {.},</span> -<span id="cb456-35"><a href="#cb456-35" aria-hidden="true" tabindex="-1"></a> ulEnd = {<span class="kw">\end</span>{<span class="ex">itemize</span>}},</span> -<span id="cb456-36"><a href="#cb456-36" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb456-37"><a href="#cb456-37" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb456-38"><a href="#cb456-38" aria-hidden="true" tabindex="-1"></a>This is a loose list</span> -<span id="cb456-39"><a href="#cb456-39" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb456-40"><a href="#cb456-40" aria-hidden="true" tabindex="-1"></a>- This is the first item</span> -<span id="cb456-41"><a href="#cb456-41" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb456-42"><a href="#cb456-42" aria-hidden="true" tabindex="-1"></a>- This is the second item</span> -<span id="cb456-43"><a href="#cb456-43" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb456-44"><a href="#cb456-44" aria-hidden="true" tabindex="-1"></a>- This is the third item</span> -<span id="cb456-45"><a href="#cb456-45" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb456-46"><a href="#cb456-46" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb456-47"><a href="#cb456-47" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb495"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb495-1"><a href="#cb495-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb495-2"><a href="#cb495-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[tightLists]{<span class="ex">markdown</span>}</span> +<span id="cb495-3"><a href="#cb495-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb495-4"><a href="#cb495-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb495-5"><a href="#cb495-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span> +<span id="cb495-6"><a href="#cb495-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb495-7"><a href="#cb495-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {},</span> +<span id="cb495-8"><a href="#cb495-8" aria-hidden="true" tabindex="-1"></a> ulBeginTight = { (},</span> +<span id="cb495-9"><a href="#cb495-9" aria-hidden="true" tabindex="-1"></a> ulItem = {<span class="co">%</span></span> +<span id="cb495-10"><a href="#cb495-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span> +<span id="cb495-11"><a href="#cb495-11" aria-hidden="true" tabindex="-1"></a> ,</span> +<span id="cb495-12"><a href="#cb495-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{, and }<span class="co">%</span></span> +<span id="cb495-13"><a href="#cb495-13" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb495-14"><a href="#cb495-14" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb495-15"><a href="#cb495-15" aria-hidden="true" tabindex="-1"></a> ulItemEnd = {},</span> +<span id="cb495-16"><a href="#cb495-16" aria-hidden="true" tabindex="-1"></a> ulEndTight = {).},</span> +<span id="cb495-17"><a href="#cb495-17" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb495-18"><a href="#cb495-18" aria-hidden="true" tabindex="-1"></a>]</span> +<span id="cb495-19"><a href="#cb495-19" aria-hidden="true" tabindex="-1"></a>This is a tight list</span> +<span id="cb495-20"><a href="#cb495-20" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb495-21"><a href="#cb495-21" aria-hidden="true" tabindex="-1"></a>- the first item</span> +<span id="cb495-22"><a href="#cb495-22" aria-hidden="true" tabindex="-1"></a>- the second item</span> +<span id="cb495-23"><a href="#cb495-23" aria-hidden="true" tabindex="-1"></a>- the third item</span> +<span id="cb495-24"><a href="#cb495-24" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb495-25"><a href="#cb495-25" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb495-26"><a href="#cb495-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span> +<span id="cb495-27"><a href="#cb495-27" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb495-28"><a href="#cb495-28" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span> +<span id="cb495-29"><a href="#cb495-29" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span> +<span id="cb495-30"><a href="#cb495-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> +<span id="cb495-31"><a href="#cb495-31" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb495-32"><a href="#cb495-32" aria-hidden="true" tabindex="-1"></a> ulBeginTight = {<span class="kw">\begin</span>{<span class="ex">itemize</span>}},</span> +<span id="cb495-33"><a href="#cb495-33" aria-hidden="true" tabindex="-1"></a> ulItem = {<span class="fu">\item</span>},</span> +<span id="cb495-34"><a href="#cb495-34" aria-hidden="true" tabindex="-1"></a> ulItemEnd = {.},</span> +<span id="cb495-35"><a href="#cb495-35" aria-hidden="true" tabindex="-1"></a> ulEnd = {<span class="kw">\end</span>{<span class="ex">itemize</span>}},</span> +<span id="cb495-36"><a href="#cb495-36" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb495-37"><a href="#cb495-37" aria-hidden="true" tabindex="-1"></a>]</span> +<span id="cb495-38"><a href="#cb495-38" aria-hidden="true" tabindex="-1"></a>This is a loose list</span> +<span id="cb495-39"><a href="#cb495-39" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb495-40"><a href="#cb495-40" aria-hidden="true" tabindex="-1"></a>- This is the first item</span> +<span id="cb495-41"><a href="#cb495-41" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb495-42"><a href="#cb495-42" aria-hidden="true" tabindex="-1"></a>- This is the second item</span> +<span id="cb495-43"><a href="#cb495-43" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb495-44"><a href="#cb495-44" aria-hidden="true" tabindex="-1"></a>- This is the third item</span> +<span id="cb495-45"><a href="#cb495-45" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb495-46"><a href="#cb495-46" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb495-47"><a href="#cb495-47" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb457"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb457-1"><a href="#cb457-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb496"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb496-1"><a href="#cb496-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -7910,57 +8795,57 @@ item).</p> <li><p>This is the third item.</p></li> </ul> </blockquote> -<h5 class="unnumbered" id="context-example-37">Con<span +<h5 class="unnumbered" id="context-example-39">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb458"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb458-1"><a href="#cb458-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb458-2"><a href="#cb458-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[tightLists = yes]</span> -<span id="cb458-3"><a href="#cb458-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb458-4"><a href="#cb458-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb458-5"><a href="#cb458-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span> -<span id="cb458-6"><a href="#cb458-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBeginTight</span>{ (}</span> -<span id="cb458-7"><a href="#cb458-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span> -<span id="cb458-8"><a href="#cb458-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span> -<span id="cb458-9"><a href="#cb458-9" aria-hidden="true" tabindex="-1"></a> ,</span> -<span id="cb458-10"><a href="#cb458-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{, and }<span class="co">%</span></span> -<span id="cb458-11"><a href="#cb458-11" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb458-12"><a href="#cb458-12" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb458-13"><a href="#cb458-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{}</span> -<span id="cb458-14"><a href="#cb458-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEndTight</span>{).}</span> -<span id="cb458-15"><a href="#cb458-15" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb458-16"><a href="#cb458-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb458-17"><a href="#cb458-17" aria-hidden="true" tabindex="-1"></a>This is a tight list</span> -<span id="cb458-18"><a href="#cb458-18" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb458-19"><a href="#cb458-19" aria-hidden="true" tabindex="-1"></a>- the first item</span> -<span id="cb458-20"><a href="#cb458-20" aria-hidden="true" tabindex="-1"></a>- the second item</span> -<span id="cb458-21"><a href="#cb458-21" aria-hidden="true" tabindex="-1"></a>- the third item</span> -<span id="cb458-22"><a href="#cb458-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb458-23"><a href="#cb458-23" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb458-24"><a href="#cb458-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> -<span id="cb458-25"><a href="#cb458-25" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span> -<span id="cb458-26"><a href="#cb458-26" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> -<span id="cb458-27"><a href="#cb458-27" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb458-28"><a href="#cb458-28" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBegin</span>{<span class="fu">\startitemize</span>}</span> -<span id="cb458-29"><a href="#cb458-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{<span class="fu">\item</span>}</span> -<span id="cb458-30"><a href="#cb458-30" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{.}</span> -<span id="cb458-31"><a href="#cb458-31" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEnd</span>{<span class="fu">\stopitemize</span>}</span> -<span id="cb458-32"><a href="#cb458-32" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb458-33"><a href="#cb458-33" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb458-34"><a href="#cb458-34" aria-hidden="true" tabindex="-1"></a>This is a loose list</span> -<span id="cb458-35"><a href="#cb458-35" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb458-36"><a href="#cb458-36" aria-hidden="true" tabindex="-1"></a>- This is the first item</span> -<span id="cb458-37"><a href="#cb458-37" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb458-38"><a href="#cb458-38" aria-hidden="true" tabindex="-1"></a>- This is the second item</span> -<span id="cb458-39"><a href="#cb458-39" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb458-40"><a href="#cb458-40" aria-hidden="true" tabindex="-1"></a>- This is the third item</span> -<span id="cb458-41"><a href="#cb458-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb458-42"><a href="#cb458-42" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb458-43"><a href="#cb458-43" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb497"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb497-1"><a href="#cb497-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb497-2"><a href="#cb497-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[tightLists = yes]</span> +<span id="cb497-3"><a href="#cb497-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb497-4"><a href="#cb497-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb497-5"><a href="#cb497-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span> +<span id="cb497-6"><a href="#cb497-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBeginTight</span>{ (}</span> +<span id="cb497-7"><a href="#cb497-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span> +<span id="cb497-8"><a href="#cb497-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span> +<span id="cb497-9"><a href="#cb497-9" aria-hidden="true" tabindex="-1"></a> ,</span> +<span id="cb497-10"><a href="#cb497-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{, and }<span class="co">%</span></span> +<span id="cb497-11"><a href="#cb497-11" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb497-12"><a href="#cb497-12" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb497-13"><a href="#cb497-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{}</span> +<span id="cb497-14"><a href="#cb497-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEndTight</span>{).}</span> +<span id="cb497-15"><a href="#cb497-15" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb497-16"><a href="#cb497-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb497-17"><a href="#cb497-17" aria-hidden="true" tabindex="-1"></a>This is a tight list</span> +<span id="cb497-18"><a href="#cb497-18" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb497-19"><a href="#cb497-19" aria-hidden="true" tabindex="-1"></a>- the first item</span> +<span id="cb497-20"><a href="#cb497-20" aria-hidden="true" tabindex="-1"></a>- the second item</span> +<span id="cb497-21"><a href="#cb497-21" aria-hidden="true" tabindex="-1"></a>- the third item</span> +<span id="cb497-22"><a href="#cb497-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb497-23"><a href="#cb497-23" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb497-24"><a href="#cb497-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> +<span id="cb497-25"><a href="#cb497-25" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span> +<span id="cb497-26"><a href="#cb497-26" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> +<span id="cb497-27"><a href="#cb497-27" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb497-28"><a href="#cb497-28" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBegin</span>{<span class="fu">\startitemize</span>}</span> +<span id="cb497-29"><a href="#cb497-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{<span class="fu">\item</span>}</span> +<span id="cb497-30"><a href="#cb497-30" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{.}</span> +<span id="cb497-31"><a href="#cb497-31" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEnd</span>{<span class="fu">\stopitemize</span>}</span> +<span id="cb497-32"><a href="#cb497-32" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb497-33"><a href="#cb497-33" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb497-34"><a href="#cb497-34" aria-hidden="true" tabindex="-1"></a>This is a loose list</span> +<span id="cb497-35"><a href="#cb497-35" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb497-36"><a href="#cb497-36" aria-hidden="true" tabindex="-1"></a>- This is the first item</span> +<span id="cb497-37"><a href="#cb497-37" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb497-38"><a href="#cb497-38" aria-hidden="true" tabindex="-1"></a>- This is the second item</span> +<span id="cb497-39"><a href="#cb497-39" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb497-40"><a href="#cb497-40" aria-hidden="true" tabindex="-1"></a>- This is the third item</span> +<span id="cb497-41"><a href="#cb497-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb497-42"><a href="#cb497-42" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb497-43"><a href="#cb497-43" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb459"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb459-1"><a href="#cb459-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb498"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb498-1"><a href="#cb498-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -7973,124 +8858,252 @@ item).</p> <li><p>This is the third item.</p></li> </ul> </blockquote> -<h4 data-number="2.3.1.5" id="code-block-renderers"><span -class="header-section-number">2.3.1.5</span> Code Block Renderers</h4> +<h4 data-number="2.3.1.5" id="citation-renderers"><span +class="header-section-number">2.3.1.5</span> Citation Renderers</h4> +<p>The <code>\markdownRendererCite</code> macro represents a string of +one or more parenthetical citations. This macro will only be produced, +when the <strong><code>citations</code></strong> option is enabled. The +macro receives the parameter <code>{</code>⟨<em>number of +citations</em>⟩<code>}</code> followed by ⟨<em>suppress author</em>⟩ +<code>{</code>⟨<em>prenote</em>⟩<code>}{</code>⟨<em>postnote</em>⟩<code>}{</code>⟨<em>name</em>⟩<code>}</code> +repeated ⟨<em>number of citations</em>⟩ times. The ⟨<em>suppress +author</em>⟩ parameter is either the token <code>-</code>, when the +author’s name is to be suppressed, or <code>+</code> otherwise.</p> +<h5 class="unnumbered" id="latex-example-60"><span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb499"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb499-1"><a href="#cb499-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb499-2"><a href="#cb499-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[citations]{<span class="ex">markdown</span>}</span> +<span id="cb499-3"><a href="#cb499-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsCounter</span></span> +<span id="cb499-4"><a href="#cb499-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsTotal</span></span> +<span id="cb499-5"><a href="#cb499-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatletter</span></span> +<span id="cb499-6"><a href="#cb499-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\citations</span>#1#2#3#4{<span class="co">%</span></span> +<span id="cb499-7"><a href="#cb499-7" aria-hidden="true" tabindex="-1"></a> a parenthesized citation <span class="fu">\emph</span>{#4}</span> +<span id="cb499-8"><a href="#cb499-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\citationsCounter</span> by 1<span class="fu">\relax</span></span> +<span id="cb499-9"><a href="#cb499-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#2<span class="fu">\relax</span></span> +<span id="cb499-10"><a href="#cb499-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span> +<span id="cb499-11"><a href="#cb499-11" aria-hidden="true" tabindex="-1"></a> with a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span> +<span id="cb499-12"><a href="#cb499-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb499-13"><a href="#cb499-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> +<span id="cb499-14"><a href="#cb499-14" aria-hidden="true" tabindex="-1"></a> with a prefix <span class="fu">\emph</span>{#2}<span class="co">%</span></span> +<span id="cb499-15"><a href="#cb499-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span> +<span id="cb499-16"><a href="#cb499-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ </span>and a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span> +<span id="cb499-17"><a href="#cb499-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb499-18"><a href="#cb499-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb499-19"><a href="#cb499-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\citationsCounter</span>><span class="fu">\citationsTotal\relax</span></span> +<span id="cb499-20"><a href="#cb499-20" aria-hidden="true" tabindex="-1"></a> .<span class="co">%</span></span> +<span id="cb499-21"><a href="#cb499-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\@gobble</span></span> +<span id="cb499-22"><a href="#cb499-22" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> +<span id="cb499-23"><a href="#cb499-23" aria-hidden="true" tabindex="-1"></a> , and</span> +<span id="cb499-24"><a href="#cb499-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\citations</span>}</span> +<span id="cb499-25"><a href="#cb499-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatother</span></span> +<span id="cb499-26"><a href="#cb499-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb499-27"><a href="#cb499-27" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb499-28"><a href="#cb499-28" aria-hidden="true" tabindex="-1"></a> cite = {<span class="co">%</span></span> +<span id="cb499-29"><a href="#cb499-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsCounter</span>=1<span class="co">%</span></span> +<span id="cb499-30"><a href="#cb499-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsTotal</span>=#1<span class="co">%</span></span> +<span id="cb499-31"><a href="#cb499-31" aria-hidden="true" tabindex="-1"></a> This is</span> +<span id="cb499-32"><a href="#cb499-32" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\citations</span></span> +<span id="cb499-33"><a href="#cb499-33" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb499-34"><a href="#cb499-34" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb499-35"><a href="#cb499-35" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb499-36"><a href="#cb499-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb499-37"><a href="#cb499-37" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb499-38"><a href="#cb499-38" aria-hidden="true" tabindex="-1"></a>[see @abrahams90, pp. 12; @eijkhout91, pp. 34]</span> +<span id="cb499-39"><a href="#cb499-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb499-40"><a href="#cb499-40" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb500"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb500-1"><a href="#cb500-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<p>This is a parenthesized citation <em>abrahams90</em> with a prefix +see and a postfix <em>pp. 12</em>, and a citation <em>eijkhout91</em> +with a postfix <em>pp. 34</em>.</p> +</blockquote> +<p>The <code>\markdownRendererTextCite</code> macro represents a string +of one or more text citations. This macro will only be produced, when +the <strong><code>citations</code></strong> option is enabled. The macro +receives parameters in the same format as the +<code>\markdownRendererCite</code> macro.</p> +<h5 class="unnumbered" id="latex-example-61"><span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb501"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb501-1"><a href="#cb501-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb501-2"><a href="#cb501-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[citations]{<span class="ex">markdown</span>}</span> +<span id="cb501-3"><a href="#cb501-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsCounter</span></span> +<span id="cb501-4"><a href="#cb501-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsTotal</span></span> +<span id="cb501-5"><a href="#cb501-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatletter</span></span> +<span id="cb501-6"><a href="#cb501-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\citations</span>#1#2#3#4{<span class="co">%</span></span> +<span id="cb501-7"><a href="#cb501-7" aria-hidden="true" tabindex="-1"></a> a text citation <span class="fu">\emph</span>{#4}</span> +<span id="cb501-8"><a href="#cb501-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\citationsCounter</span> by 1<span class="fu">\relax</span></span> +<span id="cb501-9"><a href="#cb501-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#2<span class="fu">\relax</span></span> +<span id="cb501-10"><a href="#cb501-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span> +<span id="cb501-11"><a href="#cb501-11" aria-hidden="true" tabindex="-1"></a> with a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span> +<span id="cb501-12"><a href="#cb501-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb501-13"><a href="#cb501-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> +<span id="cb501-14"><a href="#cb501-14" aria-hidden="true" tabindex="-1"></a> with a prefix <span class="fu">\emph</span>{#2}<span class="co">%</span></span> +<span id="cb501-15"><a href="#cb501-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span> +<span id="cb501-16"><a href="#cb501-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ </span>and a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span> +<span id="cb501-17"><a href="#cb501-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb501-18"><a href="#cb501-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb501-19"><a href="#cb501-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\citationsCounter</span>><span class="fu">\citationsTotal\relax</span></span> +<span id="cb501-20"><a href="#cb501-20" aria-hidden="true" tabindex="-1"></a> .<span class="co">%</span></span> +<span id="cb501-21"><a href="#cb501-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\@gobble</span></span> +<span id="cb501-22"><a href="#cb501-22" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> +<span id="cb501-23"><a href="#cb501-23" aria-hidden="true" tabindex="-1"></a> , and</span> +<span id="cb501-24"><a href="#cb501-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\citations</span>}</span> +<span id="cb501-25"><a href="#cb501-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatother</span></span> +<span id="cb501-26"><a href="#cb501-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb501-27"><a href="#cb501-27" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb501-28"><a href="#cb501-28" aria-hidden="true" tabindex="-1"></a> textCite = {<span class="co">%</span></span> +<span id="cb501-29"><a href="#cb501-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsCounter</span>=1<span class="co">%</span></span> +<span id="cb501-30"><a href="#cb501-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsTotal</span>=#1<span class="co">%</span></span> +<span id="cb501-31"><a href="#cb501-31" aria-hidden="true" tabindex="-1"></a> This is</span> +<span id="cb501-32"><a href="#cb501-32" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\citations</span></span> +<span id="cb501-33"><a href="#cb501-33" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb501-34"><a href="#cb501-34" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb501-35"><a href="#cb501-35" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb501-36"><a href="#cb501-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb501-37"><a href="#cb501-37" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb501-38"><a href="#cb501-38" aria-hidden="true" tabindex="-1"></a>@abrahams90 [pp. 12; also @eijkhout91]</span> +<span id="cb501-39"><a href="#cb501-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb501-40"><a href="#cb501-40" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb502"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb502-1"><a href="#cb502-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<p>This is a text citation <em>abrahams90</em> with a postfix +<em>pp. 12</em>, and a citation <em>eijkhout91</em> with a prefix +<em>also</em>.</p> +</blockquote> +<h4 data-number="2.3.1.6" id="code-block-renderers"><span +class="header-section-number">2.3.1.6</span> Code Block Renderers</h4> <p>The <code>\markdownRendererInputVerbatim</code> macro represents a code block. The macro receives a single argument that corresponds to the filename of a file contaning the code block contents.</p> <p>The <code>\markdownRendererInputFencedCode</code> macro represents a fenced code block. This macro will only be produced, when the <strong><code>fencedCode</code></strong> option is enabled. The macro -receives two arguments that correspond to the filename of a file -contaning the code block contents and to the code fence infostring.</p> -<h5 class="unnumbered" id="latex-example-58"><span +receives three arguments that correspond to the filename of a file +contaning the code block contents, the fully escaped code fence +infostring that can be directly typeset, and the raw code fence +infostring that can be used outside typesetting.</p> +<h5 class="unnumbered" id="latex-example-62"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb460"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb460-1"><a href="#cb460-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb460-2"><a href="#cb460-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">verbatim</span>}</span> -<span id="cb460-3"><a href="#cb460-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[hyphens]{<span class="ex">url</span>}</span> -<span id="cb460-4"><a href="#cb460-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode]{<span class="ex">markdown</span>}</span> -<span id="cb460-5"><a href="#cb460-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb460-6"><a href="#cb460-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb460-7"><a href="#cb460-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {</span> -<span id="cb460-8"><a href="#cb460-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> -<span id="cb460-9"><a href="#cb460-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb460-10"><a href="#cb460-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> -<span id="cb460-11"><a href="#cb460-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> -<span id="cb460-12"><a href="#cb460-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb460-13"><a href="#cb460-13" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb460-14"><a href="#cb460-14" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb460-15"><a href="#cb460-15" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb460-16"><a href="#cb460-16" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb460-17"><a href="#cb460-17" aria-hidden="true" tabindex="-1"></a> inputVerbatim = {</span> -<span id="cb460-18"><a href="#cb460-18" aria-hidden="true" tabindex="-1"></a> is contained in file <span class="fu">\url</span>{#1}:<span class="co">%</span></span> -<span id="cb460-19"><a href="#cb460-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\verbatiminput</span>{#1}<span class="co">%</span></span> -<span id="cb460-20"><a href="#cb460-20" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb460-21"><a href="#cb460-21" aria-hidden="true" tabindex="-1"></a> inputFencedCode = {</span> -<span id="cb460-22"><a href="#cb460-22" aria-hidden="true" tabindex="-1"></a> in #2 <span class="fu">\markdownRendererInputVerbatim</span>{#1}<span class="co">%</span></span> -<span id="cb460-23"><a href="#cb460-23" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb460-24"><a href="#cb460-24" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb460-25"><a href="#cb460-25" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb460-26"><a href="#cb460-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb460-27"><a href="#cb460-27" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb460-28"><a href="#cb460-28" aria-hidden="true" tabindex="-1"></a>The following code</span> -<span id="cb460-29"><a href="#cb460-29" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb460-30"><a href="#cb460-30" aria-hidden="true" tabindex="-1"></a> def foo(bar):</span> -<span id="cb460-31"><a href="#cb460-31" aria-hidden="true" tabindex="-1"></a> if len(bar) <= 1:</span> -<span id="cb460-32"><a href="#cb460-32" aria-hidden="true" tabindex="-1"></a> return bar[0]</span> -<span id="cb460-33"><a href="#cb460-33" aria-hidden="true" tabindex="-1"></a> elif len(bar) == 2:</span> -<span id="cb460-34"><a href="#cb460-34" aria-hidden="true" tabindex="-1"></a> return sorted(bar)</span> -<span id="cb460-35"><a href="#cb460-35" aria-hidden="true" tabindex="-1"></a> else:</span> -<span id="cb460-36"><a href="#cb460-36" aria-hidden="true" tabindex="-1"></a> baz = len(bar) // 2</span> -<span id="cb460-37"><a href="#cb460-37" aria-hidden="true" tabindex="-1"></a> return foo(bar[baz:], bar[:baz])</span> -<span id="cb460-38"><a href="#cb460-38" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb460-39"><a href="#cb460-39" aria-hidden="true" tabindex="-1"></a>The following code</span> -<span id="cb460-40"><a href="#cb460-40" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb460-41"><a href="#cb460-41" aria-hidden="true" tabindex="-1"></a>~~~ Python</span> -<span id="cb460-42"><a href="#cb460-42" aria-hidden="true" tabindex="-1"></a>>>> foo([4, 2, 1, 3])</span> -<span id="cb460-43"><a href="#cb460-43" aria-hidden="true" tabindex="-1"></a>[1, 2, 3, 4]</span> -<span id="cb460-44"><a href="#cb460-44" aria-hidden="true" tabindex="-1"></a>~~~~~~~~~~</span> -<span id="cb460-45"><a href="#cb460-45" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb460-46"><a href="#cb460-46" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb503"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb503-1"><a href="#cb503-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb503-2"><a href="#cb503-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">verbatim</span>}</span> +<span id="cb503-3"><a href="#cb503-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[hyphens]{<span class="ex">url</span>}</span> +<span id="cb503-4"><a href="#cb503-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode]{<span class="ex">markdown</span>}</span> +<span id="cb503-5"><a href="#cb503-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb503-6"><a href="#cb503-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb503-7"><a href="#cb503-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {</span> +<span id="cb503-8"><a href="#cb503-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> +<span id="cb503-9"><a href="#cb503-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb503-10"><a href="#cb503-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> +<span id="cb503-11"><a href="#cb503-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> +<span id="cb503-12"><a href="#cb503-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb503-13"><a href="#cb503-13" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb503-14"><a href="#cb503-14" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb503-15"><a href="#cb503-15" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb503-16"><a href="#cb503-16" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb503-17"><a href="#cb503-17" aria-hidden="true" tabindex="-1"></a> inputVerbatim = {</span> +<span id="cb503-18"><a href="#cb503-18" aria-hidden="true" tabindex="-1"></a> is contained in file <span class="fu">\url</span>{#1}:<span class="co">%</span></span> +<span id="cb503-19"><a href="#cb503-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\verbatiminput</span>{#1}<span class="co">%</span></span> +<span id="cb503-20"><a href="#cb503-20" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb503-21"><a href="#cb503-21" aria-hidden="true" tabindex="-1"></a> inputFencedCode = {</span> +<span id="cb503-22"><a href="#cb503-22" aria-hidden="true" tabindex="-1"></a> in #2 <span class="fu">\markdownRendererInputVerbatim</span>{#1}<span class="co">%</span></span> +<span id="cb503-23"><a href="#cb503-23" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb503-24"><a href="#cb503-24" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb503-25"><a href="#cb503-25" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb503-26"><a href="#cb503-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb503-27"><a href="#cb503-27" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb503-28"><a href="#cb503-28" aria-hidden="true" tabindex="-1"></a>The following code</span> +<span id="cb503-29"><a href="#cb503-29" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb503-30"><a href="#cb503-30" aria-hidden="true" tabindex="-1"></a> def foo(bar):</span> +<span id="cb503-31"><a href="#cb503-31" aria-hidden="true" tabindex="-1"></a> if len(bar) <= 1:</span> +<span id="cb503-32"><a href="#cb503-32" aria-hidden="true" tabindex="-1"></a> return bar[0]</span> +<span id="cb503-33"><a href="#cb503-33" aria-hidden="true" tabindex="-1"></a> elif len(bar) == 2:</span> +<span id="cb503-34"><a href="#cb503-34" aria-hidden="true" tabindex="-1"></a> return sorted(bar)</span> +<span id="cb503-35"><a href="#cb503-35" aria-hidden="true" tabindex="-1"></a> else:</span> +<span id="cb503-36"><a href="#cb503-36" aria-hidden="true" tabindex="-1"></a> baz = len(bar) // 2</span> +<span id="cb503-37"><a href="#cb503-37" aria-hidden="true" tabindex="-1"></a> return foo(bar[baz:], bar[:baz])</span> +<span id="cb503-38"><a href="#cb503-38" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb503-39"><a href="#cb503-39" aria-hidden="true" tabindex="-1"></a>The following code</span> +<span id="cb503-40"><a href="#cb503-40" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb503-41"><a href="#cb503-41" aria-hidden="true" tabindex="-1"></a>~~~ Python</span> +<span id="cb503-42"><a href="#cb503-42" aria-hidden="true" tabindex="-1"></a>>>> foo([4, 2, 1, 3])</span> +<span id="cb503-43"><a href="#cb503-43" aria-hidden="true" tabindex="-1"></a>[1, 2, 3, 4]</span> +<span id="cb503-44"><a href="#cb503-44" aria-hidden="true" tabindex="-1"></a>~~~~~~~~~~</span> +<span id="cb503-45"><a href="#cb503-45" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb503-46"><a href="#cb503-46" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb461"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb461-1"><a href="#cb461-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb504"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb504-1"><a href="#cb504-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text except for the filename, which may differ:</p> <blockquote> <p>The following code is contained in file <code>./_markdown_document/882453149edcf288976647f6fe147ada.verbatim</code>:</p> -<div class="sourceCode" id="cb462"><pre -class="sourceCode py"><code class="sourceCode python"><span id="cb462-1"><a href="#cb462-1" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> foo(bar):</span> -<span id="cb462-2"><a href="#cb462-2" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="bu">len</span>(bar) <span class="op"><=</span> <span class="dv">1</span>:</span> -<span id="cb462-3"><a href="#cb462-3" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> bar[:<span class="dv">1</span>]</span> -<span id="cb462-4"><a href="#cb462-4" aria-hidden="true" tabindex="-1"></a> <span class="cf">elif</span> <span class="bu">len</span>(bar) <span class="op">==</span> <span class="dv">2</span>:</span> -<span id="cb462-5"><a href="#cb462-5" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="bu">sorted</span>(bar)</span> -<span id="cb462-6"><a href="#cb462-6" aria-hidden="true" tabindex="-1"></a> <span class="cf">else</span>:</span> -<span id="cb462-7"><a href="#cb462-7" aria-hidden="true" tabindex="-1"></a> baz <span class="op">=</span> bar[<span class="bu">len</span>(bar) <span class="op">//</span> <span class="dv">2</span>]</span> -<span id="cb462-8"><a href="#cb462-8" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> (</span> -<span id="cb462-9"><a href="#cb462-9" aria-hidden="true" tabindex="-1"></a> foo([qux <span class="cf">for</span> qux <span class="kw">in</span> bar <span class="cf">if</span> qux <span class="op"><</span> baz]) <span class="op">+</span> [baz] <span class="op">+</span></span> -<span id="cb462-10"><a href="#cb462-10" aria-hidden="true" tabindex="-1"></a> foo([qux <span class="cf">for</span> qux <span class="kw">in</span> bar <span class="cf">if</span> qux <span class="op">></span> baz])</span> -<span id="cb462-11"><a href="#cb462-11" aria-hidden="true" tabindex="-1"></a> )</span></code></pre></div> +<div class="sourceCode" id="cb505"><pre +class="sourceCode py"><code class="sourceCode python"><span id="cb505-1"><a href="#cb505-1" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> foo(bar):</span> +<span id="cb505-2"><a href="#cb505-2" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="bu">len</span>(bar) <span class="op"><=</span> <span class="dv">1</span>:</span> +<span id="cb505-3"><a href="#cb505-3" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> bar[:<span class="dv">1</span>]</span> +<span id="cb505-4"><a href="#cb505-4" aria-hidden="true" tabindex="-1"></a> <span class="cf">elif</span> <span class="bu">len</span>(bar) <span class="op">==</span> <span class="dv">2</span>:</span> +<span id="cb505-5"><a href="#cb505-5" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="bu">sorted</span>(bar)</span> +<span id="cb505-6"><a href="#cb505-6" aria-hidden="true" tabindex="-1"></a> <span class="cf">else</span>:</span> +<span id="cb505-7"><a href="#cb505-7" aria-hidden="true" tabindex="-1"></a> baz <span class="op">=</span> bar[<span class="bu">len</span>(bar) <span class="op">//</span> <span class="dv">2</span>]</span> +<span id="cb505-8"><a href="#cb505-8" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> (</span> +<span id="cb505-9"><a href="#cb505-9" aria-hidden="true" tabindex="-1"></a> foo([qux <span class="cf">for</span> qux <span class="kw">in</span> bar <span class="cf">if</span> qux <span class="op"><</span> baz]) <span class="op">+</span> [baz] <span class="op">+</span></span> +<span id="cb505-10"><a href="#cb505-10" aria-hidden="true" tabindex="-1"></a> foo([qux <span class="cf">for</span> qux <span class="kw">in</span> bar <span class="cf">if</span> qux <span class="op">></span> baz])</span> +<span id="cb505-11"><a href="#cb505-11" aria-hidden="true" tabindex="-1"></a> )</span></code></pre></div> <p>The following code in Python contained in file <code>./_markdown_document/cf2a96e2120cef5b1fae5fea36fcc27b.verbatim</code>:</p> -<div class="sourceCode" id="cb463"><pre -class="sourceCode py"><code class="sourceCode python"><span id="cb463-1"><a href="#cb463-1" aria-hidden="true" tabindex="-1"></a><span class="op">>>></span> foo([<span class="dv">4</span>, <span class="dv">2</span>, <span class="dv">1</span>, <span class="dv">3</span>])</span> -<span id="cb463-2"><a href="#cb463-2" aria-hidden="true" tabindex="-1"></a>[<span class="dv">1</span>, <span class="dv">2</span>, <span class="dv">3</span>, <span class="dv">4</span>]</span></code></pre></div> +<div class="sourceCode" id="cb506"><pre +class="sourceCode py"><code class="sourceCode python"><span id="cb506-1"><a href="#cb506-1" aria-hidden="true" tabindex="-1"></a><span class="op">>>></span> foo([<span class="dv">4</span>, <span class="dv">2</span>, <span class="dv">1</span>, <span class="dv">3</span>])</span> +<span id="cb506-2"><a href="#cb506-2" aria-hidden="true" tabindex="-1"></a>[<span class="dv">1</span>, <span class="dv">2</span>, <span class="dv">3</span>, <span class="dv">4</span>]</span></code></pre></div> </blockquote> -<h4 data-number="2.3.1.6" id="code-span-renderer"><span -class="header-section-number">2.3.1.6</span> Code Span Renderer</h4> +<h4 data-number="2.3.1.7" id="code-span-renderer"><span +class="header-section-number">2.3.1.7</span> Code Span Renderer</h4> <p>The <code>\markdownRendererCodeSpan</code> macro represents inline code span in the input text. It receives a single argument that corresponds to the inline code span.</p> -<h5 class="unnumbered" id="plain-tex-example-24">Plain <span +<h5 class="unnumbered" id="plain-tex-example-27">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb464"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb464-1"><a href="#cb464-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb464-2"><a href="#cb464-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> -<span id="cb464-3"><a href="#cb464-3" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb464-4"><a href="#cb464-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererCodeSpan</span>#1{#1}</span> -<span id="cb464-5"><a href="#cb464-5" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb464-6"><a href="#cb464-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb464-7"><a href="#cb464-7" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>`</span> -<span id="cb464-8"><a href="#cb464-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb464-9"><a href="#cb464-9" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span> -<span id="cb464-10"><a href="#cb464-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb464-11"><a href="#cb464-11" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb464-12"><a href="#cb464-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span> -<span id="cb464-13"><a href="#cb464-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb464-14"><a href="#cb464-14" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span> -<span id="cb464-15"><a href="#cb464-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb464-16"><a href="#cb464-16" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb464-17"><a href="#cb464-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb507"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb507-1"><a href="#cb507-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb507-2"><a href="#cb507-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span> +<span id="cb507-3"><a href="#cb507-3" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb507-4"><a href="#cb507-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererCodeSpan</span>#1{#1}</span> +<span id="cb507-5"><a href="#cb507-5" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb507-6"><a href="#cb507-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb507-7"><a href="#cb507-7" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>`</span> +<span id="cb507-8"><a href="#cb507-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb507-9"><a href="#cb507-9" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span> +<span id="cb507-10"><a href="#cb507-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb507-11"><a href="#cb507-11" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb507-12"><a href="#cb507-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span> +<span id="cb507-13"><a href="#cb507-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb507-14"><a href="#cb507-14" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span> +<span id="cb507-15"><a href="#cb507-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb507-16"><a href="#cb507-16" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb507-17"><a href="#cb507-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb465"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb465-1"><a href="#cb465-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb508"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb508-1"><a href="#cb508-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -8099,34 +9112,34 @@ contain the following text:</p> <p><math><mroot><msqrt><mo>−</mo><mn>1</mn></msqrt></mroot></math> <em>equals</em> <math><mi>i</mi></math>.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-59"><span +<h5 class="unnumbered" id="latex-example-63"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb466"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb466-1"><a href="#cb466-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb466-2"><a href="#cb466-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[smartEllipses]{<span class="ex">markdown</span>}</span> -<span id="cb466-3"><a href="#cb466-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb466-4"><a href="#cb466-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb466-5"><a href="#cb466-5" aria-hidden="true" tabindex="-1"></a> codeSpan = {#1},</span> -<span id="cb466-6"><a href="#cb466-6" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb466-7"><a href="#cb466-7" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb466-8"><a href="#cb466-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb466-9"><a href="#cb466-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb466-10"><a href="#cb466-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb466-11"><a href="#cb466-11" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>`</span> -<span id="cb466-12"><a href="#cb466-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb466-13"><a href="#cb466-13" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span> -<span id="cb466-14"><a href="#cb466-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb466-15"><a href="#cb466-15" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb466-16"><a href="#cb466-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{hybrid}</span> -<span id="cb466-17"><a href="#cb466-17" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span> -<span id="cb466-18"><a href="#cb466-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb466-19"><a href="#cb466-19" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb466-20"><a href="#cb466-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb509"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb509-1"><a href="#cb509-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb509-2"><a href="#cb509-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[smartEllipses]{<span class="ex">markdown</span>}</span> +<span id="cb509-3"><a href="#cb509-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb509-4"><a href="#cb509-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb509-5"><a href="#cb509-5" aria-hidden="true" tabindex="-1"></a> codeSpan = {#1},</span> +<span id="cb509-6"><a href="#cb509-6" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb509-7"><a href="#cb509-7" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb509-8"><a href="#cb509-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb509-9"><a href="#cb509-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb509-10"><a href="#cb509-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb509-11"><a href="#cb509-11" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>`</span> +<span id="cb509-12"><a href="#cb509-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb509-13"><a href="#cb509-13" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span> +<span id="cb509-14"><a href="#cb509-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb509-15"><a href="#cb509-15" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb509-16"><a href="#cb509-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[hybrid]</span> +<span id="cb509-17"><a href="#cb509-17" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span> +<span id="cb509-18"><a href="#cb509-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb509-19"><a href="#cb509-19" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb509-20"><a href="#cb509-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb467"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb467-1"><a href="#cb467-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb510"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb510-1"><a href="#cb510-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -8135,30 +9148,30 @@ contain the following text:</p> <p><math><mroot><msqrt><mo>−</mo><mn>1</mn></msqrt></mroot></math> <em>equals</em> <math><mi>i</mi></math>.</p> </blockquote> -<h5 class="unnumbered" id="context-example-38">Con<span +<h5 class="unnumbered" id="context-example-40">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb468"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb468-1"><a href="#cb468-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb468-2"><a href="#cb468-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererCodeSpan</span>#1{#1}</span> -<span id="cb468-3"><a href="#cb468-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb468-4"><a href="#cb468-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb468-5"><a href="#cb468-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb468-6"><a href="#cb468-6" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>`</span> -<span id="cb468-7"><a href="#cb468-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb468-8"><a href="#cb468-8" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span> -<span id="cb468-9"><a href="#cb468-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb468-10"><a href="#cb468-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb468-11"><a href="#cb468-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span> -<span id="cb468-12"><a href="#cb468-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb468-13"><a href="#cb468-13" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span> -<span id="cb468-14"><a href="#cb468-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb468-15"><a href="#cb468-15" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb468-16"><a href="#cb468-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> -<p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb469"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb469-1"><a href="#cb469-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb511"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb511-1"><a href="#cb511-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb511-2"><a href="#cb511-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererCodeSpan</span>#1{#1}</span> +<span id="cb511-3"><a href="#cb511-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb511-4"><a href="#cb511-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb511-5"><a href="#cb511-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb511-6"><a href="#cb511-6" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>`</span> +<span id="cb511-7"><a href="#cb511-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb511-8"><a href="#cb511-8" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span> +<span id="cb511-9"><a href="#cb511-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb511-10"><a href="#cb511-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb511-11"><a href="#cb511-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span> +<span id="cb511-12"><a href="#cb511-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb511-13"><a href="#cb511-13" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span> +<span id="cb511-14"><a href="#cb511-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb511-15"><a href="#cb511-15" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb511-16"><a href="#cb511-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb512"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb512-1"><a href="#cb512-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -8167,61 +9180,60 @@ contain the following text:</p> <p><math><mroot><msqrt><mo>−</mo><mn>1</mn></msqrt></mroot></math> <em>equals</em> <math><mi>i</mi></math>.</p> </blockquote> -<h4 data-number="2.3.1.7" +<h4 data-number="2.3.1.8" id="code-span-attribute-context-renderers"><span -class="header-section-number">2.3.1.7</span> Code Span Attribute Context +class="header-section-number">2.3.1.8</span> Code Span Attribute Context Renderers</h4> <p>The following macros are only produced, when the <strong><code>inlineCodeAttributes</code></strong> option is enabled.</p> <p>The <code>\markdownRendererCodeSpanAttributeContextBegin</code> and <code>\markdownRendererCodeSpanAttributeContextEnd</code> macros -represent the beginning and the end of an inline code span in which the -attributes of the inline code span apply. The macros receive no -arguments.</p> -<h5 class="unnumbered" id="latex-example-60"><span +represent the beginning and the end of a context in which the attributes +of an inline code span apply. The macros receive no arguments.</p> +<h5 class="unnumbered" id="latex-example-64"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb470"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb470-1"><a href="#cb470-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb470-2"><a href="#cb470-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[inlineCodeAttributes]{<span class="ex">markdown</span>}</span> -<span id="cb470-3"><a href="#cb470-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb470-4"><a href="#cb470-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb470-5"><a href="#cb470-5" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextBegin = {(},</span> -<span id="cb470-6"><a href="#cb470-6" aria-hidden="true" tabindex="-1"></a> codeSpan = {#1},</span> -<span id="cb470-7"><a href="#cb470-7" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextEnd = {)},</span> -<span id="cb470-8"><a href="#cb470-8" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb470-9"><a href="#cb470-9" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb470-10"><a href="#cb470-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb470-11"><a href="#cb470-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb470-12"><a href="#cb470-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb470-13"><a href="#cb470-13" aria-hidden="true" tabindex="-1"></a>foo `bar`{key=value} baz</span> -<span id="cb470-14"><a href="#cb470-14" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb470-15"><a href="#cb470-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb470-16"><a href="#cb470-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb513"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb513-1"><a href="#cb513-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb513-2"><a href="#cb513-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[inlineCodeAttributes]{<span class="ex">markdown</span>}</span> +<span id="cb513-3"><a href="#cb513-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb513-4"><a href="#cb513-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb513-5"><a href="#cb513-5" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextBegin = {(},</span> +<span id="cb513-6"><a href="#cb513-6" aria-hidden="true" tabindex="-1"></a> codeSpan = {#1},</span> +<span id="cb513-7"><a href="#cb513-7" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextEnd = {)},</span> +<span id="cb513-8"><a href="#cb513-8" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb513-9"><a href="#cb513-9" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb513-10"><a href="#cb513-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb513-11"><a href="#cb513-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb513-12"><a href="#cb513-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb513-13"><a href="#cb513-13" aria-hidden="true" tabindex="-1"></a>foo `bar`{key=value} baz</span> +<span id="cb513-14"><a href="#cb513-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb513-15"><a href="#cb513-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb513-16"><a href="#cb513-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb471"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb471-1"><a href="#cb471-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb514"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb514-1"><a href="#cb514-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>foo (bar) baz</p> </blockquote> -<h4 data-number="2.3.1.8" id="texcontentblockrenderers"><span -class="header-section-number">2.3.1.8</span> Content Block +<h4 data-number="2.3.1.9" id="texcontentblockrenderers"><span +class="header-section-number">2.3.1.9</span> Content Block Renderers</h4> -<p>The <code>\markdownRendererContentBlock</code> macro represents an iA -Writer content block. It receives four arguments: the local file or +<p>The <code>\markdownRendererContentBlock</code> macro represents an +iA Writer content block. It receives four arguments: the local file or online image filename extension cast to the lower case, the fully escaped <abbr>uri</abbr> that can be directly typeset, the raw <abbr>uri</abbr> that can be used outside typesetting, and the title of the content block.</p> <p>The <code>\markdownRendererContentBlockOnlineImage</code> macro -represents an iA Writer online image content block. The macro receives +represents an iA Writer online image content block. The macro receives the same arguments as <code>\markdownRendererContentBlock</code>.</p> <p>The <code>\markdownRendererContentBlockCode</code> macro represents -an iA Writer content block that was recognized as a file in a known +an iA Writer content block that was recognized as a file in a known programming language by its filename extension <span class="math inline"><em>s</em></span>. If any <code>markdown-languages.json</code> file found by @@ -8249,38 +9261,38 @@ highlighting. <a href="https://github.com/iainc/Markdown-Content-Blocks" title="File transclusion syntax for Markdown">The <code>Languages.json</code> file provided by Anton Sotkov</a> is a good starting point.</p> -<h5 class="unnumbered" id="plain-tex-example-25">Plain <span +<h5 class="unnumbered" id="plain-tex-example-28">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb472"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb472-1"><a href="#cb472-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb472-2"><a href="#cb472-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionContentBlocks</span>{true}</span> -<span id="cb472-3"><a href="#cb472-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlock</span>#1#2#3#4{<span class="co">%</span></span> -<span id="cb472-4"><a href="#cb472-4" aria-hidden="true" tabindex="-1"></a> This is {<span class="fu">\tt</span> #2}, #4.</span> -<span id="cb472-5"><a href="#cb472-5" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb472-6"><a href="#cb472-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockOnlineImage</span>#1#2#3#4{<span class="co">%</span></span> -<span id="cb472-7"><a href="#cb472-7" aria-hidden="true" tabindex="-1"></a> This is the image {<span class="fu">\tt</span> #2}, #4.</span> -<span id="cb472-8"><a href="#cb472-8" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb472-9"><a href="#cb472-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockCode</span>#1#2#3#4#5{<span class="co">%</span></span> -<span id="cb472-10"><a href="#cb472-10" aria-hidden="true" tabindex="-1"></a> This is the #2 (<span class="fu">\uppercase</span>{#1}) document {<span class="fu">\tt</span> #3}, #5.</span> -<span id="cb472-11"><a href="#cb472-11" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb472-12"><a href="#cb472-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb472-13"><a href="#cb472-13" aria-hidden="true" tabindex="-1"></a>/document.tex (the document that we are currently typesetting)</span> -<span id="cb472-14"><a href="#cb472-14" aria-hidden="true" tabindex="-1"></a>/markdown-languages.json (the mapping between filename extensions</span> -<span id="cb472-15"><a href="#cb472-15" aria-hidden="true" tabindex="-1"></a> and programming language names)</span> -<span id="cb472-16"><a href="#cb472-16" aria-hidden="true" tabindex="-1"></a>https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)</span> -<span id="cb472-17"><a href="#cb472-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb472-18"><a href="#cb472-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb515"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb515-1"><a href="#cb515-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb515-2"><a href="#cb515-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionContentBlocks</span>{true}</span> +<span id="cb515-3"><a href="#cb515-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlock</span>#1#2#3#4{<span class="co">%</span></span> +<span id="cb515-4"><a href="#cb515-4" aria-hidden="true" tabindex="-1"></a> This is {<span class="fu">\tt</span> #2}, #4.</span> +<span id="cb515-5"><a href="#cb515-5" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb515-6"><a href="#cb515-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockOnlineImage</span>#1#2#3#4{<span class="co">%</span></span> +<span id="cb515-7"><a href="#cb515-7" aria-hidden="true" tabindex="-1"></a> This is the image {<span class="fu">\tt</span> #2}, #4.</span> +<span id="cb515-8"><a href="#cb515-8" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb515-9"><a href="#cb515-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockCode</span>#1#2#3#4#5{<span class="co">%</span></span> +<span id="cb515-10"><a href="#cb515-10" aria-hidden="true" tabindex="-1"></a> This is the #2 (<span class="fu">\uppercase</span>{#1}) document {<span class="fu">\tt</span> #3}, #5.</span> +<span id="cb515-11"><a href="#cb515-11" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb515-12"><a href="#cb515-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb515-13"><a href="#cb515-13" aria-hidden="true" tabindex="-1"></a>/document.tex (the document that we are currently typesetting)</span> +<span id="cb515-14"><a href="#cb515-14" aria-hidden="true" tabindex="-1"></a>/markdown-languages.json (the mapping between filename extensions</span> +<span id="cb515-15"><a href="#cb515-15" aria-hidden="true" tabindex="-1"></a> and programming language names)</span> +<span id="cb515-16"><a href="#cb515-16" aria-hidden="true" tabindex="-1"></a>https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)</span> +<span id="cb515-17"><a href="#cb515-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb515-18"><a href="#cb515-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Create also a text document named <code>markdown-languages.json</code> with the following content:</p> -<div class="sourceCode" id="cb473"><pre -class="sourceCode js"><code class="sourceCode javascript"><span id="cb473-1"><a href="#cb473-1" aria-hidden="true" tabindex="-1"></a>{</span> -<span id="cb473-2"><a href="#cb473-2" aria-hidden="true" tabindex="-1"></a> <span class="st">"json"</span><span class="op">:</span> <span class="st">"JavaScript Object Notation"</span><span class="op">,</span></span> -<span id="cb473-3"><a href="#cb473-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> +<div class="sourceCode" id="cb516"><pre +class="sourceCode js"><code class="sourceCode javascript"><span id="cb516-1"><a href="#cb516-1" aria-hidden="true" tabindex="-1"></a>{</span> +<span id="cb516-2"><a href="#cb516-2" aria-hidden="true" tabindex="-1"></a> <span class="st">"json"</span><span class="op">:</span> <span class="st">"JavaScript Object Notation"</span><span class="op">,</span></span> +<span id="cb516-3"><a href="#cb516-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb474"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb474-1"><a href="#cb474-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb517"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb517-1"><a href="#cb517-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -8292,38 +9304,38 @@ extensions and programming language names.</p> <p>This is the image <code>https://tug.org/tugboat/noword.jpg</code>, the logotype of TUGboat.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-61"><span +<h5 class="unnumbered" id="latex-example-65"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb475"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb475-1"><a href="#cb475-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb475-2"><a href="#cb475-2" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">filecontents</span>}[overwrite,nosearch,noheader]{markdown-languages.json}</span> -<span id="cb475-3"><a href="#cb475-3" aria-hidden="true" tabindex="-1"></a>{</span> -<span id="cb475-4"><a href="#cb475-4" aria-hidden="true" tabindex="-1"></a> "json": "JavaScript Object Notation",</span> -<span id="cb475-5"><a href="#cb475-5" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb475-6"><a href="#cb475-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">filecontents</span>}</span> -<span id="cb475-7"><a href="#cb475-7" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span> -<span id="cb475-8"><a href="#cb475-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb475-9"><a href="#cb475-9" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb475-10"><a href="#cb475-10" aria-hidden="true" tabindex="-1"></a> contentBlock = {This is <span class="fu">\texttt</span>{#2}, #4.},</span> -<span id="cb475-11"><a href="#cb475-11" aria-hidden="true" tabindex="-1"></a> contentBlockOnlineImage = {This is the image <span class="fu">\texttt</span>{#2}, #4.},</span> -<span id="cb475-12"><a href="#cb475-12" aria-hidden="true" tabindex="-1"></a> contentBlockCode = {<span class="co">%</span></span> -<span id="cb475-13"><a href="#cb475-13" aria-hidden="true" tabindex="-1"></a> This is the #2 (<span class="fu">\MakeUppercase</span>{#1}) document <span class="fu">\texttt</span>{#3}, #5.</span> -<span id="cb475-14"><a href="#cb475-14" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb475-15"><a href="#cb475-15" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb475-16"><a href="#cb475-16" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb475-17"><a href="#cb475-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb475-18"><a href="#cb475-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb475-19"><a href="#cb475-19" aria-hidden="true" tabindex="-1"></a>/document.tex (the document that we are currently typesetting)</span> -<span id="cb475-20"><a href="#cb475-20" aria-hidden="true" tabindex="-1"></a>/markdown-languages.json (the mapping between filename extensions</span> -<span id="cb475-21"><a href="#cb475-21" aria-hidden="true" tabindex="-1"></a> and programming language names)</span> -<span id="cb475-22"><a href="#cb475-22" aria-hidden="true" tabindex="-1"></a>https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)</span> -<span id="cb475-23"><a href="#cb475-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb475-24"><a href="#cb475-24" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb518"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb518-1"><a href="#cb518-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb518-2"><a href="#cb518-2" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">filecontents</span>}[overwrite,nosearch,noheader]{markdown-languages.json}</span> +<span id="cb518-3"><a href="#cb518-3" aria-hidden="true" tabindex="-1"></a>{</span> +<span id="cb518-4"><a href="#cb518-4" aria-hidden="true" tabindex="-1"></a> "json": "JavaScript Object Notation",</span> +<span id="cb518-5"><a href="#cb518-5" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb518-6"><a href="#cb518-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">filecontents</span>}</span> +<span id="cb518-7"><a href="#cb518-7" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span> +<span id="cb518-8"><a href="#cb518-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb518-9"><a href="#cb518-9" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb518-10"><a href="#cb518-10" aria-hidden="true" tabindex="-1"></a> contentBlock = {This is <span class="fu">\texttt</span>{#2}, #4.},</span> +<span id="cb518-11"><a href="#cb518-11" aria-hidden="true" tabindex="-1"></a> contentBlockOnlineImage = {This is the image <span class="fu">\texttt</span>{#2}, #4.},</span> +<span id="cb518-12"><a href="#cb518-12" aria-hidden="true" tabindex="-1"></a> contentBlockCode = {<span class="co">%</span></span> +<span id="cb518-13"><a href="#cb518-13" aria-hidden="true" tabindex="-1"></a> This is the #2 (<span class="fu">\MakeUppercase</span>{#1}) document <span class="fu">\texttt</span>{#3}, #5.</span> +<span id="cb518-14"><a href="#cb518-14" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb518-15"><a href="#cb518-15" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb518-16"><a href="#cb518-16" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb518-17"><a href="#cb518-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb518-18"><a href="#cb518-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb518-19"><a href="#cb518-19" aria-hidden="true" tabindex="-1"></a>/document.tex (the document that we are currently typesetting)</span> +<span id="cb518-20"><a href="#cb518-20" aria-hidden="true" tabindex="-1"></a>/markdown-languages.json (the mapping between filename extensions</span> +<span id="cb518-21"><a href="#cb518-21" aria-hidden="true" tabindex="-1"></a> and programming language names)</span> +<span id="cb518-22"><a href="#cb518-22" aria-hidden="true" tabindex="-1"></a>https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)</span> +<span id="cb518-23"><a href="#cb518-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb518-24"><a href="#cb518-24" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb476"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb476-1"><a href="#cb476-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb519"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb519-1"><a href="#cb519-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -8335,39 +9347,39 @@ extensions and programming language names.</p> <p>This is the image <code>https://tug.org/tugboat/noword.jpg</code>, the logotype of TUGboat.</p> </blockquote> -<h5 class="unnumbered" id="context-example-39">Con<span +<h5 class="unnumbered" id="context-example-41">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb477"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb477-1"><a href="#cb477-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb477-2"><a href="#cb477-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[contentBlocks = yes]</span> -<span id="cb477-3"><a href="#cb477-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlock</span>#1#2#3#4{<span class="co">%</span></span> -<span id="cb477-4"><a href="#cb477-4" aria-hidden="true" tabindex="-1"></a> This is {<span class="fu">\tt</span> #2}, #4.</span> -<span id="cb477-5"><a href="#cb477-5" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb477-6"><a href="#cb477-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockOnlineImage</span>#1#2#3#4{<span class="co">%</span></span> -<span id="cb477-7"><a href="#cb477-7" aria-hidden="true" tabindex="-1"></a> This is the image {<span class="fu">\tt</span> #2}, #4.</span> -<span id="cb477-8"><a href="#cb477-8" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb477-9"><a href="#cb477-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockCode</span>#1#2#3#4#5{<span class="co">%</span></span> -<span id="cb477-10"><a href="#cb477-10" aria-hidden="true" tabindex="-1"></a> This is the #2 (<span class="fu">\uppercase</span>{#1}) document {<span class="fu">\tt</span> #3}, #5.</span> -<span id="cb477-11"><a href="#cb477-11" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb477-12"><a href="#cb477-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb477-13"><a href="#cb477-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb477-14"><a href="#cb477-14" aria-hidden="true" tabindex="-1"></a>/document.tex (the document that we are currently typesetting)</span> -<span id="cb477-15"><a href="#cb477-15" aria-hidden="true" tabindex="-1"></a>/markdown-languages.json (the mapping between filename extensions</span> -<span id="cb477-16"><a href="#cb477-16" aria-hidden="true" tabindex="-1"></a> and programming language names)</span> -<span id="cb477-17"><a href="#cb477-17" aria-hidden="true" tabindex="-1"></a>https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)</span> -<span id="cb477-18"><a href="#cb477-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb477-19"><a href="#cb477-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb520"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb520-1"><a href="#cb520-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb520-2"><a href="#cb520-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[contentBlocks = yes]</span> +<span id="cb520-3"><a href="#cb520-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlock</span>#1#2#3#4{<span class="co">%</span></span> +<span id="cb520-4"><a href="#cb520-4" aria-hidden="true" tabindex="-1"></a> This is {<span class="fu">\tt</span> #2}, #4.</span> +<span id="cb520-5"><a href="#cb520-5" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb520-6"><a href="#cb520-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockOnlineImage</span>#1#2#3#4{<span class="co">%</span></span> +<span id="cb520-7"><a href="#cb520-7" aria-hidden="true" tabindex="-1"></a> This is the image {<span class="fu">\tt</span> #2}, #4.</span> +<span id="cb520-8"><a href="#cb520-8" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb520-9"><a href="#cb520-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockCode</span>#1#2#3#4#5{<span class="co">%</span></span> +<span id="cb520-10"><a href="#cb520-10" aria-hidden="true" tabindex="-1"></a> This is the #2 (<span class="fu">\uppercase</span>{#1}) document {<span class="fu">\tt</span> #3}, #5.</span> +<span id="cb520-11"><a href="#cb520-11" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb520-12"><a href="#cb520-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb520-13"><a href="#cb520-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb520-14"><a href="#cb520-14" aria-hidden="true" tabindex="-1"></a>/document.tex (the document that we are currently typesetting)</span> +<span id="cb520-15"><a href="#cb520-15" aria-hidden="true" tabindex="-1"></a>/markdown-languages.json (the mapping between filename extensions</span> +<span id="cb520-16"><a href="#cb520-16" aria-hidden="true" tabindex="-1"></a> and programming language names)</span> +<span id="cb520-17"><a href="#cb520-17" aria-hidden="true" tabindex="-1"></a>https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)</span> +<span id="cb520-18"><a href="#cb520-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb520-19"><a href="#cb520-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Create also a text document named <code>markdown-languages.json</code> with the following content:</p> -<div class="sourceCode" id="cb478"><pre -class="sourceCode js"><code class="sourceCode javascript"><span id="cb478-1"><a href="#cb478-1" aria-hidden="true" tabindex="-1"></a>{</span> -<span id="cb478-2"><a href="#cb478-2" aria-hidden="true" tabindex="-1"></a> <span class="st">"json"</span><span class="op">:</span> <span class="st">"JavaScript Object Notation"</span><span class="op">,</span></span> -<span id="cb478-3"><a href="#cb478-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> +<div class="sourceCode" id="cb521"><pre +class="sourceCode js"><code class="sourceCode javascript"><span id="cb521-1"><a href="#cb521-1" aria-hidden="true" tabindex="-1"></a>{</span> +<span id="cb521-2"><a href="#cb521-2" aria-hidden="true" tabindex="-1"></a> <span class="st">"json"</span><span class="op">:</span> <span class="st">"JavaScript Object Notation"</span><span class="op">,</span></span> +<span id="cb521-3"><a href="#cb521-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb479"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb479-1"><a href="#cb479-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb522"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb522-1"><a href="#cb522-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -8379,8 +9391,8 @@ extensions and programming language names.</p> <p>This is the image <code>https://tug.org/tugboat/noword.jpg</code>, the logotype of TUGboat.</p> </blockquote> -<h4 data-number="2.3.1.9" id="definition-list-renderers"><span -class="header-section-number">2.3.1.9</span> Definition List +<h4 data-number="2.3.1.10" id="definition-list-renderers"><span +class="header-section-number">2.3.1.10</span> Definition List Renderers</h4> <p>The following macros are only produced, when the <strong><code>definitionLists</code></strong> option is enabled.</p> @@ -8412,92 +9424,92 @@ of a definition list that contains no item with several paragraphs of text (the list is tight). This macro will only be produced, when the <strong><code>tightLists</code></strong> option is disabled. The macro receives no arguments.</p> -<h5 class="unnumbered" id="plain-tex-example-26">Plain <span +<h5 class="unnumbered" id="plain-tex-example-29">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb480"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb480-1"><a href="#cb480-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb480-2"><a href="#cb480-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionDefinitionLists</span>{true}</span> -<span id="cb480-3"><a href="#cb480-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTightLists</span>{true}</span> -<span id="cb480-4"><a href="#cb480-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb480-5"><a href="#cb480-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> -<span id="cb480-6"><a href="#cb480-6" aria-hidden="true" tabindex="-1"></a> :<span class="co">%</span></span> -<span id="cb480-7"><a href="#cb480-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> -<span id="cb480-8"><a href="#cb480-8" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb480-9"><a href="#cb480-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBeginTight</span>{<span class="co">%</span></span> -<span id="cb480-10"><a href="#cb480-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span> -<span id="cb480-11"><a href="#cb480-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\parindent</span>=0pt</span> -<span id="cb480-12"><a href="#cb480-12" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb480-13"><a href="#cb480-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span> -<span id="cb480-14"><a href="#cb480-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span>{<span class="fu">\bf</span>#1}<span class="co">%</span></span> -<span id="cb480-15"><a href="#cb480-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span> -<span id="cb480-16"><a href="#cb480-16" aria-hidden="true" tabindex="-1"></a> ,</span> -<span id="cb480-17"><a href="#cb480-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span> -<span id="cb480-18"><a href="#cb480-18" aria-hidden="true" tabindex="-1"></a> , and</span> -<span id="cb480-19"><a href="#cb480-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{.}<span class="co">%</span></span> -<span id="cb480-20"><a href="#cb480-20" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb480-21"><a href="#cb480-21" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb480-22"><a href="#cb480-22" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb480-23"><a href="#cb480-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{}</span> -<span id="cb480-24"><a href="#cb480-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="fu">\par</span>--<span class="fu">\kern</span> 0.5em}</span> -<span id="cb480-25"><a href="#cb480-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEndTight</span>{<span class="fu">\endgroup</span>}</span> -<span id="cb480-26"><a href="#cb480-26" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb480-27"><a href="#cb480-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb480-28"><a href="#cb480-28" aria-hidden="true" tabindex="-1"></a>This is a tight definition list</span> -<span id="cb480-29"><a href="#cb480-29" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb480-30"><a href="#cb480-30" aria-hidden="true" tabindex="-1"></a>Coffee</span> -<span id="cb480-31"><a href="#cb480-31" aria-hidden="true" tabindex="-1"></a>: black hot drink</span> -<span id="cb480-32"><a href="#cb480-32" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span> -<span id="cb480-33"><a href="#cb480-33" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span> -<span id="cb480-34"><a href="#cb480-34" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb480-35"><a href="#cb480-35" aria-hidden="true" tabindex="-1"></a>Milk</span> -<span id="cb480-36"><a href="#cb480-36" aria-hidden="true" tabindex="-1"></a>: white cold drink</span> -<span id="cb480-37"><a href="#cb480-37" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span> -<span id="cb480-38"><a href="#cb480-38" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span> -<span id="cb480-39"><a href="#cb480-39" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb480-40"><a href="#cb480-40" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb480-41"><a href="#cb480-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> -<span id="cb480-42"><a href="#cb480-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> -<span id="cb480-43"><a href="#cb480-43" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb480-44"><a href="#cb480-44" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBegin</span>{}</span> -<span id="cb480-45"><a href="#cb480-45" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span> -<span id="cb480-46"><a href="#cb480-46" aria-hidden="true" tabindex="-1"></a> . #1 is a</span> -<span id="cb480-47"><a href="#cb480-47" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span> -<span id="cb480-48"><a href="#cb480-48" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span> -<span id="cb480-49"><a href="#cb480-49" aria-hidden="true" tabindex="-1"></a> ,</span> -<span id="cb480-50"><a href="#cb480-50" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{, and }<span class="co">%</span></span> -<span id="cb480-51"><a href="#cb480-51" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb480-52"><a href="#cb480-52" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb480-53"><a href="#cb480-53" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb480-54"><a href="#cb480-54" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{}</span> -<span id="cb480-55"><a href="#cb480-55" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionEnd</span>{}</span> -<span id="cb480-56"><a href="#cb480-56" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEnd</span>{.}</span> -<span id="cb480-57"><a href="#cb480-57" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb480-58"><a href="#cb480-58" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb480-59"><a href="#cb480-59" aria-hidden="true" tabindex="-1"></a>This is a loose definition list</span> -<span id="cb480-60"><a href="#cb480-60" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb480-61"><a href="#cb480-61" aria-hidden="true" tabindex="-1"></a>Coffee</span> -<span id="cb480-62"><a href="#cb480-62" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb480-63"><a href="#cb480-63" aria-hidden="true" tabindex="-1"></a>: black hot drink</span> -<span id="cb480-64"><a href="#cb480-64" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb480-65"><a href="#cb480-65" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span> -<span id="cb480-66"><a href="#cb480-66" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb480-67"><a href="#cb480-67" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span> -<span id="cb480-68"><a href="#cb480-68" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb480-69"><a href="#cb480-69" aria-hidden="true" tabindex="-1"></a>Milk</span> -<span id="cb480-70"><a href="#cb480-70" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb480-71"><a href="#cb480-71" aria-hidden="true" tabindex="-1"></a>: white cold drink</span> -<span id="cb480-72"><a href="#cb480-72" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb480-73"><a href="#cb480-73" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span> -<span id="cb480-74"><a href="#cb480-74" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb480-75"><a href="#cb480-75" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span> -<span id="cb480-76"><a href="#cb480-76" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb480-77"><a href="#cb480-77" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb480-78"><a href="#cb480-78" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb523"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb523-1"><a href="#cb523-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb523-2"><a href="#cb523-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionDefinitionLists</span>{true}</span> +<span id="cb523-3"><a href="#cb523-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTightLists</span>{true}</span> +<span id="cb523-4"><a href="#cb523-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb523-5"><a href="#cb523-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> +<span id="cb523-6"><a href="#cb523-6" aria-hidden="true" tabindex="-1"></a> :<span class="co">%</span></span> +<span id="cb523-7"><a href="#cb523-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> +<span id="cb523-8"><a href="#cb523-8" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb523-9"><a href="#cb523-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBeginTight</span>{<span class="co">%</span></span> +<span id="cb523-10"><a href="#cb523-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span> +<span id="cb523-11"><a href="#cb523-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\parindent</span>=0pt</span> +<span id="cb523-12"><a href="#cb523-12" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb523-13"><a href="#cb523-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span> +<span id="cb523-14"><a href="#cb523-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span>{<span class="fu">\bf</span>#1}<span class="co">%</span></span> +<span id="cb523-15"><a href="#cb523-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span> +<span id="cb523-16"><a href="#cb523-16" aria-hidden="true" tabindex="-1"></a> ,</span> +<span id="cb523-17"><a href="#cb523-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span> +<span id="cb523-18"><a href="#cb523-18" aria-hidden="true" tabindex="-1"></a> , and</span> +<span id="cb523-19"><a href="#cb523-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{.}<span class="co">%</span></span> +<span id="cb523-20"><a href="#cb523-20" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb523-21"><a href="#cb523-21" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb523-22"><a href="#cb523-22" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb523-23"><a href="#cb523-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{}</span> +<span id="cb523-24"><a href="#cb523-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="fu">\par</span>--<span class="fu">\kern</span> 0.5em}</span> +<span id="cb523-25"><a href="#cb523-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEndTight</span>{<span class="fu">\endgroup</span>}</span> +<span id="cb523-26"><a href="#cb523-26" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb523-27"><a href="#cb523-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb523-28"><a href="#cb523-28" aria-hidden="true" tabindex="-1"></a>This is a tight definition list</span> +<span id="cb523-29"><a href="#cb523-29" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb523-30"><a href="#cb523-30" aria-hidden="true" tabindex="-1"></a>Coffee</span> +<span id="cb523-31"><a href="#cb523-31" aria-hidden="true" tabindex="-1"></a>: black hot drink</span> +<span id="cb523-32"><a href="#cb523-32" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span> +<span id="cb523-33"><a href="#cb523-33" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span> +<span id="cb523-34"><a href="#cb523-34" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb523-35"><a href="#cb523-35" aria-hidden="true" tabindex="-1"></a>Milk</span> +<span id="cb523-36"><a href="#cb523-36" aria-hidden="true" tabindex="-1"></a>: white cold drink</span> +<span id="cb523-37"><a href="#cb523-37" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span> +<span id="cb523-38"><a href="#cb523-38" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span> +<span id="cb523-39"><a href="#cb523-39" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb523-40"><a href="#cb523-40" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb523-41"><a href="#cb523-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> +<span id="cb523-42"><a href="#cb523-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> +<span id="cb523-43"><a href="#cb523-43" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb523-44"><a href="#cb523-44" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBegin</span>{}</span> +<span id="cb523-45"><a href="#cb523-45" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span> +<span id="cb523-46"><a href="#cb523-46" aria-hidden="true" tabindex="-1"></a> . #1 is a</span> +<span id="cb523-47"><a href="#cb523-47" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span> +<span id="cb523-48"><a href="#cb523-48" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span> +<span id="cb523-49"><a href="#cb523-49" aria-hidden="true" tabindex="-1"></a> ,</span> +<span id="cb523-50"><a href="#cb523-50" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{, and }<span class="co">%</span></span> +<span id="cb523-51"><a href="#cb523-51" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb523-52"><a href="#cb523-52" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb523-53"><a href="#cb523-53" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb523-54"><a href="#cb523-54" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{}</span> +<span id="cb523-55"><a href="#cb523-55" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionEnd</span>{}</span> +<span id="cb523-56"><a href="#cb523-56" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEnd</span>{.}</span> +<span id="cb523-57"><a href="#cb523-57" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb523-58"><a href="#cb523-58" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb523-59"><a href="#cb523-59" aria-hidden="true" tabindex="-1"></a>This is a loose definition list</span> +<span id="cb523-60"><a href="#cb523-60" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb523-61"><a href="#cb523-61" aria-hidden="true" tabindex="-1"></a>Coffee</span> +<span id="cb523-62"><a href="#cb523-62" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb523-63"><a href="#cb523-63" aria-hidden="true" tabindex="-1"></a>: black hot drink</span> +<span id="cb523-64"><a href="#cb523-64" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb523-65"><a href="#cb523-65" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span> +<span id="cb523-66"><a href="#cb523-66" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb523-67"><a href="#cb523-67" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span> +<span id="cb523-68"><a href="#cb523-68" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb523-69"><a href="#cb523-69" aria-hidden="true" tabindex="-1"></a>Milk</span> +<span id="cb523-70"><a href="#cb523-70" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb523-71"><a href="#cb523-71" aria-hidden="true" tabindex="-1"></a>: white cold drink</span> +<span id="cb523-72"><a href="#cb523-72" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb523-73"><a href="#cb523-73" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span> +<span id="cb523-74"><a href="#cb523-74" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb523-75"><a href="#cb523-75" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span> +<span id="cb523-76"><a href="#cb523-76" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb523-77"><a href="#cb523-77" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb523-78"><a href="#cb523-78" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb481"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb481-1"><a href="#cb481-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb524"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb524-1"><a href="#cb524-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -8519,94 +9531,94 @@ prepared from roasted coffee beans, and one of the most traded agricultural commodities in the world. Milk is a white cold drink, nutrient-rich, and produced on an industrial scale.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-62"><span +<h5 class="unnumbered" id="latex-example-66"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb482"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb482-1"><a href="#cb482-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb482-2"><a href="#cb482-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[definitionLists, tightLists]{<span class="ex">markdown</span>}</span> -<span id="cb482-3"><a href="#cb482-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb482-4"><a href="#cb482-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb482-5"><a href="#cb482-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{</span> -<span id="cb482-6"><a href="#cb482-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb482-7"><a href="#cb482-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span> -<span id="cb482-8"><a href="#cb482-8" aria-hidden="true" tabindex="-1"></a> :<span class="co">%</span></span> -<span id="cb482-9"><a href="#cb482-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> -<span id="cb482-10"><a href="#cb482-10" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb482-11"><a href="#cb482-11" aria-hidden="true" tabindex="-1"></a> dlBeginTight = {<span class="kw">\begin</span>{<span class="ex">description</span>}},</span> -<span id="cb482-12"><a href="#cb482-12" aria-hidden="true" tabindex="-1"></a> dlItem = {<span class="co">%</span></span> -<span id="cb482-13"><a href="#cb482-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\item</span>[#1]</span> -<span id="cb482-14"><a href="#cb482-14" aria-hidden="true" tabindex="-1"></a> <span class="kw">\begin</span>{<span class="ex">itemize</span>}</span> -<span id="cb482-15"><a href="#cb482-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span> -<span id="cb482-16"><a href="#cb482-16" aria-hidden="true" tabindex="-1"></a> ,</span> -<span id="cb482-17"><a href="#cb482-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span> -<span id="cb482-18"><a href="#cb482-18" aria-hidden="true" tabindex="-1"></a> , and</span> -<span id="cb482-19"><a href="#cb482-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{.}<span class="co">%</span></span> -<span id="cb482-20"><a href="#cb482-20" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb482-21"><a href="#cb482-21" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb482-22"><a href="#cb482-22" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb482-23"><a href="#cb482-23" aria-hidden="true" tabindex="-1"></a> dlItemEnd = {<span class="kw">\end</span>{<span class="ex">itemize</span>}},</span> -<span id="cb482-24"><a href="#cb482-24" aria-hidden="true" tabindex="-1"></a> dlDefinitionBegin = <span class="fu">\item</span>,</span> -<span id="cb482-25"><a href="#cb482-25" aria-hidden="true" tabindex="-1"></a> dlEndTight = {<span class="kw">\end</span>{<span class="ex">description</span>}},</span> -<span id="cb482-26"><a href="#cb482-26" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb482-27"><a href="#cb482-27" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb482-28"><a href="#cb482-28" aria-hidden="true" tabindex="-1"></a>This is a tight definition list</span> -<span id="cb482-29"><a href="#cb482-29" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb482-30"><a href="#cb482-30" aria-hidden="true" tabindex="-1"></a>Coffee</span> -<span id="cb482-31"><a href="#cb482-31" aria-hidden="true" tabindex="-1"></a>: black hot drink</span> -<span id="cb482-32"><a href="#cb482-32" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span> -<span id="cb482-33"><a href="#cb482-33" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span> -<span id="cb482-34"><a href="#cb482-34" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb482-35"><a href="#cb482-35" aria-hidden="true" tabindex="-1"></a>Milk</span> -<span id="cb482-36"><a href="#cb482-36" aria-hidden="true" tabindex="-1"></a>: white cold drink</span> -<span id="cb482-37"><a href="#cb482-37" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span> -<span id="cb482-38"><a href="#cb482-38" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span> -<span id="cb482-39"><a href="#cb482-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb482-40"><a href="#cb482-40" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb482-41"><a href="#cb482-41" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{</span> -<span id="cb482-42"><a href="#cb482-42" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb482-43"><a href="#cb482-43" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span> -<span id="cb482-44"><a href="#cb482-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> -<span id="cb482-45"><a href="#cb482-45" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb482-46"><a href="#cb482-46" aria-hidden="true" tabindex="-1"></a> dlBegin = {},</span> -<span id="cb482-47"><a href="#cb482-47" aria-hidden="true" tabindex="-1"></a> dlItem = {<span class="co">%</span></span> -<span id="cb482-48"><a href="#cb482-48" aria-hidden="true" tabindex="-1"></a> . #1 is a</span> -<span id="cb482-49"><a href="#cb482-49" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span> -<span id="cb482-50"><a href="#cb482-50" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span> -<span id="cb482-51"><a href="#cb482-51" aria-hidden="true" tabindex="-1"></a> ,</span> -<span id="cb482-52"><a href="#cb482-52" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{, and }<span class="co">%</span></span> -<span id="cb482-53"><a href="#cb482-53" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb482-54"><a href="#cb482-54" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb482-55"><a href="#cb482-55" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb482-56"><a href="#cb482-56" aria-hidden="true" tabindex="-1"></a> dlItemEnd = {},</span> -<span id="cb482-57"><a href="#cb482-57" aria-hidden="true" tabindex="-1"></a> dlDefinitionEnd = {},</span> -<span id="cb482-58"><a href="#cb482-58" aria-hidden="true" tabindex="-1"></a> dlEnd = {.},</span> -<span id="cb482-59"><a href="#cb482-59" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb482-60"><a href="#cb482-60" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb482-61"><a href="#cb482-61" aria-hidden="true" tabindex="-1"></a>This is a loose definition list</span> -<span id="cb482-62"><a href="#cb482-62" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb482-63"><a href="#cb482-63" aria-hidden="true" tabindex="-1"></a>Coffee</span> -<span id="cb482-64"><a href="#cb482-64" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb482-65"><a href="#cb482-65" aria-hidden="true" tabindex="-1"></a>: black hot drink</span> -<span id="cb482-66"><a href="#cb482-66" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb482-67"><a href="#cb482-67" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span> -<span id="cb482-68"><a href="#cb482-68" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb482-69"><a href="#cb482-69" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span> -<span id="cb482-70"><a href="#cb482-70" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb482-71"><a href="#cb482-71" aria-hidden="true" tabindex="-1"></a>Milk</span> -<span id="cb482-72"><a href="#cb482-72" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb482-73"><a href="#cb482-73" aria-hidden="true" tabindex="-1"></a>: white cold drink</span> -<span id="cb482-74"><a href="#cb482-74" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb482-75"><a href="#cb482-75" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span> -<span id="cb482-76"><a href="#cb482-76" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb482-77"><a href="#cb482-77" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span> -<span id="cb482-78"><a href="#cb482-78" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb482-79"><a href="#cb482-79" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb482-80"><a href="#cb482-80" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb525"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb525-1"><a href="#cb525-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb525-2"><a href="#cb525-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[definitionLists, tightLists]{<span class="ex">markdown</span>}</span> +<span id="cb525-3"><a href="#cb525-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb525-4"><a href="#cb525-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb525-5"><a href="#cb525-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span> +<span id="cb525-6"><a href="#cb525-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb525-7"><a href="#cb525-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span> +<span id="cb525-8"><a href="#cb525-8" aria-hidden="true" tabindex="-1"></a> :<span class="co">%</span></span> +<span id="cb525-9"><a href="#cb525-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> +<span id="cb525-10"><a href="#cb525-10" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb525-11"><a href="#cb525-11" aria-hidden="true" tabindex="-1"></a> dlBeginTight = {<span class="kw">\begin</span>{<span class="ex">description</span>}},</span> +<span id="cb525-12"><a href="#cb525-12" aria-hidden="true" tabindex="-1"></a> dlItem = {<span class="co">%</span></span> +<span id="cb525-13"><a href="#cb525-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\item</span>[#1]</span> +<span id="cb525-14"><a href="#cb525-14" aria-hidden="true" tabindex="-1"></a> <span class="kw">\begin</span>{<span class="ex">itemize</span>}</span> +<span id="cb525-15"><a href="#cb525-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span> +<span id="cb525-16"><a href="#cb525-16" aria-hidden="true" tabindex="-1"></a> ,</span> +<span id="cb525-17"><a href="#cb525-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span> +<span id="cb525-18"><a href="#cb525-18" aria-hidden="true" tabindex="-1"></a> , and</span> +<span id="cb525-19"><a href="#cb525-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{.}<span class="co">%</span></span> +<span id="cb525-20"><a href="#cb525-20" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb525-21"><a href="#cb525-21" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb525-22"><a href="#cb525-22" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb525-23"><a href="#cb525-23" aria-hidden="true" tabindex="-1"></a> dlItemEnd = {<span class="kw">\end</span>{<span class="ex">itemize</span>}},</span> +<span id="cb525-24"><a href="#cb525-24" aria-hidden="true" tabindex="-1"></a> dlDefinitionBegin = <span class="fu">\item</span>,</span> +<span id="cb525-25"><a href="#cb525-25" aria-hidden="true" tabindex="-1"></a> dlEndTight = {<span class="kw">\end</span>{<span class="ex">description</span>}},</span> +<span id="cb525-26"><a href="#cb525-26" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb525-27"><a href="#cb525-27" aria-hidden="true" tabindex="-1"></a>]</span> +<span id="cb525-28"><a href="#cb525-28" aria-hidden="true" tabindex="-1"></a>This is a tight definition list</span> +<span id="cb525-29"><a href="#cb525-29" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb525-30"><a href="#cb525-30" aria-hidden="true" tabindex="-1"></a>Coffee</span> +<span id="cb525-31"><a href="#cb525-31" aria-hidden="true" tabindex="-1"></a>: black hot drink</span> +<span id="cb525-32"><a href="#cb525-32" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span> +<span id="cb525-33"><a href="#cb525-33" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span> +<span id="cb525-34"><a href="#cb525-34" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb525-35"><a href="#cb525-35" aria-hidden="true" tabindex="-1"></a>Milk</span> +<span id="cb525-36"><a href="#cb525-36" aria-hidden="true" tabindex="-1"></a>: white cold drink</span> +<span id="cb525-37"><a href="#cb525-37" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span> +<span id="cb525-38"><a href="#cb525-38" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span> +<span id="cb525-39"><a href="#cb525-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb525-40"><a href="#cb525-40" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb525-41"><a href="#cb525-41" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span> +<span id="cb525-42"><a href="#cb525-42" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb525-43"><a href="#cb525-43" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span> +<span id="cb525-44"><a href="#cb525-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> +<span id="cb525-45"><a href="#cb525-45" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb525-46"><a href="#cb525-46" aria-hidden="true" tabindex="-1"></a> dlBegin = {},</span> +<span id="cb525-47"><a href="#cb525-47" aria-hidden="true" tabindex="-1"></a> dlItem = {<span class="co">%</span></span> +<span id="cb525-48"><a href="#cb525-48" aria-hidden="true" tabindex="-1"></a> . #1 is a</span> +<span id="cb525-49"><a href="#cb525-49" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span> +<span id="cb525-50"><a href="#cb525-50" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span> +<span id="cb525-51"><a href="#cb525-51" aria-hidden="true" tabindex="-1"></a> ,</span> +<span id="cb525-52"><a href="#cb525-52" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{, and }<span class="co">%</span></span> +<span id="cb525-53"><a href="#cb525-53" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb525-54"><a href="#cb525-54" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb525-55"><a href="#cb525-55" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb525-56"><a href="#cb525-56" aria-hidden="true" tabindex="-1"></a> dlItemEnd = {},</span> +<span id="cb525-57"><a href="#cb525-57" aria-hidden="true" tabindex="-1"></a> dlDefinitionEnd = {},</span> +<span id="cb525-58"><a href="#cb525-58" aria-hidden="true" tabindex="-1"></a> dlEnd = {.},</span> +<span id="cb525-59"><a href="#cb525-59" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb525-60"><a href="#cb525-60" aria-hidden="true" tabindex="-1"></a>]</span> +<span id="cb525-61"><a href="#cb525-61" aria-hidden="true" tabindex="-1"></a>This is a loose definition list</span> +<span id="cb525-62"><a href="#cb525-62" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb525-63"><a href="#cb525-63" aria-hidden="true" tabindex="-1"></a>Coffee</span> +<span id="cb525-64"><a href="#cb525-64" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb525-65"><a href="#cb525-65" aria-hidden="true" tabindex="-1"></a>: black hot drink</span> +<span id="cb525-66"><a href="#cb525-66" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb525-67"><a href="#cb525-67" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span> +<span id="cb525-68"><a href="#cb525-68" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb525-69"><a href="#cb525-69" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span> +<span id="cb525-70"><a href="#cb525-70" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb525-71"><a href="#cb525-71" aria-hidden="true" tabindex="-1"></a>Milk</span> +<span id="cb525-72"><a href="#cb525-72" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb525-73"><a href="#cb525-73" aria-hidden="true" tabindex="-1"></a>: white cold drink</span> +<span id="cb525-74"><a href="#cb525-74" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb525-75"><a href="#cb525-75" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span> +<span id="cb525-76"><a href="#cb525-76" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb525-77"><a href="#cb525-77" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span> +<span id="cb525-78"><a href="#cb525-78" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb525-79"><a href="#cb525-79" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb525-80"><a href="#cb525-80" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb483"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb483-1"><a href="#cb483-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb526"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb526-1"><a href="#cb526-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -8628,94 +9640,94 @@ prepared from roasted coffee beans, and one of the most traded agricultural commodities in the world. Milk is a white cold drink, nutrient-rich, and produced on an industrial scale.</p> </blockquote> -<h5 class="unnumbered" id="context-example-40">Con<span +<h5 class="unnumbered" id="context-example-42">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb484"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb484-1"><a href="#cb484-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb484-2"><a href="#cb484-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span> -<span id="cb484-3"><a href="#cb484-3" aria-hidden="true" tabindex="-1"></a> [</span> -<span id="cb484-4"><a href="#cb484-4" aria-hidden="true" tabindex="-1"></a> definitionLists = yes,</span> -<span id="cb484-5"><a href="#cb484-5" aria-hidden="true" tabindex="-1"></a> tightLists = yes,</span> -<span id="cb484-6"><a href="#cb484-6" aria-hidden="true" tabindex="-1"></a> ]</span> -<span id="cb484-7"><a href="#cb484-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb484-8"><a href="#cb484-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb484-9"><a href="#cb484-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> -<span id="cb484-10"><a href="#cb484-10" aria-hidden="true" tabindex="-1"></a> :<span class="co">%</span></span> -<span id="cb484-11"><a href="#cb484-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> -<span id="cb484-12"><a href="#cb484-12" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb484-13"><a href="#cb484-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBeginTight</span>{}</span> -<span id="cb484-14"><a href="#cb484-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span> -<span id="cb484-15"><a href="#cb484-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span>{<span class="fu">\bf</span>#1}<span class="co">%</span></span> -<span id="cb484-16"><a href="#cb484-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\startitemize</span></span> -<span id="cb484-17"><a href="#cb484-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span> -<span id="cb484-18"><a href="#cb484-18" aria-hidden="true" tabindex="-1"></a> ,</span> -<span id="cb484-19"><a href="#cb484-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span> -<span id="cb484-20"><a href="#cb484-20" aria-hidden="true" tabindex="-1"></a> , and</span> -<span id="cb484-21"><a href="#cb484-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{.}<span class="co">%</span></span> -<span id="cb484-22"><a href="#cb484-22" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb484-23"><a href="#cb484-23" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb484-24"><a href="#cb484-24" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb484-25"><a href="#cb484-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{<span class="fu">\stopitemize</span>}</span> -<span id="cb484-26"><a href="#cb484-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="fu">\item</span>}</span> -<span id="cb484-27"><a href="#cb484-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEndTight</span>{}</span> -<span id="cb484-28"><a href="#cb484-28" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb484-29"><a href="#cb484-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb484-30"><a href="#cb484-30" aria-hidden="true" tabindex="-1"></a>This is a tight definition list</span> -<span id="cb484-31"><a href="#cb484-31" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb484-32"><a href="#cb484-32" aria-hidden="true" tabindex="-1"></a>Coffee</span> -<span id="cb484-33"><a href="#cb484-33" aria-hidden="true" tabindex="-1"></a>: black hot drink</span> -<span id="cb484-34"><a href="#cb484-34" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span> -<span id="cb484-35"><a href="#cb484-35" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span> -<span id="cb484-36"><a href="#cb484-36" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb484-37"><a href="#cb484-37" aria-hidden="true" tabindex="-1"></a>Milk</span> -<span id="cb484-38"><a href="#cb484-38" aria-hidden="true" tabindex="-1"></a>: white cold drink</span> -<span id="cb484-39"><a href="#cb484-39" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span> -<span id="cb484-40"><a href="#cb484-40" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span> -<span id="cb484-41"><a href="#cb484-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb484-42"><a href="#cb484-42" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb484-43"><a href="#cb484-43" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> -<span id="cb484-44"><a href="#cb484-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> -<span id="cb484-45"><a href="#cb484-45" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb484-46"><a href="#cb484-46" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBegin</span>{}</span> -<span id="cb484-47"><a href="#cb484-47" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span> -<span id="cb484-48"><a href="#cb484-48" aria-hidden="true" tabindex="-1"></a> . #1 is a</span> -<span id="cb484-49"><a href="#cb484-49" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span> -<span id="cb484-50"><a href="#cb484-50" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span> -<span id="cb484-51"><a href="#cb484-51" aria-hidden="true" tabindex="-1"></a> ,</span> -<span id="cb484-52"><a href="#cb484-52" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{, and }<span class="co">%</span></span> -<span id="cb484-53"><a href="#cb484-53" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb484-54"><a href="#cb484-54" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb484-55"><a href="#cb484-55" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb484-56"><a href="#cb484-56" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{}</span> -<span id="cb484-57"><a href="#cb484-57" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionEnd</span>{}</span> -<span id="cb484-58"><a href="#cb484-58" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEnd</span>{.}</span> -<span id="cb484-59"><a href="#cb484-59" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb484-60"><a href="#cb484-60" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb484-61"><a href="#cb484-61" aria-hidden="true" tabindex="-1"></a>This is a loose definition list</span> -<span id="cb484-62"><a href="#cb484-62" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb484-63"><a href="#cb484-63" aria-hidden="true" tabindex="-1"></a>Coffee</span> -<span id="cb484-64"><a href="#cb484-64" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb484-65"><a href="#cb484-65" aria-hidden="true" tabindex="-1"></a>: black hot drink</span> -<span id="cb484-66"><a href="#cb484-66" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb484-67"><a href="#cb484-67" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span> -<span id="cb484-68"><a href="#cb484-68" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb484-69"><a href="#cb484-69" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span> -<span id="cb484-70"><a href="#cb484-70" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb484-71"><a href="#cb484-71" aria-hidden="true" tabindex="-1"></a>Milk</span> -<span id="cb484-72"><a href="#cb484-72" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb484-73"><a href="#cb484-73" aria-hidden="true" tabindex="-1"></a>: white cold drink</span> -<span id="cb484-74"><a href="#cb484-74" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb484-75"><a href="#cb484-75" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span> -<span id="cb484-76"><a href="#cb484-76" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb484-77"><a href="#cb484-77" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span> -<span id="cb484-78"><a href="#cb484-78" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb484-79"><a href="#cb484-79" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb484-80"><a href="#cb484-80" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb527"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb527-1"><a href="#cb527-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb527-2"><a href="#cb527-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span> +<span id="cb527-3"><a href="#cb527-3" aria-hidden="true" tabindex="-1"></a> [</span> +<span id="cb527-4"><a href="#cb527-4" aria-hidden="true" tabindex="-1"></a> definitionLists = yes,</span> +<span id="cb527-5"><a href="#cb527-5" aria-hidden="true" tabindex="-1"></a> tightLists = yes,</span> +<span id="cb527-6"><a href="#cb527-6" aria-hidden="true" tabindex="-1"></a> ]</span> +<span id="cb527-7"><a href="#cb527-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb527-8"><a href="#cb527-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb527-9"><a href="#cb527-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> +<span id="cb527-10"><a href="#cb527-10" aria-hidden="true" tabindex="-1"></a> :<span class="co">%</span></span> +<span id="cb527-11"><a href="#cb527-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> +<span id="cb527-12"><a href="#cb527-12" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb527-13"><a href="#cb527-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBeginTight</span>{}</span> +<span id="cb527-14"><a href="#cb527-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span> +<span id="cb527-15"><a href="#cb527-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span>{<span class="fu">\bf</span>#1}<span class="co">%</span></span> +<span id="cb527-16"><a href="#cb527-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\startitemize</span></span> +<span id="cb527-17"><a href="#cb527-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span> +<span id="cb527-18"><a href="#cb527-18" aria-hidden="true" tabindex="-1"></a> ,</span> +<span id="cb527-19"><a href="#cb527-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span> +<span id="cb527-20"><a href="#cb527-20" aria-hidden="true" tabindex="-1"></a> , and</span> +<span id="cb527-21"><a href="#cb527-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{.}<span class="co">%</span></span> +<span id="cb527-22"><a href="#cb527-22" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb527-23"><a href="#cb527-23" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb527-24"><a href="#cb527-24" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb527-25"><a href="#cb527-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{<span class="fu">\stopitemize</span>}</span> +<span id="cb527-26"><a href="#cb527-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="fu">\item</span>}</span> +<span id="cb527-27"><a href="#cb527-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEndTight</span>{}</span> +<span id="cb527-28"><a href="#cb527-28" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb527-29"><a href="#cb527-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb527-30"><a href="#cb527-30" aria-hidden="true" tabindex="-1"></a>This is a tight definition list</span> +<span id="cb527-31"><a href="#cb527-31" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb527-32"><a href="#cb527-32" aria-hidden="true" tabindex="-1"></a>Coffee</span> +<span id="cb527-33"><a href="#cb527-33" aria-hidden="true" tabindex="-1"></a>: black hot drink</span> +<span id="cb527-34"><a href="#cb527-34" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span> +<span id="cb527-35"><a href="#cb527-35" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span> +<span id="cb527-36"><a href="#cb527-36" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb527-37"><a href="#cb527-37" aria-hidden="true" tabindex="-1"></a>Milk</span> +<span id="cb527-38"><a href="#cb527-38" aria-hidden="true" tabindex="-1"></a>: white cold drink</span> +<span id="cb527-39"><a href="#cb527-39" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span> +<span id="cb527-40"><a href="#cb527-40" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span> +<span id="cb527-41"><a href="#cb527-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb527-42"><a href="#cb527-42" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb527-43"><a href="#cb527-43" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> +<span id="cb527-44"><a href="#cb527-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> +<span id="cb527-45"><a href="#cb527-45" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb527-46"><a href="#cb527-46" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBegin</span>{}</span> +<span id="cb527-47"><a href="#cb527-47" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span> +<span id="cb527-48"><a href="#cb527-48" aria-hidden="true" tabindex="-1"></a> . #1 is a</span> +<span id="cb527-49"><a href="#cb527-49" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span> +<span id="cb527-50"><a href="#cb527-50" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span> +<span id="cb527-51"><a href="#cb527-51" aria-hidden="true" tabindex="-1"></a> ,</span> +<span id="cb527-52"><a href="#cb527-52" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{, and }<span class="co">%</span></span> +<span id="cb527-53"><a href="#cb527-53" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb527-54"><a href="#cb527-54" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb527-55"><a href="#cb527-55" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb527-56"><a href="#cb527-56" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{}</span> +<span id="cb527-57"><a href="#cb527-57" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionEnd</span>{}</span> +<span id="cb527-58"><a href="#cb527-58" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEnd</span>{.}</span> +<span id="cb527-59"><a href="#cb527-59" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb527-60"><a href="#cb527-60" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb527-61"><a href="#cb527-61" aria-hidden="true" tabindex="-1"></a>This is a loose definition list</span> +<span id="cb527-62"><a href="#cb527-62" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb527-63"><a href="#cb527-63" aria-hidden="true" tabindex="-1"></a>Coffee</span> +<span id="cb527-64"><a href="#cb527-64" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb527-65"><a href="#cb527-65" aria-hidden="true" tabindex="-1"></a>: black hot drink</span> +<span id="cb527-66"><a href="#cb527-66" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb527-67"><a href="#cb527-67" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span> +<span id="cb527-68"><a href="#cb527-68" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb527-69"><a href="#cb527-69" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span> +<span id="cb527-70"><a href="#cb527-70" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb527-71"><a href="#cb527-71" aria-hidden="true" tabindex="-1"></a>Milk</span> +<span id="cb527-72"><a href="#cb527-72" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb527-73"><a href="#cb527-73" aria-hidden="true" tabindex="-1"></a>: white cold drink</span> +<span id="cb527-74"><a href="#cb527-74" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb527-75"><a href="#cb527-75" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span> +<span id="cb527-76"><a href="#cb527-76" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb527-77"><a href="#cb527-77" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span> +<span id="cb527-78"><a href="#cb527-78" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb527-79"><a href="#cb527-79" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb527-80"><a href="#cb527-80" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb485"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb485-1"><a href="#cb485-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb528"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb528-1"><a href="#cb528-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -8737,73 +9749,73 @@ prepared from roasted coffee beans, and one of the most traded agricultural commodities in the world. Milk is a white cold drink, nutrient-rich, and produced on an industrial scale.</p> </blockquote> -<h4 data-number="2.3.1.10" id="ellipsis-renderer"><span -class="header-section-number">2.3.1.10</span> Ellipsis Renderer</h4> +<h4 data-number="2.3.1.11" id="ellipsis-renderer"><span +class="header-section-number">2.3.1.11</span> Ellipsis Renderer</h4> <p>The <code>\markdownRendererEllipsis</code> macro replaces any occurance of ASCII ellipses in the input text. This macro will only be produced, when the <strong><code>smartEllipses</code></strong> option is enabled. The macro receives no arguments.</p> -<h5 class="unnumbered" id="plain-tex-example-27">Plain <span +<h5 class="unnumbered" id="plain-tex-example-30">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb486"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb486-1"><a href="#cb486-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb486-2"><a href="#cb486-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSmartEllipses</span>{true}</span> -<span id="cb486-3"><a href="#cb486-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{{<span class="fu">\it</span> SHAZAM}!}</span> -<span id="cb486-4"><a href="#cb486-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb486-5"><a href="#cb486-5" aria-hidden="true" tabindex="-1"></a>The secret word is ...</span> -<span id="cb486-6"><a href="#cb486-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb486-7"><a href="#cb486-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb529"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb529-1"><a href="#cb529-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb529-2"><a href="#cb529-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSmartEllipses</span>{true}</span> +<span id="cb529-3"><a href="#cb529-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{{<span class="fu">\it</span> SHAZAM}!}</span> +<span id="cb529-4"><a href="#cb529-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb529-5"><a href="#cb529-5" aria-hidden="true" tabindex="-1"></a>The secret word is ...</span> +<span id="cb529-6"><a href="#cb529-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb529-7"><a href="#cb529-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb487"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb487-1"><a href="#cb487-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb530"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb530-1"><a href="#cb530-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>The secret word is <em>SHAZAM</em>!</p> </blockquote> -<h5 class="unnumbered" id="latex-example-63"><span +<h5 class="unnumbered" id="latex-example-67"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb488"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb488-1"><a href="#cb488-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb488-2"><a href="#cb488-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[smartEllipses]{<span class="ex">markdown</span>}</span> -<span id="cb488-3"><a href="#cb488-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb488-4"><a href="#cb488-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb488-5"><a href="#cb488-5" aria-hidden="true" tabindex="-1"></a> ellipsis = <span class="fu">\emph</span>{SHAZAM}!,</span> -<span id="cb488-6"><a href="#cb488-6" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb488-7"><a href="#cb488-7" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb488-8"><a href="#cb488-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb488-9"><a href="#cb488-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb488-10"><a href="#cb488-10" aria-hidden="true" tabindex="-1"></a>The secret word is ...</span> -<span id="cb488-11"><a href="#cb488-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb488-12"><a href="#cb488-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb531"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb531-1"><a href="#cb531-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb531-2"><a href="#cb531-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[smartEllipses]{<span class="ex">markdown</span>}</span> +<span id="cb531-3"><a href="#cb531-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb531-4"><a href="#cb531-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb531-5"><a href="#cb531-5" aria-hidden="true" tabindex="-1"></a> ellipsis = <span class="fu">\emph</span>{SHAZAM}!,</span> +<span id="cb531-6"><a href="#cb531-6" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb531-7"><a href="#cb531-7" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb531-8"><a href="#cb531-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb531-9"><a href="#cb531-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb531-10"><a href="#cb531-10" aria-hidden="true" tabindex="-1"></a>The secret word is ...</span> +<span id="cb531-11"><a href="#cb531-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb531-12"><a href="#cb531-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb489"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb489-1"><a href="#cb489-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb532"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb532-1"><a href="#cb532-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>The secret word is <em>SHAZAM</em>!</p> </blockquote> -<h5 class="unnumbered" id="context-example-41">Con<span +<h5 class="unnumbered" id="context-example-43">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb490"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb490-1"><a href="#cb490-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb490-2"><a href="#cb490-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[smartEllipses = yes]</span> -<span id="cb490-3"><a href="#cb490-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{<span class="fu">\emph</span>{SHAZAM}!}</span> -<span id="cb490-4"><a href="#cb490-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb490-5"><a href="#cb490-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb490-6"><a href="#cb490-6" aria-hidden="true" tabindex="-1"></a>The secret word is ...</span> -<span id="cb490-7"><a href="#cb490-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb490-8"><a href="#cb490-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb533"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb533-1"><a href="#cb533-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb533-2"><a href="#cb533-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[smartEllipses = yes]</span> +<span id="cb533-3"><a href="#cb533-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{<span class="fu">\emph</span>{SHAZAM}!}</span> +<span id="cb533-4"><a href="#cb533-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb533-5"><a href="#cb533-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb533-6"><a href="#cb533-6" aria-hidden="true" tabindex="-1"></a>The secret word is ...</span> +<span id="cb533-7"><a href="#cb533-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb533-8"><a href="#cb533-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb491"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb491-1"><a href="#cb491-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb534"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb534-1"><a href="#cb534-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -8811,93 +9823,93 @@ contain the following text:</p> <p><em>(The end of a block)</em></p> <p><em>Foo</em> bar!</p> </blockquote> -<h4 data-number="2.3.1.11" id="emphasis-renderers"><span -class="header-section-number">2.3.1.11</span> Emphasis Renderers</h4> +<h4 data-number="2.3.1.12" id="emphasis-renderers"><span +class="header-section-number">2.3.1.12</span> Emphasis Renderers</h4> <p>The <code>\markdownRendererEmphasis</code> macro represents an emphasized span of text. The macro receives a single argument that corresponds to the emphasized span of text.</p> -<h5 class="unnumbered" id="plain-tex-example-28">Plain <span +<p>The <code>\markdownRendererStrongEmphasis</code> macro represents a +strongly emphasized span of text. The macro receives a single argument +that corresponds to the emphasized span of text.</p> +<h5 class="unnumbered" id="plain-tex-example-31">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb492"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb492-1"><a href="#cb492-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb492-2"><a href="#cb492-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEmphasis</span>#1{{<span class="fu">\it</span>#1}}</span> -<span id="cb492-3"><a href="#cb492-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrongEmphasis</span>#1{{<span class="fu">\bf</span>#1}}</span> -<span id="cb492-4"><a href="#cb492-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb492-5"><a href="#cb492-5" aria-hidden="true" tabindex="-1"></a>This is *emphasis*.</span> -<span id="cb492-6"><a href="#cb492-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb492-7"><a href="#cb492-7" aria-hidden="true" tabindex="-1"></a>This is **strong emphasis**.</span> -<span id="cb492-8"><a href="#cb492-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb492-9"><a href="#cb492-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb535"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb535-1"><a href="#cb535-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb535-2"><a href="#cb535-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEmphasis</span>#1{{<span class="fu">\it</span>#1}}</span> +<span id="cb535-3"><a href="#cb535-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrongEmphasis</span>#1{{<span class="fu">\bf</span>#1}}</span> +<span id="cb535-4"><a href="#cb535-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb535-5"><a href="#cb535-5" aria-hidden="true" tabindex="-1"></a>This is *emphasis*.</span> +<span id="cb535-6"><a href="#cb535-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb535-7"><a href="#cb535-7" aria-hidden="true" tabindex="-1"></a>This is **strong emphasis**.</span> +<span id="cb535-8"><a href="#cb535-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb535-9"><a href="#cb535-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb493"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb493-1"><a href="#cb493-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb536"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb536-1"><a href="#cb536-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>This is <em>emphasis</em>.</p> <p>This is <strong>strong emphasis</strong>.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-64"><span +<h5 class="unnumbered" id="latex-example-68"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb494"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb494-1"><a href="#cb494-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb494-2"><a href="#cb494-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb494-3"><a href="#cb494-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb494-4"><a href="#cb494-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb494-5"><a href="#cb494-5" aria-hidden="true" tabindex="-1"></a> emphasis = {<span class="fu">\emph</span>{#1}},</span> -<span id="cb494-6"><a href="#cb494-6" aria-hidden="true" tabindex="-1"></a> strongEmphasis = {<span class="fu">\textbf</span>{#1}},</span> -<span id="cb494-7"><a href="#cb494-7" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb494-8"><a href="#cb494-8" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb494-9"><a href="#cb494-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb494-10"><a href="#cb494-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb494-11"><a href="#cb494-11" aria-hidden="true" tabindex="-1"></a>This is *emphasis*.</span> -<span id="cb494-12"><a href="#cb494-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb494-13"><a href="#cb494-13" aria-hidden="true" tabindex="-1"></a>This is **strong emphasis**.</span> -<span id="cb494-14"><a href="#cb494-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb494-15"><a href="#cb494-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb537"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb537-1"><a href="#cb537-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb537-2"><a href="#cb537-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb537-3"><a href="#cb537-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb537-4"><a href="#cb537-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb537-5"><a href="#cb537-5" aria-hidden="true" tabindex="-1"></a> emphasis = {<span class="fu">\emph</span>{#1}},</span> +<span id="cb537-6"><a href="#cb537-6" aria-hidden="true" tabindex="-1"></a> strongEmphasis = {<span class="fu">\textbf</span>{#1}},</span> +<span id="cb537-7"><a href="#cb537-7" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb537-8"><a href="#cb537-8" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb537-9"><a href="#cb537-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb537-10"><a href="#cb537-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb537-11"><a href="#cb537-11" aria-hidden="true" tabindex="-1"></a>This is *emphasis*.</span> +<span id="cb537-12"><a href="#cb537-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb537-13"><a href="#cb537-13" aria-hidden="true" tabindex="-1"></a>This is **strong emphasis**.</span> +<span id="cb537-14"><a href="#cb537-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb537-15"><a href="#cb537-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb495"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb495-1"><a href="#cb495-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb538"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb538-1"><a href="#cb538-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>This is <em>emphasis</em>.</p> <p>This is <strong>strong emphasis</strong>.</p> </blockquote> -<h5 class="unnumbered" id="context-example-42">Con<span +<h5 class="unnumbered" id="context-example-44">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb496"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb496-1"><a href="#cb496-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb496-2"><a href="#cb496-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEmphasis</span>#1{<span class="fu">\emph</span>{#1}}</span> -<span id="cb496-3"><a href="#cb496-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrongEmphasis</span>#1{<span class="fu">\bold</span>{#1}}</span> -<span id="cb496-4"><a href="#cb496-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb496-5"><a href="#cb496-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb496-6"><a href="#cb496-6" aria-hidden="true" tabindex="-1"></a>This is *emphasis*.</span> -<span id="cb496-7"><a href="#cb496-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb496-8"><a href="#cb496-8" aria-hidden="true" tabindex="-1"></a>This is **strong emphasis**.</span> -<span id="cb496-9"><a href="#cb496-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb496-10"><a href="#cb496-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb539"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb539-1"><a href="#cb539-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb539-2"><a href="#cb539-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEmphasis</span>#1{<span class="fu">\emph</span>{#1}}</span> +<span id="cb539-3"><a href="#cb539-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrongEmphasis</span>#1{<span class="fu">\bold</span>{#1}}</span> +<span id="cb539-4"><a href="#cb539-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb539-5"><a href="#cb539-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb539-6"><a href="#cb539-6" aria-hidden="true" tabindex="-1"></a>This is *emphasis*.</span> +<span id="cb539-7"><a href="#cb539-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb539-8"><a href="#cb539-8" aria-hidden="true" tabindex="-1"></a>This is **strong emphasis**.</span> +<span id="cb539-9"><a href="#cb539-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb539-10"><a href="#cb539-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb497"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb497-1"><a href="#cb497-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb540"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb540-1"><a href="#cb540-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>This is <em>emphasis</em>.</p> <p>This is <strong>strong emphasis</strong>.</p> </blockquote> -<p>The <code>\markdownRendererStrongEmphasis</code> macro represents a -strongly emphasized span of text. The macro receives a single argument -that corresponds to the emphasized span of text.</p> -<h4 data-number="2.3.1.12" +<h4 data-number="2.3.1.13" id="fenced-code-attribute-context-renderers"><span -class="header-section-number">2.3.1.12</span> Fenced Code Attribute +class="header-section-number">2.3.1.13</span> Fenced Code Attribute Context Renderers</h4> <p>The following macros are only produced, when the <strong><code>fencedCode</code></strong> option is enabled.</p> @@ -8905,107 +9917,109 @@ Context Renderers</h4> <code>\markdownRendererFencedCodeAttributeContextEnd</code> macros represent the beginning and the end of a context in which the attributes of a fenced code apply. The macros receive no arguments.</p> -<h5 class="unnumbered" id="latex-example-65"><span +<h5 class="unnumbered" id="latex-example-69"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb498"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb498-1"><a href="#cb498-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb498-2"><a href="#cb498-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode,</span> -<span id="cb498-3"><a href="#cb498-3" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributes]{<span class="ex">markdown</span>}</span> -<span id="cb498-4"><a href="#cb498-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span> -<span id="cb498-5"><a href="#cb498-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb498-6"><a href="#cb498-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb498-7"><a href="#cb498-7" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextBegin = {<span class="co">%</span></span> -<span id="cb498-8"><a href="#cb498-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span> -<span id="cb498-9"><a href="#cb498-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span> -<span id="cb498-10"><a href="#cb498-10" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb498-11"><a href="#cb498-11" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {<span class="co">%</span></span> -<span id="cb498-12"><a href="#cb498-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\setminted</span>{{#1} = {#2}}<span class="co">%</span></span> -<span id="cb498-13"><a href="#cb498-13" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb498-14"><a href="#cb498-14" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb498-15"><a href="#cb498-15" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> -<span id="cb498-16"><a href="#cb498-16" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb498-17"><a href="#cb498-17" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextEnd = {<span class="co">%</span></span> -<span id="cb498-18"><a href="#cb498-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span> -<span id="cb498-19"><a href="#cb498-19" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb498-20"><a href="#cb498-20" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb498-21"><a href="#cb498-21" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb498-22"><a href="#cb498-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb498-23"><a href="#cb498-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb498-24"><a href="#cb498-24" aria-hidden="true" tabindex="-1"></a>~~~ js {linenos=true}</span> -<span id="cb498-25"><a href="#cb498-25" aria-hidden="true" tabindex="-1"></a>if (a > 3) {</span> -<span id="cb498-26"><a href="#cb498-26" aria-hidden="true" tabindex="-1"></a> moveShip(5 * gravity, DOWN);</span> -<span id="cb498-27"><a href="#cb498-27" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb498-28"><a href="#cb498-28" aria-hidden="true" tabindex="-1"></a>~~~~~~</span> -<span id="cb498-29"><a href="#cb498-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb498-30"><a href="#cb498-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb541"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb541-1"><a href="#cb541-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb541-2"><a href="#cb541-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode,</span> +<span id="cb541-3"><a href="#cb541-3" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributes]{<span class="ex">markdown</span>}</span> +<span id="cb541-4"><a href="#cb541-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span> +<span id="cb541-5"><a href="#cb541-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb541-6"><a href="#cb541-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb541-7"><a href="#cb541-7" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextBegin = {<span class="co">%</span></span> +<span id="cb541-8"><a href="#cb541-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span> +<span id="cb541-9"><a href="#cb541-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span> +<span id="cb541-10"><a href="#cb541-10" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb541-11"><a href="#cb541-11" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {<span class="co">%</span></span> +<span id="cb541-12"><a href="#cb541-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\setminted</span>{{#1} = {#2}}<span class="co">%</span></span> +<span id="cb541-13"><a href="#cb541-13" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb541-14"><a href="#cb541-14" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb541-15"><a href="#cb541-15" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span> +<span id="cb541-16"><a href="#cb541-16" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb541-17"><a href="#cb541-17" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextEnd = {<span class="co">%</span></span> +<span id="cb541-18"><a href="#cb541-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span> +<span id="cb541-19"><a href="#cb541-19" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb541-20"><a href="#cb541-20" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb541-21"><a href="#cb541-21" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb541-22"><a href="#cb541-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb541-23"><a href="#cb541-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb541-24"><a href="#cb541-24" aria-hidden="true" tabindex="-1"></a>~~~ js {linenos=true}</span> +<span id="cb541-25"><a href="#cb541-25" aria-hidden="true" tabindex="-1"></a>if (a > 3) {</span> +<span id="cb541-26"><a href="#cb541-26" aria-hidden="true" tabindex="-1"></a> moveShip(5 * gravity, DOWN);</span> +<span id="cb541-27"><a href="#cb541-27" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb541-28"><a href="#cb541-28" aria-hidden="true" tabindex="-1"></a>~~~~~~</span> +<span id="cb541-29"><a href="#cb541-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb541-30"><a href="#cb541-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb499"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb499-1"><a href="#cb499-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb542"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb542-1"><a href="#cb542-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> -<p>``` js {.linenos} 1. if (a > 3) { 2. moveShip(5 * gravity, DOWN); -3. } ``````</p> +<div class="sourceCode" id="cb543"><pre +class="sourceCode js linenos"><code class="sourceCode javascript"><span id="cb543-1"><a href="#cb543-1" aria-hidden="true" tabindex="-1"></a><span class="fl">1.</span> <span class="cf">if</span> (a <span class="op">></span> <span class="dv">3</span>) {</span> +<span id="cb543-2"><a href="#cb543-2" aria-hidden="true" tabindex="-1"></a><span class="fl">2.</span> <span class="fu">moveShip</span>(<span class="dv">5</span> <span class="op">*</span> gravity<span class="op">,</span> DOWN)<span class="op">;</span></span> +<span id="cb543-3"><a href="#cb543-3" aria-hidden="true" tabindex="-1"></a><span class="fl">3.</span> }</span></code></pre></div> </blockquote> -<h4 data-number="2.3.1.13" +<h4 data-number="2.3.1.14" id="fenced-div-attribute-context-renderers"><span -class="header-section-number">2.3.1.13</span> Fenced Div Attribute +class="header-section-number">2.3.1.14</span> Fenced Div Attribute Context Renderers</h4> <p>The following macros are only produced, when the <strong><code>fencedDiv</code></strong> option is enabled.</p> <p>The <code>\markdownRendererFencedDivAttributeContextBegin</code> and <code>\markdownRendererFencedDivAttributeContextEnd</code> macros -represent the beginning and the end of a div in which the attributes of -the div apply. The macros receive no arguments.</p> -<h5 class="unnumbered" id="latex-example-66"><span +represent the beginning and the end of a context in which the attributes +of a div apply. The macros receive no arguments.</p> +<h5 class="unnumbered" id="latex-example-70"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb500"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb500-1"><a href="#cb500-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb500-2"><a href="#cb500-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedDivs]{<span class="ex">markdown</span>}</span> -<span id="cb500-3"><a href="#cb500-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb500-4"><a href="#cb500-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb500-5"><a href="#cb500-5" aria-hidden="true" tabindex="-1"></a> fencedDivAttributeContextBegin = {<span class="co">%</span></span> -<span id="cb500-6"><a href="#cb500-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb500-7"><a href="#cb500-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a fenced div attribute context)}</span> -<span id="cb500-8"><a href="#cb500-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb500-9"><a href="#cb500-9" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb500-10"><a href="#cb500-10" aria-hidden="true" tabindex="-1"></a> fencedDivAttributeContextEnd = {<span class="co">%</span></span> -<span id="cb500-11"><a href="#cb500-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb500-12"><a href="#cb500-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a fenced div attribute context)}</span> -<span id="cb500-13"><a href="#cb500-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb500-14"><a href="#cb500-14" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb500-15"><a href="#cb500-15" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb500-16"><a href="#cb500-16" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb500-17"><a href="#cb500-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb500-18"><a href="#cb500-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb500-19"><a href="#cb500-19" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb500-20"><a href="#cb500-20" aria-hidden="true" tabindex="-1"></a>::: {key=value}</span> -<span id="cb500-21"><a href="#cb500-21" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb500-22"><a href="#cb500-22" aria-hidden="true" tabindex="-1"></a>foo</span> -<span id="cb500-23"><a href="#cb500-23" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb500-24"><a href="#cb500-24" aria-hidden="true" tabindex="-1"></a>:::: {#identifier}</span> -<span id="cb500-25"><a href="#cb500-25" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb500-26"><a href="#cb500-26" aria-hidden="true" tabindex="-1"></a>bar</span> -<span id="cb500-27"><a href="#cb500-27" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb500-28"><a href="#cb500-28" aria-hidden="true" tabindex="-1"></a>::::</span> -<span id="cb500-29"><a href="#cb500-29" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb500-30"><a href="#cb500-30" aria-hidden="true" tabindex="-1"></a>:::</span> -<span id="cb500-31"><a href="#cb500-31" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb500-32"><a href="#cb500-32" aria-hidden="true" tabindex="-1"></a>::: {.class_name}</span> -<span id="cb500-33"><a href="#cb500-33" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb500-34"><a href="#cb500-34" aria-hidden="true" tabindex="-1"></a>baz</span> -<span id="cb500-35"><a href="#cb500-35" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb500-36"><a href="#cb500-36" aria-hidden="true" tabindex="-1"></a>:::</span> -<span id="cb500-37"><a href="#cb500-37" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb500-38"><a href="#cb500-38" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb500-39"><a href="#cb500-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb544"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb544-1"><a href="#cb544-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb544-2"><a href="#cb544-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedDivs]{<span class="ex">markdown</span>}</span> +<span id="cb544-3"><a href="#cb544-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb544-4"><a href="#cb544-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb544-5"><a href="#cb544-5" aria-hidden="true" tabindex="-1"></a> fencedDivAttributeContextBegin = {<span class="co">%</span></span> +<span id="cb544-6"><a href="#cb544-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb544-7"><a href="#cb544-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a fenced div attribute context)}</span> +<span id="cb544-8"><a href="#cb544-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb544-9"><a href="#cb544-9" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb544-10"><a href="#cb544-10" aria-hidden="true" tabindex="-1"></a> fencedDivAttributeContextEnd = {<span class="co">%</span></span> +<span id="cb544-11"><a href="#cb544-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb544-12"><a href="#cb544-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a fenced div attribute context)}</span> +<span id="cb544-13"><a href="#cb544-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb544-14"><a href="#cb544-14" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb544-15"><a href="#cb544-15" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb544-16"><a href="#cb544-16" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb544-17"><a href="#cb544-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb544-18"><a href="#cb544-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb544-19"><a href="#cb544-19" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb544-20"><a href="#cb544-20" aria-hidden="true" tabindex="-1"></a>::: {key=value}</span> +<span id="cb544-21"><a href="#cb544-21" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb544-22"><a href="#cb544-22" aria-hidden="true" tabindex="-1"></a>foo</span> +<span id="cb544-23"><a href="#cb544-23" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb544-24"><a href="#cb544-24" aria-hidden="true" tabindex="-1"></a>:::: {#identifier}</span> +<span id="cb544-25"><a href="#cb544-25" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb544-26"><a href="#cb544-26" aria-hidden="true" tabindex="-1"></a>bar</span> +<span id="cb544-27"><a href="#cb544-27" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb544-28"><a href="#cb544-28" aria-hidden="true" tabindex="-1"></a>::::</span> +<span id="cb544-29"><a href="#cb544-29" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb544-30"><a href="#cb544-30" aria-hidden="true" tabindex="-1"></a>:::</span> +<span id="cb544-31"><a href="#cb544-31" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb544-32"><a href="#cb544-32" aria-hidden="true" tabindex="-1"></a>::: {.class_name}</span> +<span id="cb544-33"><a href="#cb544-33" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb544-34"><a href="#cb544-34" aria-hidden="true" tabindex="-1"></a>baz</span> +<span id="cb544-35"><a href="#cb544-35" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb544-36"><a href="#cb544-36" aria-hidden="true" tabindex="-1"></a>:::</span> +<span id="cb544-37"><a href="#cb544-37" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb544-38"><a href="#cb544-38" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb544-39"><a href="#cb544-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb501"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb501-1"><a href="#cb501-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb545"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb545-1"><a href="#cb545-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -9019,50 +10033,52 @@ contain the following text:</p> <p>baz</p> <p><em>(The end of a fenced div attribute context)</em></p> </blockquote> -<h4 data-number="2.3.1.14" id="header-attribute-context-renderers"><span -class="header-section-number">2.3.1.14</span> Header Attribute Context +<h4 data-number="2.3.1.15" id="header-attribute-context-renderers"><span +class="header-section-number">2.3.1.15</span> Header Attribute Context Renderers</h4> <p>The following macros are only produced, when the -<strong><code>headerAttributes</code></strong> option is enabled.</p> +<strong><code>autoIdentifiers</code></strong>, +<strong><code>gfmAutoIdentifiers</code></strong>, or +<strong><code>headerAttributes</code></strong> options are enabled.</p> <p>The <code>\markdownRendererHeaderAttributeContextBegin</code> and <code>\markdownRendererHeaderAttributeContextEnd</code> macros represent -the beginning and the end of a section in which the attributes of a +the beginning and the end of a context in which the attributes of a heading apply. The macros receive no arguments.</p> -<h5 class="unnumbered" id="latex-example-67"><span +<h5 class="unnumbered" id="latex-example-71"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb502"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb502-1"><a href="#cb502-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb502-2"><a href="#cb502-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes]{<span class="ex">markdown</span>}</span> -<span id="cb502-3"><a href="#cb502-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb502-4"><a href="#cb502-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb502-5"><a href="#cb502-5" aria-hidden="true" tabindex="-1"></a> headerAttributeContextBegin = {<span class="co">%</span></span> -<span id="cb502-6"><a href="#cb502-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb502-7"><a href="#cb502-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a header attribute context)}</span> -<span id="cb502-8"><a href="#cb502-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb502-9"><a href="#cb502-9" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb502-10"><a href="#cb502-10" aria-hidden="true" tabindex="-1"></a> headerAttributeContextEnd = {<span class="co">%</span></span> -<span id="cb502-11"><a href="#cb502-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb502-12"><a href="#cb502-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a header attribute context)}</span> -<span id="cb502-13"><a href="#cb502-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb502-14"><a href="#cb502-14" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb502-15"><a href="#cb502-15" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb502-16"><a href="#cb502-16" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb502-17"><a href="#cb502-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb502-18"><a href="#cb502-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb502-19"><a href="#cb502-19" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb502-20"><a href="#cb502-20" aria-hidden="true" tabindex="-1"></a># First top-level heading</span> -<span id="cb502-21"><a href="#cb502-21" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb502-22"><a href="#cb502-22" aria-hidden="true" tabindex="-1"></a>## A subheading {#identifier}</span> -<span id="cb502-23"><a href="#cb502-23" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb502-24"><a href="#cb502-24" aria-hidden="true" tabindex="-1"></a># Second top-level heading {.class_name}</span> -<span id="cb502-25"><a href="#cb502-25" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb502-26"><a href="#cb502-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb502-27"><a href="#cb502-27" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb546"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb546-1"><a href="#cb546-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb546-2"><a href="#cb546-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes]{<span class="ex">markdown</span>}</span> +<span id="cb546-3"><a href="#cb546-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb546-4"><a href="#cb546-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb546-5"><a href="#cb546-5" aria-hidden="true" tabindex="-1"></a> headerAttributeContextBegin = {<span class="co">%</span></span> +<span id="cb546-6"><a href="#cb546-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb546-7"><a href="#cb546-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a header attribute context)}</span> +<span id="cb546-8"><a href="#cb546-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb546-9"><a href="#cb546-9" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb546-10"><a href="#cb546-10" aria-hidden="true" tabindex="-1"></a> headerAttributeContextEnd = {<span class="co">%</span></span> +<span id="cb546-11"><a href="#cb546-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb546-12"><a href="#cb546-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a header attribute context)}</span> +<span id="cb546-13"><a href="#cb546-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb546-14"><a href="#cb546-14" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb546-15"><a href="#cb546-15" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb546-16"><a href="#cb546-16" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb546-17"><a href="#cb546-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb546-18"><a href="#cb546-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb546-19"><a href="#cb546-19" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb546-20"><a href="#cb546-20" aria-hidden="true" tabindex="-1"></a># First top-level heading</span> +<span id="cb546-21"><a href="#cb546-21" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb546-22"><a href="#cb546-22" aria-hidden="true" tabindex="-1"></a>## A subheading {#identifier}</span> +<span id="cb546-23"><a href="#cb546-23" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb546-24"><a href="#cb546-24" aria-hidden="true" tabindex="-1"></a># Second top-level heading {.class_name}</span> +<span id="cb546-25"><a href="#cb546-25" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb546-26"><a href="#cb546-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb546-27"><a href="#cb546-27" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb503"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb503-1"><a href="#cb503-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb547"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb547-1"><a href="#cb547-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -9074,8 +10090,8 @@ contain the following text:</p> <h1 id="second-top-level-heading-1">Second top-level heading</h1> <p><em>(The end of a header attribute context)</em></p> </blockquote> -<h4 data-number="2.3.1.15" id="heading-renderers"><span -class="header-section-number">2.3.1.15</span> Heading Renderers</h4> +<h4 data-number="2.3.1.16" id="heading-renderers"><span +class="header-section-number">2.3.1.16</span> Heading Renderers</h4> <p>The <code>\markdownRendererHeadingOne</code> macro represents a first level heading. The macro receives a single argument that corresponds to the heading text.</p> @@ -9094,156 +10110,136 @@ corresponds to the heading text.</p> <p>The <code>\markdownRendererHeadingSix</code> macro represents a sixth level heading. The macro receives a single argument that corresponds to the heading text.</p> -<h5 class="unnumbered" id="plain-tex-example-29">Plain <span +<h5 class="unnumbered" id="plain-tex-example-32">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb504"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb504-1"><a href="#cb504-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb504-2"><a href="#cb504-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span> -<span id="cb504-3"><a href="#cb504-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>{1}</span> -<span id="cb504-4"><a href="#cb504-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>{2}</span> -<span id="cb504-5"><a href="#cb504-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingThree</span>{3}</span> -<span id="cb504-6"><a href="#cb504-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFour</span>{4}</span> -<span id="cb504-7"><a href="#cb504-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFive</span>{5}</span> -<span id="cb504-8"><a href="#cb504-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingSix</span>{6}</span> -<span id="cb504-9"><a href="#cb504-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb504-10"><a href="#cb504-10" aria-hidden="true" tabindex="-1"></a>######</span> -<span id="cb504-11"><a href="#cb504-11" aria-hidden="true" tabindex="-1"></a>#####</span> -<span id="cb504-12"><a href="#cb504-12" aria-hidden="true" tabindex="-1"></a>#####</span> -<span id="cb504-13"><a href="#cb504-13" aria-hidden="true" tabindex="-1"></a>###</span> -<span id="cb504-14"><a href="#cb504-14" aria-hidden="true" tabindex="-1"></a>######</span> -<span id="cb504-15"><a href="#cb504-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb504-16"><a href="#cb504-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb548"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb548-1"><a href="#cb548-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb548-2"><a href="#cb548-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span> +<span id="cb548-3"><a href="#cb548-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>{1}</span> +<span id="cb548-4"><a href="#cb548-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>{2}</span> +<span id="cb548-5"><a href="#cb548-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingThree</span>{3}</span> +<span id="cb548-6"><a href="#cb548-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFour</span>{4}</span> +<span id="cb548-7"><a href="#cb548-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFive</span>{5}</span> +<span id="cb548-8"><a href="#cb548-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingSix</span>{6}</span> +<span id="cb548-9"><a href="#cb548-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb548-10"><a href="#cb548-10" aria-hidden="true" tabindex="-1"></a>######</span> +<span id="cb548-11"><a href="#cb548-11" aria-hidden="true" tabindex="-1"></a>#####</span> +<span id="cb548-12"><a href="#cb548-12" aria-hidden="true" tabindex="-1"></a>#####</span> +<span id="cb548-13"><a href="#cb548-13" aria-hidden="true" tabindex="-1"></a>###</span> +<span id="cb548-14"><a href="#cb548-14" aria-hidden="true" tabindex="-1"></a>######</span> +<span id="cb548-15"><a href="#cb548-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb548-16"><a href="#cb548-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb505"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb505-1"><a href="#cb505-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb549"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb549-1"><a href="#cb549-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>65536</p> </blockquote> -<h5 class="unnumbered" id="latex-example-68"><span +<h5 class="unnumbered" id="latex-example-72"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb506"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb506-1"><a href="#cb506-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb506-2"><a href="#cb506-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb506-3"><a href="#cb506-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb506-4"><a href="#cb506-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb506-5"><a href="#cb506-5" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {},</span> -<span id="cb506-6"><a href="#cb506-6" aria-hidden="true" tabindex="-1"></a> headingOne = 1,</span> -<span id="cb506-7"><a href="#cb506-7" aria-hidden="true" tabindex="-1"></a> headingTwo = 2,</span> -<span id="cb506-8"><a href="#cb506-8" aria-hidden="true" tabindex="-1"></a> headingThree = 3,</span> -<span id="cb506-9"><a href="#cb506-9" aria-hidden="true" tabindex="-1"></a> headingFour = 4,</span> -<span id="cb506-10"><a href="#cb506-10" aria-hidden="true" tabindex="-1"></a> headingFive = 5,</span> -<span id="cb506-11"><a href="#cb506-11" aria-hidden="true" tabindex="-1"></a> headingSix = 6,</span> -<span id="cb506-12"><a href="#cb506-12" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb506-13"><a href="#cb506-13" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb506-14"><a href="#cb506-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb506-15"><a href="#cb506-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb506-16"><a href="#cb506-16" aria-hidden="true" tabindex="-1"></a>######</span> -<span id="cb506-17"><a href="#cb506-17" aria-hidden="true" tabindex="-1"></a>#####</span> -<span id="cb506-18"><a href="#cb506-18" aria-hidden="true" tabindex="-1"></a>#####</span> -<span id="cb506-19"><a href="#cb506-19" aria-hidden="true" tabindex="-1"></a>###</span> -<span id="cb506-20"><a href="#cb506-20" aria-hidden="true" tabindex="-1"></a>######</span> -<span id="cb506-21"><a href="#cb506-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb506-22"><a href="#cb506-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb550"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb550-1"><a href="#cb550-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb550-2"><a href="#cb550-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb550-3"><a href="#cb550-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb550-4"><a href="#cb550-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb550-5"><a href="#cb550-5" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {},</span> +<span id="cb550-6"><a href="#cb550-6" aria-hidden="true" tabindex="-1"></a> headingOne = 1,</span> +<span id="cb550-7"><a href="#cb550-7" aria-hidden="true" tabindex="-1"></a> headingTwo = 2,</span> +<span id="cb550-8"><a href="#cb550-8" aria-hidden="true" tabindex="-1"></a> headingThree = 3,</span> +<span id="cb550-9"><a href="#cb550-9" aria-hidden="true" tabindex="-1"></a> headingFour = 4,</span> +<span id="cb550-10"><a href="#cb550-10" aria-hidden="true" tabindex="-1"></a> headingFive = 5,</span> +<span id="cb550-11"><a href="#cb550-11" aria-hidden="true" tabindex="-1"></a> headingSix = 6,</span> +<span id="cb550-12"><a href="#cb550-12" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb550-13"><a href="#cb550-13" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb550-14"><a href="#cb550-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb550-15"><a href="#cb550-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb550-16"><a href="#cb550-16" aria-hidden="true" tabindex="-1"></a>######</span> +<span id="cb550-17"><a href="#cb550-17" aria-hidden="true" tabindex="-1"></a>#####</span> +<span id="cb550-18"><a href="#cb550-18" aria-hidden="true" tabindex="-1"></a>#####</span> +<span id="cb550-19"><a href="#cb550-19" aria-hidden="true" tabindex="-1"></a>###</span> +<span id="cb550-20"><a href="#cb550-20" aria-hidden="true" tabindex="-1"></a>######</span> +<span id="cb550-21"><a href="#cb550-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb550-22"><a href="#cb550-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb507"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb507-1"><a href="#cb507-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb551"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb551-1"><a href="#cb551-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>65536</p> </blockquote> -<h5 class="unnumbered" id="context-example-43">Con<span +<h5 class="unnumbered" id="context-example-45">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb508"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb508-1"><a href="#cb508-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb508-2"><a href="#cb508-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span> -<span id="cb508-3"><a href="#cb508-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>{1}</span> -<span id="cb508-4"><a href="#cb508-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>{2}</span> -<span id="cb508-5"><a href="#cb508-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingThree</span>{3}</span> -<span id="cb508-6"><a href="#cb508-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFour</span>{4}</span> -<span id="cb508-7"><a href="#cb508-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFive</span>{5}</span> -<span id="cb508-8"><a href="#cb508-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingSix</span>{6}</span> -<span id="cb508-9"><a href="#cb508-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb508-10"><a href="#cb508-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb508-11"><a href="#cb508-11" aria-hidden="true" tabindex="-1"></a>######</span> -<span id="cb508-12"><a href="#cb508-12" aria-hidden="true" tabindex="-1"></a>#####</span> -<span id="cb508-13"><a href="#cb508-13" aria-hidden="true" tabindex="-1"></a>#####</span> -<span id="cb508-14"><a href="#cb508-14" aria-hidden="true" tabindex="-1"></a>###</span> -<span id="cb508-15"><a href="#cb508-15" aria-hidden="true" tabindex="-1"></a>######</span> -<span id="cb508-16"><a href="#cb508-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb508-17"><a href="#cb508-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb552"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb552-1"><a href="#cb552-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb552-2"><a href="#cb552-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span> +<span id="cb552-3"><a href="#cb552-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>{1}</span> +<span id="cb552-4"><a href="#cb552-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>{2}</span> +<span id="cb552-5"><a href="#cb552-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingThree</span>{3}</span> +<span id="cb552-6"><a href="#cb552-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFour</span>{4}</span> +<span id="cb552-7"><a href="#cb552-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFive</span>{5}</span> +<span id="cb552-8"><a href="#cb552-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingSix</span>{6}</span> +<span id="cb552-9"><a href="#cb552-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb552-10"><a href="#cb552-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb552-11"><a href="#cb552-11" aria-hidden="true" tabindex="-1"></a>######</span> +<span id="cb552-12"><a href="#cb552-12" aria-hidden="true" tabindex="-1"></a>#####</span> +<span id="cb552-13"><a href="#cb552-13" aria-hidden="true" tabindex="-1"></a>#####</span> +<span id="cb552-14"><a href="#cb552-14" aria-hidden="true" tabindex="-1"></a>###</span> +<span id="cb552-15"><a href="#cb552-15" aria-hidden="true" tabindex="-1"></a>######</span> +<span id="cb552-16"><a href="#cb552-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb552-17"><a href="#cb552-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb509"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb509-1"><a href="#cb509-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb553"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb553-1"><a href="#cb553-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>65536</p> </blockquote> -<h4 data-number="2.3.1.16" id="html-comment-renderers"><span -class="header-section-number">2.3.1.16</span> HTML Comment -Renderers</h4> +<h4 data-number="2.3.1.17" id="inline-html-comment-renderer"><span +class="header-section-number">2.3.1.17</span> Inline HTML Comment +Renderer</h4> <p>The <code>\markdownRendererInlineHtmlComment</code> macro represents the contents of an inline <abbr>HTML</abbr> comment. This macro will only be produced, when the <strong><code>html</code></strong> option is enabled. The macro receives a single argument that corresponds to the contents of the <abbr>HTML</abbr> comment.</p> -<p>The <code>\markdownRendererBlockHtmlCommentBegin</code> and -<code>\markdownRendererBlockHtmlCommentEnd</code> macros represent the -beginning and the end of a block <abbr>HTML</abbr> comment. The macros -receive no arguments.</p> -<h5 class="unnumbered" id="latex-example-69"><span +<h5 class="unnumbered" id="latex-example-73"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb510"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb510-1"><a href="#cb510-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb510-2"><a href="#cb510-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[html]{<span class="ex">markdown</span>}</span> -<span id="cb510-3"><a href="#cb510-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">marginnote</span>}</span> -<span id="cb510-4"><a href="#cb510-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb510-5"><a href="#cb510-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb510-6"><a href="#cb510-6" aria-hidden="true" tabindex="-1"></a> inlineHtmlComment = {<span class="fu">\marginnote</span>{#1}},</span> -<span id="cb510-7"><a href="#cb510-7" aria-hidden="true" tabindex="-1"></a> blockHtmlCommentBegin = {<span class="kw">\begin</span>{<span class="ex">quote</span>}},</span> -<span id="cb510-8"><a href="#cb510-8" aria-hidden="true" tabindex="-1"></a> blockHtmlCommentEnd = {<span class="kw">\end</span>{<span class="ex">quote</span>}},</span> -<span id="cb510-9"><a href="#cb510-9" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb510-10"><a href="#cb510-10" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb510-11"><a href="#cb510-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb510-12"><a href="#cb510-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb510-13"><a href="#cb510-13" aria-hidden="true" tabindex="-1"></a>A useful use of inline HTML comments are side notes.</span> -<span id="cb510-14"><a href="#cb510-14" aria-hidden="true" tabindex="-1"></a><!-- Side notes are displayed in the horizontal margins next to the relevant</span> -<span id="cb510-15"><a href="#cb510-15" aria-hidden="true" tabindex="-1"></a>passages, which makes them *easier for the reader to find* than notes. --></span> -<span id="cb510-16"><a href="#cb510-16" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb510-17"><a href="#cb510-17" aria-hidden="true" tabindex="-1"></a>We can render block HTML comments as blockquotes:</span> -<span id="cb510-18"><a href="#cb510-18" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb510-19"><a href="#cb510-19" aria-hidden="true" tabindex="-1"></a><!--</span> -<span id="cb510-20"><a href="#cb510-20" aria-hidden="true" tabindex="-1"></a>Here is a block HTML comment with a code example that a programmer might understand:</span> -<span id="cb510-21"><a href="#cb510-21" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb510-22"><a href="#cb510-22" aria-hidden="true" tabindex="-1"></a> foo = bar + baz - 42</span> -<span id="cb510-23"><a href="#cb510-23" aria-hidden="true" tabindex="-1"></a>--></span> -<span id="cb510-24"><a href="#cb510-24" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb510-25"><a href="#cb510-25" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb554"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb554-1"><a href="#cb554-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb554-2"><a href="#cb554-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[html]{<span class="ex">markdown</span>}</span> +<span id="cb554-3"><a href="#cb554-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">marginnote</span>}</span> +<span id="cb554-4"><a href="#cb554-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb554-5"><a href="#cb554-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb554-6"><a href="#cb554-6" aria-hidden="true" tabindex="-1"></a> inlineHtmlComment = {<span class="fu">\marginnote</span>{#1}},</span> +<span id="cb554-7"><a href="#cb554-7" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb554-8"><a href="#cb554-8" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb554-9"><a href="#cb554-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb554-10"><a href="#cb554-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb554-11"><a href="#cb554-11" aria-hidden="true" tabindex="-1"></a>A useful use of inline HTML comments are side notes.</span> +<span id="cb554-12"><a href="#cb554-12" aria-hidden="true" tabindex="-1"></a><!-- Side notes are displayed in the horizontal margins next to the relevant</span> +<span id="cb554-13"><a href="#cb554-13" aria-hidden="true" tabindex="-1"></a>passages, which makes them *easier for the reader to find* than notes. --></span> +<span id="cb554-14"><a href="#cb554-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb554-15"><a href="#cb554-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb511"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb511-1"><a href="#cb511-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span> -<span id="cb511-2"><a href="#cb511-2" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb555"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb555-1"><a href="#cb555-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span> +<span id="cb555-2"><a href="#cb555-2" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following body text:</p> <blockquote> <p>A useful use of HTML comments are side notes.</p> -<p>We can render block HTML comments as blockquotes:</p> -<blockquote> -<p>Here is a block HTML comment with a code example that a programmer -might understand:</p> -<pre><code>foo = bar + baz - 42</code></pre> -</blockquote> </blockquote> <p>The horizontal margins should contain the following text:</p> <blockquote> @@ -9251,8 +10247,8 @@ might understand:</p> relevant passages, which makes them <em>easier for the reader to find</em> than notes.</p> </blockquote> -<h4 data-number="2.3.1.17" id="html-tag-and-element-renderers"><span -class="header-section-number">2.3.1.17</span> HTML Tag and Element +<h4 data-number="2.3.1.18" id="html-tag-and-element-renderers"><span +class="header-section-number">2.3.1.18</span> HTML Tag and Element Renderers</h4> <p>The <code>\markdownRendererInlineHtmlTag</code> macro represents an opening, closing, or empty inline <abbr>HTML</abbr> tag. This macro will @@ -9264,86 +10260,86 @@ represents a block <abbr>HTML</abbr> element. This macro will only be produced, when the <strong><code>html</code></strong> option is enabled. The macro receives a single argument that filename of a file containing the contents of the <abbr>HTML</abbr> element.</p> -<h5 class="unnumbered" id="latex-example-70"><span +<h5 class="unnumbered" id="latex-example-74"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb513"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb513-1"><a href="#cb513-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb513-2"><a href="#cb513-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[html]{<span class="ex">markdown</span>}</span> -<span id="cb513-3"><a href="#cb513-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">marginnote</span>}</span> -<span id="cb513-4"><a href="#cb513-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">verbatim</span>}</span> -<span id="cb513-5"><a href="#cb513-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb513-6"><a href="#cb513-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb513-7"><a href="#cb513-7" aria-hidden="true" tabindex="-1"></a> inlineHtmlTag = {<span class="fu">\textbf</span>{#1}},</span> -<span id="cb513-8"><a href="#cb513-8" aria-hidden="true" tabindex="-1"></a> inputBlockHtmlElement = {<span class="fu">\verbatiminput</span>{#1}},</span> -<span id="cb513-9"><a href="#cb513-9" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb513-10"><a href="#cb513-10" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb513-11"><a href="#cb513-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb513-12"><a href="#cb513-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb513-13"><a href="#cb513-13" aria-hidden="true" tabindex="-1"></a><b>_Hello,_ world!</b><br/></span> -<span id="cb513-14"><a href="#cb513-14" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb513-15"><a href="#cb513-15" aria-hidden="true" tabindex="-1"></a><div>_Hello,_ world!</div></span> -<span id="cb513-16"><a href="#cb513-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb513-17"><a href="#cb513-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb556"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb556-1"><a href="#cb556-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb556-2"><a href="#cb556-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[html]{<span class="ex">markdown</span>}</span> +<span id="cb556-3"><a href="#cb556-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">marginnote</span>}</span> +<span id="cb556-4"><a href="#cb556-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">verbatim</span>}</span> +<span id="cb556-5"><a href="#cb556-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb556-6"><a href="#cb556-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb556-7"><a href="#cb556-7" aria-hidden="true" tabindex="-1"></a> inlineHtmlTag = {<span class="fu">\textbf</span>{#1}},</span> +<span id="cb556-8"><a href="#cb556-8" aria-hidden="true" tabindex="-1"></a> inputBlockHtmlElement = {<span class="fu">\verbatiminput</span>{#1}},</span> +<span id="cb556-9"><a href="#cb556-9" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb556-10"><a href="#cb556-10" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb556-11"><a href="#cb556-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb556-12"><a href="#cb556-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb556-13"><a href="#cb556-13" aria-hidden="true" tabindex="-1"></a><b>_Hello,_ world!</b><br/></span> +<span id="cb556-14"><a href="#cb556-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb556-15"><a href="#cb556-15" aria-hidden="true" tabindex="-1"></a><div>_Hello,_ world!</div></span> +<span id="cb556-16"><a href="#cb556-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb556-17"><a href="#cb556-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb514"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb514-1"><a href="#cb514-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span> -<span id="cb514-2"><a href="#cb514-2" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb557"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb557-1"><a href="#cb557-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span> +<span id="cb557-2"><a href="#cb557-2" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following body text:</p> <blockquote> <p><strong><b></strong>_Hello,_ world!<strong></b><br/></strong></p> <pre><code><div>_Hello,_ world!</div></code></pre> </blockquote> -<h4 data-number="2.3.1.18" id="image-renderer"><span -class="header-section-number">2.3.1.18</span> Image Renderer</h4> +<h4 data-number="2.3.1.19" id="image-renderer"><span +class="header-section-number">2.3.1.19</span> Image Renderer</h4> <p>The <code>\markdownRendererImage</code> macro represents an image. It receives four arguments: the label, the fully escaped <abbr>uri</abbr> that can be directly typeset, the raw <abbr>uri</abbr> that can be used outside typesetting, and the title of the link.</p> -<h5 class="unnumbered" id="latex-example-71"><span +<h5 class="unnumbered" id="latex-example-75"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb516"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb516-1"><a href="#cb516-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb516-2"><a href="#cb516-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb516-3"><a href="#cb516-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> -<span id="cb516-4"><a href="#cb516-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\@</span>=11</span> -<span id="cb516-5"><a href="#cb516-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> -<span id="cb516-6"><a href="#cb516-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\^</span>^A=14</span> -<span id="cb516-7"><a href="#cb516-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\global\def\markdownRendererImage</span>#1#2#3#4{^^A</span> -<span id="cb516-8"><a href="#cb516-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\immediate\write</span>18{^^A</span></code></pre></div> -<div class="sourceCode" id="cb517"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb517-1"><a href="#cb517-1" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="bu">printf</span> <span class="st">'%s'</span> <span class="st">"#3"</span> <span class="kw">|</span> <span class="fu">grep</span> <span class="at">-q</span> ^http<span class="kw">;</span> <span class="cf">then</span></span> -<span id="cb517-2"><a href="#cb517-2" aria-hidden="true" tabindex="-1"></a> <span class="va">OUTPUT</span><span class="op">=</span><span class="st">"</span><span class="va">$(</span><span class="bu">printf</span> <span class="st">'%s'</span> <span class="st">"#3"</span> <span class="kw">|</span> <span class="fu">md5sum</span> <span class="kw">|</span> <span class="fu">cut</span> <span class="at">-d</span><span class="st">' '</span> <span class="at">-f1</span><span class="va">)</span><span class="st">.^^A</span></span> -<span id="cb517-3"><a href="#cb517-3" aria-hidden="true" tabindex="-1"></a><span class="st"> </span><span class="va">$(</span><span class="bu">printf</span> <span class="st">'%s'</span> <span class="st">"#3"</span> <span class="kw">|</span> <span class="fu">sed</span> <span class="st">'s/.*[.]//'</span><span class="va">)</span><span class="st">"</span><span class="kw">;</span></span> -<span id="cb517-4"><a href="#cb517-4" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="ot">! </span><span class="bu">[</span> <span class="ot">-e</span> <span class="st">"</span><span class="va">$OUTPUT</span><span class="st">"</span> <span class="bu">]</span><span class="kw">;</span> <span class="cf">then</span></span> -<span id="cb517-5"><a href="#cb517-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">wget</span> <span class="at">-O</span> <span class="st">"</span><span class="va">$OUTPUT</span><span class="st">"</span> <span class="st">'#3'</span> <span class="kw">||</span> <span class="fu">rm</span> <span class="st">"</span><span class="va">$OUTPUT</span><span class="st">"</span><span class="kw">;</span></span> -<span id="cb517-6"><a href="#cb517-6" aria-hidden="true" tabindex="-1"></a> <span class="ex">convert</span> <span class="st">"</span><span class="va">$OUTPUT</span><span class="st">"</span> png:<span class="st">"</span><span class="va">$OUTPUT</span><span class="st">"</span><span class="kw">;</span></span> -<span id="cb517-7"><a href="#cb517-7" aria-hidden="true" tabindex="-1"></a> <span class="cf">fi</span><span class="kw">;</span></span> -<span id="cb517-8"><a href="#cb517-8" aria-hidden="true" tabindex="-1"></a> <span class="bu">printf</span> <span class="st">'%s%%'</span> <span class="st">"</span><span class="va">$OUTPUT</span><span class="st">"</span> <span class="op">></span> <span class="dt">\j</span>obname.fetched<span class="kw">;</span></span> -<span id="cb517-9"><a href="#cb517-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">else</span></span> -<span id="cb517-10"><a href="#cb517-10" aria-hidden="true" tabindex="-1"></a> <span class="bu">printf</span> <span class="st">'%s%%'</span> <span class="st">"#3"</span> <span class="op">></span> <span class="dt">\j</span>obname.fetched<span class="kw">;</span></span> -<span id="cb517-11"><a href="#cb517-11" aria-hidden="true" tabindex="-1"></a> <span class="ex">fi^^A</span></span></code></pre></div> -<div class="sourceCode" id="cb518"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb518-1"><a href="#cb518-1" aria-hidden="true" tabindex="-1"></a> }^^A</span> -<span id="cb518-2"><a href="#cb518-2" aria-hidden="true" tabindex="-1"></a> {^^A</span> -<span id="cb518-3"><a href="#cb518-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\everyeof</span>={<span class="fu">\noexpand</span>}^^A</span> -<span id="cb518-4"><a href="#cb518-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\edef\filename</span>{<span class="fu">\_</span>_markdowninput"<span class="fu">\jobname</span>.fetched" }^^A</span> -<span id="cb518-5"><a href="#cb518-5" aria-hidden="true" tabindex="-1"></a> <span class="bu">\includegraphics</span>[width=<span class="fu">\textwidth</span>]{<span class="fu">\filename</span>}^^A</span> -<span id="cb518-6"><a href="#cb518-6" aria-hidden="true" tabindex="-1"></a> }^^A</span> -<span id="cb518-7"><a href="#cb518-7" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb518-8"><a href="#cb518-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> -<span id="cb518-9"><a href="#cb518-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb518-10"><a href="#cb518-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb518-11"><a href="#cb518-11" aria-hidden="true" tabindex="-1"></a>![TUGboat](https://tug.org/tugboat/noword.jpg)</span> -<span id="cb518-12"><a href="#cb518-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb518-13"><a href="#cb518-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb559"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb559-1"><a href="#cb559-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb559-2"><a href="#cb559-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb559-3"><a href="#cb559-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span> +<span id="cb559-4"><a href="#cb559-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\@</span>=11</span> +<span id="cb559-5"><a href="#cb559-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span> +<span id="cb559-6"><a href="#cb559-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\^</span>^A=14</span> +<span id="cb559-7"><a href="#cb559-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\global\def\markdownRendererImage</span>#1#2#3#4{^^A</span> +<span id="cb559-8"><a href="#cb559-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\immediate\write</span>18{^^A</span></code></pre></div> +<div class="sourceCode" id="cb560"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb560-1"><a href="#cb560-1" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="bu">printf</span> <span class="st">'%s'</span> <span class="st">"#3"</span> <span class="kw">|</span> <span class="fu">grep</span> <span class="at">-q</span> ^http<span class="kw">;</span> <span class="cf">then</span></span> +<span id="cb560-2"><a href="#cb560-2" aria-hidden="true" tabindex="-1"></a> <span class="va">OUTPUT</span><span class="op">=</span><span class="st">"</span><span class="va">$(</span><span class="bu">printf</span> <span class="st">'%s'</span> <span class="st">"#3"</span> <span class="kw">|</span> <span class="fu">md5sum</span> <span class="kw">|</span> <span class="fu">cut</span> <span class="at">-d</span><span class="st">' '</span> <span class="at">-f1</span><span class="va">)</span><span class="st">.^^A</span></span> +<span id="cb560-3"><a href="#cb560-3" aria-hidden="true" tabindex="-1"></a><span class="st"> </span><span class="va">$(</span><span class="bu">printf</span> <span class="st">'%s'</span> <span class="st">"#3"</span> <span class="kw">|</span> <span class="fu">sed</span> <span class="st">'s/.*[.]//'</span><span class="va">)</span><span class="st">"</span><span class="kw">;</span></span> +<span id="cb560-4"><a href="#cb560-4" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="ot">! </span><span class="bu">[</span> <span class="ot">-e</span> <span class="st">"</span><span class="va">$OUTPUT</span><span class="st">"</span> <span class="bu">]</span><span class="kw">;</span> <span class="cf">then</span></span> +<span id="cb560-5"><a href="#cb560-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">wget</span> <span class="at">-O</span> <span class="st">"</span><span class="va">$OUTPUT</span><span class="st">"</span> <span class="st">'#3'</span> <span class="kw">||</span> <span class="fu">rm</span> <span class="st">"</span><span class="va">$OUTPUT</span><span class="st">"</span><span class="kw">;</span></span> +<span id="cb560-6"><a href="#cb560-6" aria-hidden="true" tabindex="-1"></a> <span class="ex">convert</span> <span class="st">"</span><span class="va">$OUTPUT</span><span class="st">"</span> png:<span class="st">"</span><span class="va">$OUTPUT</span><span class="st">"</span><span class="kw">;</span></span> +<span id="cb560-7"><a href="#cb560-7" aria-hidden="true" tabindex="-1"></a> <span class="cf">fi</span><span class="kw">;</span></span> +<span id="cb560-8"><a href="#cb560-8" aria-hidden="true" tabindex="-1"></a> <span class="bu">printf</span> <span class="st">'%s%%'</span> <span class="st">"</span><span class="va">$OUTPUT</span><span class="st">"</span> <span class="op">></span> <span class="dt">\j</span>obname.fetched<span class="kw">;</span></span> +<span id="cb560-9"><a href="#cb560-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">else</span></span> +<span id="cb560-10"><a href="#cb560-10" aria-hidden="true" tabindex="-1"></a> <span class="bu">printf</span> <span class="st">'%s%%'</span> <span class="st">"#3"</span> <span class="op">></span> <span class="dt">\j</span>obname.fetched<span class="kw">;</span></span> +<span id="cb560-11"><a href="#cb560-11" aria-hidden="true" tabindex="-1"></a> <span class="ex">fi^^A</span></span></code></pre></div> +<div class="sourceCode" id="cb561"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb561-1"><a href="#cb561-1" aria-hidden="true" tabindex="-1"></a> }^^A</span> +<span id="cb561-2"><a href="#cb561-2" aria-hidden="true" tabindex="-1"></a> {^^A</span> +<span id="cb561-3"><a href="#cb561-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\everyeof</span>={<span class="fu">\noexpand</span>}^^A</span> +<span id="cb561-4"><a href="#cb561-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\edef\filename</span>{<span class="fu">\@@input</span>"<span class="fu">\jobname</span>.fetched" }^^A</span> +<span id="cb561-5"><a href="#cb561-5" aria-hidden="true" tabindex="-1"></a> <span class="bu">\includegraphics</span>[width=<span class="fu">\textwidth</span>]{<span class="fu">\filename</span>}^^A</span> +<span id="cb561-6"><a href="#cb561-6" aria-hidden="true" tabindex="-1"></a> }^^A</span> +<span id="cb561-7"><a href="#cb561-7" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb561-8"><a href="#cb561-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span> +<span id="cb561-9"><a href="#cb561-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb561-10"><a href="#cb561-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb561-11"><a href="#cb561-11" aria-hidden="true" tabindex="-1"></a>![TUGboat](https://tug.org/tugboat/noword.jpg)</span> +<span id="cb561-12"><a href="#cb561-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb561-13"><a href="#cb561-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb519"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb519-1"><a href="#cb519-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb562"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb562-1"><a href="#cb562-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following content. This assumes that you use a Unix-like operating system with Bourne or Bourne again shell as the default shell @@ -9358,163 +10354,209 @@ title="The Communications of the TeX Users Group" alt="TUGboat" /> <figcaption aria-hidden="true">TUGboat</figcaption> </figure> </blockquote> -<h4 data-number="2.3.1.19" id="image-attribute-context-renderers"><span -class="header-section-number">2.3.1.19</span> Image Attribute Context +<h4 data-number="2.3.1.20" id="image-attribute-context-renderers"><span +class="header-section-number">2.3.1.20</span> Image Attribute Context Renderers</h4> <p>The following macros are only produced, when the <strong><code>linkAttributes</code></strong> option is enabled.</p> <p>The <code>\markdownRendererImageAttributeContextBegin</code> and <code>\markdownRendererImageAttributeContextEnd</code> macros represent -the beginning and the end of an image in which the attributes of the +the beginning and the end of a context in which the attributes of an image apply. The macros receive no arguments.</p> -<h5 class="unnumbered" id="latex-example-72"><span +<h5 class="unnumbered" id="latex-example-76"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb520"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb520-1"><a href="#cb520-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb520-2"><a href="#cb520-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[linkAttributes]{<span class="ex">markdown</span>}</span> -<span id="cb520-3"><a href="#cb520-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb520-4"><a href="#cb520-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb520-5"><a href="#cb520-5" aria-hidden="true" tabindex="-1"></a> imageAttributeContextBegin = {(},</span> -<span id="cb520-6"><a href="#cb520-6" aria-hidden="true" tabindex="-1"></a> image = {#1},</span> -<span id="cb520-7"><a href="#cb520-7" aria-hidden="true" tabindex="-1"></a> imageAttributeContextEnd = {)},</span> -<span id="cb520-8"><a href="#cb520-8" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb520-9"><a href="#cb520-9" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb520-10"><a href="#cb520-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb520-11"><a href="#cb520-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb520-12"><a href="#cb520-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb520-13"><a href="#cb520-13" aria-hidden="true" tabindex="-1"></a>foo ![bar](#bar){key=value} baz</span> -<span id="cb520-14"><a href="#cb520-14" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb520-15"><a href="#cb520-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb520-16"><a href="#cb520-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb563"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb563-1"><a href="#cb563-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb563-2"><a href="#cb563-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[linkAttributes]{<span class="ex">markdown</span>}</span> +<span id="cb563-3"><a href="#cb563-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb563-4"><a href="#cb563-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb563-5"><a href="#cb563-5" aria-hidden="true" tabindex="-1"></a> imageAttributeContextBegin = {(},</span> +<span id="cb563-6"><a href="#cb563-6" aria-hidden="true" tabindex="-1"></a> image = {#1},</span> +<span id="cb563-7"><a href="#cb563-7" aria-hidden="true" tabindex="-1"></a> imageAttributeContextEnd = {)},</span> +<span id="cb563-8"><a href="#cb563-8" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb563-9"><a href="#cb563-9" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb563-10"><a href="#cb563-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb563-11"><a href="#cb563-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb563-12"><a href="#cb563-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb563-13"><a href="#cb563-13" aria-hidden="true" tabindex="-1"></a>foo ![bar](#bar){key=value} baz</span> +<span id="cb563-14"><a href="#cb563-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb563-15"><a href="#cb563-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb563-16"><a href="#cb563-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb521"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb521-1"><a href="#cb521-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb564"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb564-1"><a href="#cb564-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>foo (bar) baz</p> </blockquote> -<h4 data-number="2.3.1.20" id="interblock-separator-renderer"><span -class="header-section-number">2.3.1.20</span> Interblock Separator -Renderer</h4> +<h4 data-number="2.3.1.21" id="interblock-separator-renderers"><span +class="header-section-number">2.3.1.21</span> Interblock Separator +Renderers</h4> <p>The <code>\markdownRendererInterblockSeparator</code> macro -represents a separator between two markdown block elements. The macro -receives no arguments.</p> -<h5 class="unnumbered" id="plain-tex-example-30">Plain <span +represents an interblock separator between two markdown block elements. +The macro receives no arguments.</p> +<h5 class="unnumbered" id="plain-tex-example-33">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb522"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb522-1"><a href="#cb522-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb522-2"><a href="#cb522-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> -<span id="cb522-3"><a href="#cb522-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb522-4"><a href="#cb522-4" aria-hidden="true" tabindex="-1"></a> {<span class="fu">\it</span>(The end of a block)}<span class="co">%</span></span> -<span id="cb522-5"><a href="#cb522-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb522-6"><a href="#cb522-6" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb522-7"><a href="#cb522-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb522-8"><a href="#cb522-8" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> -<span id="cb522-9"><a href="#cb522-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb522-10"><a href="#cb522-10" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span> -<span id="cb522-11"><a href="#cb522-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb522-12"><a href="#cb522-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb565"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb565-1"><a href="#cb565-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb565-2"><a href="#cb565-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> +<span id="cb565-3"><a href="#cb565-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb565-4"><a href="#cb565-4" aria-hidden="true" tabindex="-1"></a> {<span class="fu">\it</span>(The end of a block)}<span class="co">%</span></span> +<span id="cb565-5"><a href="#cb565-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb565-6"><a href="#cb565-6" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb565-7"><a href="#cb565-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb565-8"><a href="#cb565-8" aria-hidden="true" tabindex="-1"></a>- Hello *world*!</span> +<span id="cb565-9"><a href="#cb565-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb565-10"><a href="#cb565-10" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span> +<span id="cb565-11"><a href="#cb565-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb565-12"><a href="#cb565-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb523"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb523-1"><a href="#cb523-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb566"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb566-1"><a href="#cb566-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> -<p>Hello <em>world</em>!</p> +<ul> +<li>Hello <em>world</em>!</li> +</ul> <p><em>(The end of a block)</em></p> <p><em>Foo</em> bar!</p> </blockquote> -<h5 class="unnumbered" id="latex-example-73"><span +<h5 class="unnumbered" id="latex-example-77"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb524"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb524-1"><a href="#cb524-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb524-2"><a href="#cb524-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb524-3"><a href="#cb524-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb524-4"><a href="#cb524-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb524-5"><a href="#cb524-5" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span> -<span id="cb524-6"><a href="#cb524-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb524-7"><a href="#cb524-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a block)}<span class="co">%</span></span> -<span id="cb524-8"><a href="#cb524-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb524-9"><a href="#cb524-9" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb524-10"><a href="#cb524-10" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb524-11"><a href="#cb524-11" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb524-12"><a href="#cb524-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb524-13"><a href="#cb524-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb524-14"><a href="#cb524-14" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> -<span id="cb524-15"><a href="#cb524-15" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb524-16"><a href="#cb524-16" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span> -<span id="cb524-17"><a href="#cb524-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb524-18"><a href="#cb524-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb567"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb567-1"><a href="#cb567-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb567-2"><a href="#cb567-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb567-3"><a href="#cb567-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb567-4"><a href="#cb567-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb567-5"><a href="#cb567-5" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span> +<span id="cb567-6"><a href="#cb567-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb567-7"><a href="#cb567-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a block)}<span class="co">%</span></span> +<span id="cb567-8"><a href="#cb567-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb567-9"><a href="#cb567-9" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb567-10"><a href="#cb567-10" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb567-11"><a href="#cb567-11" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb567-12"><a href="#cb567-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb567-13"><a href="#cb567-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb567-14"><a href="#cb567-14" aria-hidden="true" tabindex="-1"></a>- Hello *world*!</span> +<span id="cb567-15"><a href="#cb567-15" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb567-16"><a href="#cb567-16" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span> +<span id="cb567-17"><a href="#cb567-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb567-18"><a href="#cb567-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb525"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb525-1"><a href="#cb525-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb568"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb568-1"><a href="#cb568-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> -<p>Hello <em>world</em>!</p> +<ul> +<li>Hello <em>world</em>!</li> +</ul> <p><em>(The end of a block)</em></p> <p><em>Foo</em> bar!</p> </blockquote> -<h5 class="unnumbered" id="context-example-44">Con<span +<h5 class="unnumbered" id="context-example-46">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb526"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb526-1"><a href="#cb526-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb526-2"><a href="#cb526-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> -<span id="cb526-3"><a href="#cb526-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb526-4"><a href="#cb526-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a block)}<span class="co">%</span></span> -<span id="cb526-5"><a href="#cb526-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb526-6"><a href="#cb526-6" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb526-7"><a href="#cb526-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb526-8"><a href="#cb526-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb526-9"><a href="#cb526-9" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> -<span id="cb526-10"><a href="#cb526-10" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb526-11"><a href="#cb526-11" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span> -<span id="cb526-12"><a href="#cb526-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb526-13"><a href="#cb526-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb569"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb569-1"><a href="#cb569-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb569-2"><a href="#cb569-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> +<span id="cb569-3"><a href="#cb569-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb569-4"><a href="#cb569-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a block)}<span class="co">%</span></span> +<span id="cb569-5"><a href="#cb569-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb569-6"><a href="#cb569-6" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb569-7"><a href="#cb569-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb569-8"><a href="#cb569-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb569-9"><a href="#cb569-9" aria-hidden="true" tabindex="-1"></a>- Hello *world*!</span> +<span id="cb569-10"><a href="#cb569-10" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb569-11"><a href="#cb569-11" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span> +<span id="cb569-12"><a href="#cb569-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb569-13"><a href="#cb569-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb527"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb527-1"><a href="#cb527-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb570"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb570-1"><a href="#cb570-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> -<p>Hello <em>world</em>!</p> +<ul> +<li>Hello <em>world</em>!</li> +</ul> <p><em>(The end of a block)</em></p> <p><em>Foo</em> bar!</p> </blockquote> -<h4 data-number="2.3.1.21" id="line-block-renderer"><span -class="header-section-number">2.3.1.21</span> Line Block Renderer</h4> +<p>Users can use more than one blank line to delimit two block to +indicate the end of a series of blocks that make up a logical paragraph. +This produces a paragraph separator instead of an interblock separator. +Between some blocks, such as markdown paragraphs, a paragraph separator +is always produced.</p> +<p>The <code>\markdownRendererParagraphSeparator</code> macro represents +a paragraph separator. The macro receives no arguments.</p> +<h5 class="unnumbered" id="latex-example-78"><span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb571"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb571-1"><a href="#cb571-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb571-2"><a href="#cb571-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb571-3"><a href="#cb571-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb571-4"><a href="#cb571-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb571-5"><a href="#cb571-5" aria-hidden="true" tabindex="-1"></a> paragraphSeparator = {<span class="co">%</span></span> +<span id="cb571-6"><a href="#cb571-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb571-7"><a href="#cb571-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a paragraph)}<span class="co">%</span></span> +<span id="cb571-8"><a href="#cb571-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb571-9"><a href="#cb571-9" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb571-10"><a href="#cb571-10" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb571-11"><a href="#cb571-11" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb571-12"><a href="#cb571-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb571-13"><a href="#cb571-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb571-14"><a href="#cb571-14" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> +<span id="cb571-15"><a href="#cb571-15" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb571-16"><a href="#cb571-16" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span> +<span id="cb571-17"><a href="#cb571-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb571-18"><a href="#cb571-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb572"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb572-1"><a href="#cb572-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<p>Hello <em>world</em>!</p> +<p><em>(The end of a paragraph)</em></p> +<p><em>Foo</em> bar!</p> +</blockquote> +<h4 data-number="2.3.1.22" id="line-block-renderers"><span +class="header-section-number">2.3.1.22</span> Line Block Renderers</h4> <p>The following macros are only produced, when the <strong><code>lineBlocks</code></strong> option is enabled.</p> <p>The <code>\markdownRendererLineBlockBegin</code> and <code>\markdownRendererLineBlockEnd</code> macros represent the beginning and the end of a line block. The macros receive no arguments.</p> -<h5 class="unnumbered" id="plain-tex-example-31">Plain <span +<h5 class="unnumbered" id="plain-tex-example-34">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb528"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb528-1"><a href="#cb528-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb528-2"><a href="#cb528-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionLineBlocks</span>{true}</span> -<span id="cb528-3"><a href="#cb528-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb528-4"><a href="#cb528-4" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span> -<span id="cb528-5"><a href="#cb528-5" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span> -<span id="cb528-6"><a href="#cb528-6" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span> -<span id="cb528-7"><a href="#cb528-7" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span> -<span id="cb528-8"><a href="#cb528-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb528-9"><a href="#cb528-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb573"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb573-1"><a href="#cb573-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb573-2"><a href="#cb573-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionLineBlocks</span>{true}</span> +<span id="cb573-3"><a href="#cb573-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb573-4"><a href="#cb573-4" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span> +<span id="cb573-5"><a href="#cb573-5" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span> +<span id="cb573-6"><a href="#cb573-6" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span> +<span id="cb573-7"><a href="#cb573-7" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span> +<span id="cb573-8"><a href="#cb573-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb573-9"><a href="#cb573-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb529"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb529-1"><a href="#cb529-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb574"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb574-1"><a href="#cb574-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -9523,24 +10565,24 @@ But I, being poor, have only my dreams;<br /> I have spread my dreams under your feet;<br /> Tread softly because you tread on my dreams.</div> </blockquote> -<h5 class="unnumbered" id="latex-example-74"><span +<h5 class="unnumbered" id="latex-example-79"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb530"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb530-1"><a href="#cb530-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb530-2"><a href="#cb530-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[lineBlocks]{<span class="ex">markdown</span>}</span> -<span id="cb530-3"><a href="#cb530-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb530-4"><a href="#cb530-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb530-5"><a href="#cb530-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span> -<span id="cb530-6"><a href="#cb530-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span> -<span id="cb530-7"><a href="#cb530-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span> -<span id="cb530-8"><a href="#cb530-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span> -<span id="cb530-9"><a href="#cb530-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb530-10"><a href="#cb530-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb575"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb575-1"><a href="#cb575-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb575-2"><a href="#cb575-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[lineBlocks]{<span class="ex">markdown</span>}</span> +<span id="cb575-3"><a href="#cb575-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb575-4"><a href="#cb575-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb575-5"><a href="#cb575-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span> +<span id="cb575-6"><a href="#cb575-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span> +<span id="cb575-7"><a href="#cb575-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span> +<span id="cb575-8"><a href="#cb575-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span> +<span id="cb575-9"><a href="#cb575-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb575-10"><a href="#cb575-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb531"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb531-1"><a href="#cb531-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb576"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb576-1"><a href="#cb576-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -9549,24 +10591,24 @@ But I, being poor, have only my dreams;<br /> I have spread my dreams under your feet;<br /> Tread softly because you tread on my dreams.</div> </blockquote> -<h5 class="unnumbered" id="context-example-45">Con<span +<h5 class="unnumbered" id="context-example-47">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb532"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb532-1"><a href="#cb532-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb532-2"><a href="#cb532-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[lineBlocks = yes]</span> -<span id="cb532-3"><a href="#cb532-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb532-4"><a href="#cb532-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb532-5"><a href="#cb532-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span> -<span id="cb532-6"><a href="#cb532-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span> -<span id="cb532-7"><a href="#cb532-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span> -<span id="cb532-8"><a href="#cb532-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span> -<span id="cb532-9"><a href="#cb532-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb532-10"><a href="#cb532-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb577"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb577-1"><a href="#cb577-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb577-2"><a href="#cb577-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[lineBlocks = yes]</span> +<span id="cb577-3"><a href="#cb577-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb577-4"><a href="#cb577-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb577-5"><a href="#cb577-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span> +<span id="cb577-6"><a href="#cb577-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span> +<span id="cb577-7"><a href="#cb577-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span> +<span id="cb577-8"><a href="#cb577-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span> +<span id="cb577-9"><a href="#cb577-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb577-10"><a href="#cb577-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb533"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb533-1"><a href="#cb533-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb578"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb578-1"><a href="#cb578-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -9575,23 +10617,87 @@ But I, being poor, have only my dreams;<br /> I have spread my dreams under your feet;<br /> Tread softly because you tread on my dreams.</div> </blockquote> -<h4 data-number="2.3.1.22" id="line-break-renderer"><span -class="header-section-number">2.3.1.22</span> Line Break Renderer</h4> +<h4 data-number="2.3.1.23" id="line-break-renderers"><span +class="header-section-number">2.3.1.23</span> Line Break Renderers</h4> +<p>The <code>\markdownRendererSoftLineBreak</code> macro represents a +soft line break. The macro receives no arguments.</p> +<h5 class="unnumbered" id="plain-tex-example-35">Plain <span +class="tex">T<sub>e</sub>X</span> Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb579"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb579-1"><a href="#cb579-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb579-2"><a href="#cb579-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSoftLineBreak</span>{<span class="co">%</span></span> +<span id="cb579-3"><a href="#cb579-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb579-4"><a href="#cb579-4" aria-hidden="true" tabindex="-1"></a> {<span class="fu">\it</span>(A soft line break)}<span class="co">%</span></span> +<span id="cb579-5"><a href="#cb579-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb579-6"><a href="#cb579-6" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb579-7"><a href="#cb579-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span> +<span id="cb579-8"><a href="#cb579-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<p>Using a text editor, create a text document named +<code>example.md</code> with the following content:</p> +<div class="sourceCode" id="cb580"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb580-1"><a href="#cb580-1" aria-hidden="true" tabindex="-1"></a>Hello world!</span> +<span id="cb580-2"><a href="#cb580-2" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb581"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb581-1"><a href="#cb581-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<p>Hello <em>world</em>!</p> +<p><em>(A soft line break)</em></p> +<p><em>Foo</em> bar!</p> +</blockquote> +<h5 class="unnumbered" id="latex-example-80"><span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb582"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb582-1"><a href="#cb582-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb582-2"><a href="#cb582-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb582-3"><a href="#cb582-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb582-4"><a href="#cb582-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb582-5"><a href="#cb582-5" aria-hidden="true" tabindex="-1"></a> softLineBreak = {<span class="co">%</span></span> +<span id="cb582-6"><a href="#cb582-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb582-7"><a href="#cb582-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(A soft line break)}<span class="co">%</span></span> +<span id="cb582-8"><a href="#cb582-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb582-9"><a href="#cb582-9" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb582-10"><a href="#cb582-10" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb582-11"><a href="#cb582-11" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb582-12"><a href="#cb582-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb582-13"><a href="#cb582-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span> +<span id="cb582-14"><a href="#cb582-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<p>Using a text editor, create a text document named +<code>example.md</code> with the following content:</p> +<div class="sourceCode" id="cb583"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb583-1"><a href="#cb583-1" aria-hidden="true" tabindex="-1"></a>Hello world!</span> +<span id="cb583-2"><a href="#cb583-2" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb584"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb584-1"><a href="#cb584-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<p>Hello <em>world</em>!</p> +<p><em>(A soft line break)</em></p> +<p><em>Foo</em> bar!</p> +</blockquote> <p>The <code>\markdownRendererHardLineBreak</code> macro represents a hard line break. The macro receives no arguments.</p> -<h5 class="unnumbered" id="plain-tex-example-32">Plain <span +<h5 class="unnumbered" id="plain-tex-example-36">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb534"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb534-1"><a href="#cb534-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb534-2"><a href="#cb534-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHardLineBreak</span>{<span class="co">%</span></span> -<span id="cb534-3"><a href="#cb534-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb534-4"><a href="#cb534-4" aria-hidden="true" tabindex="-1"></a> {<span class="fu">\it</span>(A hard line break)}<span class="co">%</span></span> -<span id="cb534-5"><a href="#cb534-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb534-6"><a href="#cb534-6" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb534-7"><a href="#cb534-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span> -<span id="cb534-8"><a href="#cb534-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb585"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb585-1"><a href="#cb585-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb585-2"><a href="#cb585-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHardLineBreak</span>{<span class="co">%</span></span> +<span id="cb585-3"><a href="#cb585-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb585-4"><a href="#cb585-4" aria-hidden="true" tabindex="-1"></a> {<span class="fu">\it</span>(A hard line break)}<span class="co">%</span></span> +<span id="cb585-5"><a href="#cb585-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb585-6"><a href="#cb585-6" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb585-7"><a href="#cb585-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span> +<span id="cb585-8"><a href="#cb585-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Using a text editor, create a text document named <code>example.md</code> with the following content. Note the two spaces at the end of the first line, which specify a hard line break. Due to @@ -9600,8 +10706,8 @@ processor, hard line breaks would be ignored if we typed them directly into the <code>document.tex</code> document.</p> <pre><code>Hello world! <br/>_Foo_ bar!</code></pre> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb535"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb535-1"><a href="#cb535-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb586"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb586-1"><a href="#cb586-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -9609,25 +10715,25 @@ contain the following text:</p> <p><em>(A hard line break)</em></p> <p><em>Foo</em> bar!</p> </blockquote> -<h5 class="unnumbered" id="latex-example-75"><span +<h5 class="unnumbered" id="latex-example-81"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb536"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb536-1"><a href="#cb536-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb536-2"><a href="#cb536-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb536-3"><a href="#cb536-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb536-4"><a href="#cb536-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb536-5"><a href="#cb536-5" aria-hidden="true" tabindex="-1"></a> hardLineBreak = {<span class="co">%</span></span> -<span id="cb536-6"><a href="#cb536-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb536-7"><a href="#cb536-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(A hard line break)}<span class="co">%</span></span> -<span id="cb536-8"><a href="#cb536-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb536-9"><a href="#cb536-9" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb536-10"><a href="#cb536-10" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb536-11"><a href="#cb536-11" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb536-12"><a href="#cb536-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb536-13"><a href="#cb536-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span> -<span id="cb536-14"><a href="#cb536-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb587"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb587-1"><a href="#cb587-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb587-2"><a href="#cb587-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb587-3"><a href="#cb587-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb587-4"><a href="#cb587-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb587-5"><a href="#cb587-5" aria-hidden="true" tabindex="-1"></a> hardLineBreak = {<span class="co">%</span></span> +<span id="cb587-6"><a href="#cb587-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb587-7"><a href="#cb587-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(A hard line break)}<span class="co">%</span></span> +<span id="cb587-8"><a href="#cb587-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb587-9"><a href="#cb587-9" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb587-10"><a href="#cb587-10" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb587-11"><a href="#cb587-11" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb587-12"><a href="#cb587-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb587-13"><a href="#cb587-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span> +<span id="cb587-14"><a href="#cb587-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Using a text editor, create a text document named <code>example.md</code> with the following content. Note the two spaces at the end of the first line, which specify a hard line break. Due to @@ -9636,8 +10742,8 @@ processor, hard line breaks would be ignored if we typed them directly into the <code>document.tex</code> document.</p> <pre><code>Hello world! <br/>_Foo_ bar!</code></pre> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb537"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb537-1"><a href="#cb537-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb588"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb588-1"><a href="#cb588-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -9645,31 +10751,31 @@ contain the following text:</p> <p><em>(A hard line break)</em></p> <p><em>Foo</em> bar!</p> </blockquote> -<h4 data-number="2.3.1.23" id="link-renderer"><span -class="header-section-number">2.3.1.23</span> Link Renderer</h4> +<h4 data-number="2.3.1.24" id="link-renderer"><span +class="header-section-number">2.3.1.24</span> Link Renderer</h4> <p>The <code>\markdownRendererLink</code> macro represents a hyperlink. It receives four arguments: the label, the fully escaped <abbr>uri</abbr> that can be directly typeset, the raw <abbr>uri</abbr> that can be used outside typesetting, and the title of the link.</p> -<h5 class="unnumbered" id="plain-tex-example-33">Plain <span +<h5 class="unnumbered" id="plain-tex-example-37">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb538"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb538-1"><a href="#cb538-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb538-2"><a href="#cb538-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererLink</span>#1#2#3#4{<span class="co">%</span></span> -<span id="cb538-3"><a href="#cb538-3" aria-hidden="true" tabindex="-1"></a> #1 {<span class="fu">\tt</span>#2} titled {<span class="fu">\it</span>#4}<span class="co">%</span></span> -<span id="cb538-4"><a href="#cb538-4" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb538-5"><a href="#cb538-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb538-6"><a href="#cb538-6" aria-hidden="true" tabindex="-1"></a>Please visit [the link][ctan].</span> -<span id="cb538-7"><a href="#cb538-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb538-8"><a href="#cb538-8" aria-hidden="true" tabindex="-1"></a> [ctan]: https://ctan.org/</span> -<span id="cb538-9"><a href="#cb538-9" aria-hidden="true" tabindex="-1"></a> (the Comprehensive TeX Archive Network)</span> -<span id="cb538-10"><a href="#cb538-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb538-11"><a href="#cb538-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb589"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb589-1"><a href="#cb589-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb589-2"><a href="#cb589-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererLink</span>#1#2#3#4{<span class="co">%</span></span> +<span id="cb589-3"><a href="#cb589-3" aria-hidden="true" tabindex="-1"></a> #1 {<span class="fu">\tt</span>#2} titled {<span class="fu">\it</span>#4}<span class="co">%</span></span> +<span id="cb589-4"><a href="#cb589-4" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb589-5"><a href="#cb589-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb589-6"><a href="#cb589-6" aria-hidden="true" tabindex="-1"></a>Please visit [the link][ctan].</span> +<span id="cb589-7"><a href="#cb589-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb589-8"><a href="#cb589-8" aria-hidden="true" tabindex="-1"></a> [ctan]: https://ctan.org/</span> +<span id="cb589-9"><a href="#cb589-9" aria-hidden="true" tabindex="-1"></a> (the Comprehensive TeX Archive Network)</span> +<span id="cb589-10"><a href="#cb589-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb589-11"><a href="#cb589-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb539"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb539-1"><a href="#cb539-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb590"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb590-1"><a href="#cb590-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -9677,31 +10783,31 @@ contain the following text:</p> class="uri">https://ctan.org/</a> titled <em>the Comprehensive TeX Archive Network</em>.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-76"><span +<h5 class="unnumbered" id="latex-example-82"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb540"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb540-1"><a href="#cb540-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb540-2"><a href="#cb540-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb540-3"><a href="#cb540-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb540-4"><a href="#cb540-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb540-5"><a href="#cb540-5" aria-hidden="true" tabindex="-1"></a> link = {<span class="co">%</span></span> -<span id="cb540-6"><a href="#cb540-6" aria-hidden="true" tabindex="-1"></a> #1 <span class="fu">\texttt</span>{#2} titled <span class="fu">\emph</span>{#4}<span class="co">%</span></span> -<span id="cb540-7"><a href="#cb540-7" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb540-8"><a href="#cb540-8" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb540-9"><a href="#cb540-9" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb540-10"><a href="#cb540-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb540-11"><a href="#cb540-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb540-12"><a href="#cb540-12" aria-hidden="true" tabindex="-1"></a>Please visit [the link][ctan].</span> -<span id="cb540-13"><a href="#cb540-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb540-14"><a href="#cb540-14" aria-hidden="true" tabindex="-1"></a> [ctan]: https://ctan.org/</span> -<span id="cb540-15"><a href="#cb540-15" aria-hidden="true" tabindex="-1"></a> (the Comprehensive TeX Archive Network)</span> -<span id="cb540-16"><a href="#cb540-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb540-17"><a href="#cb540-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb591"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb591-1"><a href="#cb591-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb591-2"><a href="#cb591-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb591-3"><a href="#cb591-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb591-4"><a href="#cb591-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb591-5"><a href="#cb591-5" aria-hidden="true" tabindex="-1"></a> link = {<span class="co">%</span></span> +<span id="cb591-6"><a href="#cb591-6" aria-hidden="true" tabindex="-1"></a> #1 <span class="fu">\texttt</span>{#2} titled <span class="fu">\emph</span>{#4}<span class="co">%</span></span> +<span id="cb591-7"><a href="#cb591-7" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb591-8"><a href="#cb591-8" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb591-9"><a href="#cb591-9" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb591-10"><a href="#cb591-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb591-11"><a href="#cb591-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb591-12"><a href="#cb591-12" aria-hidden="true" tabindex="-1"></a>Please visit [the link][ctan].</span> +<span id="cb591-13"><a href="#cb591-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb591-14"><a href="#cb591-14" aria-hidden="true" tabindex="-1"></a> [ctan]: https://ctan.org/</span> +<span id="cb591-15"><a href="#cb591-15" aria-hidden="true" tabindex="-1"></a> (the Comprehensive TeX Archive Network)</span> +<span id="cb591-16"><a href="#cb591-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb591-17"><a href="#cb591-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb541"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb541-1"><a href="#cb541-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb592"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb592-1"><a href="#cb592-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -9709,26 +10815,26 @@ contain the following text:</p> class="uri">https://ctan.org/</a> titled <em>the Comprehensive TeX Archive Network</em>.</p> </blockquote> -<h5 class="unnumbered" id="context-example-46">Con<span +<h5 class="unnumbered" id="context-example-48">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb542"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb542-1"><a href="#cb542-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb542-2"><a href="#cb542-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererLink</span>#1#2#3#4{<span class="co">%</span></span> -<span id="cb542-3"><a href="#cb542-3" aria-hidden="true" tabindex="-1"></a> #1 {<span class="fu">\tt</span>#2} titled <span class="fu">\emph</span>{#4}<span class="co">%</span></span> -<span id="cb542-4"><a href="#cb542-4" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb542-5"><a href="#cb542-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb542-6"><a href="#cb542-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb542-7"><a href="#cb542-7" aria-hidden="true" tabindex="-1"></a>Please visit [the link][ctan].</span> -<span id="cb542-8"><a href="#cb542-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb542-9"><a href="#cb542-9" aria-hidden="true" tabindex="-1"></a> [ctan]: https://ctan.org/</span> -<span id="cb542-10"><a href="#cb542-10" aria-hidden="true" tabindex="-1"></a> (the Comprehensive TeX Archive Network)</span> -<span id="cb542-11"><a href="#cb542-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb542-12"><a href="#cb542-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb593"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb593-1"><a href="#cb593-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb593-2"><a href="#cb593-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererLink</span>#1#2#3#4{<span class="co">%</span></span> +<span id="cb593-3"><a href="#cb593-3" aria-hidden="true" tabindex="-1"></a> #1 {<span class="fu">\tt</span>#2} titled <span class="fu">\emph</span>{#4}<span class="co">%</span></span> +<span id="cb593-4"><a href="#cb593-4" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb593-5"><a href="#cb593-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb593-6"><a href="#cb593-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb593-7"><a href="#cb593-7" aria-hidden="true" tabindex="-1"></a>Please visit [the link][ctan].</span> +<span id="cb593-8"><a href="#cb593-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb593-9"><a href="#cb593-9" aria-hidden="true" tabindex="-1"></a> [ctan]: https://ctan.org/</span> +<span id="cb593-10"><a href="#cb593-10" aria-hidden="true" tabindex="-1"></a> (the Comprehensive TeX Archive Network)</span> +<span id="cb593-11"><a href="#cb593-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb593-12"><a href="#cb593-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb543"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb543-1"><a href="#cb543-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb594"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb594-1"><a href="#cb594-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -9736,46 +10842,81 @@ contain the following text:</p> class="uri">https://ctan.org/</a> titled <em>the Comprehensive TeX Archive Network</em>.</p> </blockquote> -<h4 data-number="2.3.1.24" id="link-attribute-context-renderers"><span -class="header-section-number">2.3.1.24</span> Link Attribute Context +<h4 data-number="2.3.1.25" id="link-attribute-context-renderers"><span +class="header-section-number">2.3.1.25</span> Link Attribute Context Renderers</h4> <p>The following macros are only produced, when the <strong><code>linkAttributes</code></strong> option is enabled.</p> <p>The <code>\markdownRendererLinkAttributeContextBegin</code> and <code>\markdownRendererLinkAttributeContextEnd</code> macros represent -the beginning and the end of a hyperlink in which the attributes of the +the beginning and the end of a context in which the attributes of a hyperlink apply. The macros receive no arguments.</p> -<h5 class="unnumbered" id="latex-example-77"><span +<h5 class="unnumbered" id="latex-example-83"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb544"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb544-1"><a href="#cb544-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb544-2"><a href="#cb544-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[linkAttributes]{<span class="ex">markdown</span>}</span> -<span id="cb544-3"><a href="#cb544-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb544-4"><a href="#cb544-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb544-5"><a href="#cb544-5" aria-hidden="true" tabindex="-1"></a> linkAttributeContextBegin = {(},</span> -<span id="cb544-6"><a href="#cb544-6" aria-hidden="true" tabindex="-1"></a> link = {#1},</span> -<span id="cb544-7"><a href="#cb544-7" aria-hidden="true" tabindex="-1"></a> linkAttributeContextEnd = {)},</span> -<span id="cb544-8"><a href="#cb544-8" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb544-9"><a href="#cb544-9" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb544-10"><a href="#cb544-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb544-11"><a href="#cb544-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb544-12"><a href="#cb544-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb544-13"><a href="#cb544-13" aria-hidden="true" tabindex="-1"></a>foo [bar](#bar){key=value} baz</span> -<span id="cb544-14"><a href="#cb544-14" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb544-15"><a href="#cb544-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb544-16"><a href="#cb544-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb595"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb595-1"><a href="#cb595-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb595-2"><a href="#cb595-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[linkAttributes]{<span class="ex">markdown</span>}</span> +<span id="cb595-3"><a href="#cb595-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb595-4"><a href="#cb595-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb595-5"><a href="#cb595-5" aria-hidden="true" tabindex="-1"></a> linkAttributeContextBegin = {(},</span> +<span id="cb595-6"><a href="#cb595-6" aria-hidden="true" tabindex="-1"></a> link = {#1},</span> +<span id="cb595-7"><a href="#cb595-7" aria-hidden="true" tabindex="-1"></a> linkAttributeContextEnd = {)},</span> +<span id="cb595-8"><a href="#cb595-8" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb595-9"><a href="#cb595-9" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb595-10"><a href="#cb595-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb595-11"><a href="#cb595-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb595-12"><a href="#cb595-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb595-13"><a href="#cb595-13" aria-hidden="true" tabindex="-1"></a>foo [bar](#bar){key=value} baz</span> +<span id="cb595-14"><a href="#cb595-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb595-15"><a href="#cb595-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb595-16"><a href="#cb595-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb545"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb545-1"><a href="#cb545-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb596"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb596-1"><a href="#cb596-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>foo (bar) baz</p> </blockquote> -<h4 data-number="2.3.1.25" id="markdown-document-renderers"><span -class="header-section-number">2.3.1.25</span> Markdown Document +<h4 data-number="2.3.1.26" id="marked-text-renderer"><span +class="header-section-number">2.3.1.26</span> Marked Text Renderer</h4> +<p>The following macro is only produced, when the +<strong><code>mark</code></strong> option is enabled.</p> +<p>The <code>\markdownRendererMark</code> macro represents a span of +marked or highlighted text. The macro receives a single argument that +corresponds to the marked text.</p> +<h5 class="unnumbered" id="latex-example-84"><span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb597"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb597-1"><a href="#cb597-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb597-2"><a href="#cb597-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[mark]{<span class="ex">markdown</span>}</span> +<span id="cb597-3"><a href="#cb597-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soul</span>}</span> +<span id="cb597-4"><a href="#cb597-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb597-5"><a href="#cb597-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb597-6"><a href="#cb597-6" aria-hidden="true" tabindex="-1"></a> mark = {<span class="fu">\hl</span>{#1}},</span> +<span id="cb597-7"><a href="#cb597-7" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb597-8"><a href="#cb597-8" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb597-9"><a href="#cb597-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb597-10"><a href="#cb597-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb597-11"><a href="#cb597-11" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb597-12"><a href="#cb597-12" aria-hidden="true" tabindex="-1"></a>This ==is highlighted text.==</span> +<span id="cb597-13"><a href="#cb597-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb597-14"><a href="#cb597-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb597-15"><a href="#cb597-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb598"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb598-1"><a href="#cb598-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<p>This <mark>is highlighted text.</mark></p> +</blockquote> +<h4 data-number="2.3.1.27" id="markdown-document-renderers"><span +class="header-section-number">2.3.1.27</span> Markdown Document Renderers</h4> <p>The <code>\markdownRendererDocumentBegin</code> and <code>\markdownRendererDocumentEnd</code> macros represent the beginning @@ -9786,81 +10927,81 @@ number of markdown documents. Additionally, markdown documents may appear not only in a sequence, but several markdown documents may also be <em>nested</em>. Redefinitions of the macros should take this into account.</p> -<h5 class="unnumbered" id="latex-example-78"><span +<h5 class="unnumbered" id="latex-example-85"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>nested.md</code> with the following content:</p> -<div class="sourceCode" id="cb546"><pre -class="sourceCode md"><code class="sourceCode markdown"><span id="cb546-1"><a href="#cb546-1" aria-hidden="true" tabindex="-1"></a>This is a *nested* markdown document.</span></code></pre></div> +<div class="sourceCode" id="cb599"><pre +class="sourceCode md"><code class="sourceCode markdown"><span id="cb599-1"><a href="#cb599-1" aria-hidden="true" tabindex="-1"></a>This is a *nested* markdown document.</span></code></pre></div> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb547"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb547-1"><a href="#cb547-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb547-2"><a href="#cb547-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span> -<span id="cb547-3"><a href="#cb547-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb547-4"><a href="#cb547-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb547-5"><a href="#cb547-5" aria-hidden="true" tabindex="-1"></a> contentBlock = {<span class="co">%</span></span> -<span id="cb547-6"><a href="#cb547-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownInput</span>{#3}<span class="co">%</span></span> -<span id="cb547-7"><a href="#cb547-7" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb547-8"><a href="#cb547-8" aria-hidden="true" tabindex="-1"></a> documentBegin = {<span class="co">%</span></span> -<span id="cb547-9"><a href="#cb547-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb547-10"><a href="#cb547-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a document)}</span> -<span id="cb547-11"><a href="#cb547-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb547-12"><a href="#cb547-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span> -<span id="cb547-13"><a href="#cb547-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{snippet=first-nesting-level}<span class="co">%</span></span> -<span id="cb547-14"><a href="#cb547-14" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb547-15"><a href="#cb547-15" aria-hidden="true" tabindex="-1"></a> documentEnd = {<span class="co">%</span></span> -<span id="cb547-16"><a href="#cb547-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span> -<span id="cb547-17"><a href="#cb547-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb547-18"><a href="#cb547-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a document)}</span> -<span id="cb547-19"><a href="#cb547-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb547-20"><a href="#cb547-20" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb547-21"><a href="#cb547-21" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb547-22"><a href="#cb547-22" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb547-23"><a href="#cb547-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetupSnippet</span>{first-nesting-level}{</span> -<span id="cb547-24"><a href="#cb547-24" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb547-25"><a href="#cb547-25" aria-hidden="true" tabindex="-1"></a> documentBegin = {</span> -<span id="cb547-26"><a href="#cb547-26" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb547-27"><a href="#cb547-27" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a nested document)}</span> -<span id="cb547-28"><a href="#cb547-28" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb547-29"><a href="#cb547-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span> -<span id="cb547-30"><a href="#cb547-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{snippet=second-nesting-level-and-below}</span> -<span id="cb547-31"><a href="#cb547-31" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb547-32"><a href="#cb547-32" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb547-33"><a href="#cb547-33" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb547-34"><a href="#cb547-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetupSnippet</span>{second-nesting-level-and-below}{</span> -<span id="cb547-35"><a href="#cb547-35" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb547-36"><a href="#cb547-36" aria-hidden="true" tabindex="-1"></a> documentBegin = {</span> -<span id="cb547-37"><a href="#cb547-37" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb547-38"><a href="#cb547-38" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a nested document)}</span> -<span id="cb547-39"><a href="#cb547-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb547-40"><a href="#cb547-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span> -<span id="cb547-41"><a href="#cb547-41" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb547-42"><a href="#cb547-42" aria-hidden="true" tabindex="-1"></a> documentEnd = {</span> -<span id="cb547-43"><a href="#cb547-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span> -<span id="cb547-44"><a href="#cb547-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb547-45"><a href="#cb547-45" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a nested document)}</span> -<span id="cb547-46"><a href="#cb547-46" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> -<span id="cb547-47"><a href="#cb547-47" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb547-48"><a href="#cb547-48" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb547-49"><a href="#cb547-49" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb547-50"><a href="#cb547-50" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb547-51"><a href="#cb547-51" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb547-52"><a href="#cb547-52" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> -<span id="cb547-53"><a href="#cb547-53" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb547-54"><a href="#cb547-54" aria-hidden="true" tabindex="-1"></a>/nested.md</span> -<span id="cb547-55"><a href="#cb547-55" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb547-56"><a href="#cb547-56" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span> -<span id="cb547-57"><a href="#cb547-57" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb547-58"><a href="#cb547-58" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb547-59"><a href="#cb547-59" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb547-60"><a href="#cb547-60" aria-hidden="true" tabindex="-1"></a>Bar baz!</span> -<span id="cb547-61"><a href="#cb547-61" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb547-62"><a href="#cb547-62" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb547-63"><a href="#cb547-63" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb600"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb600-1"><a href="#cb600-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb600-2"><a href="#cb600-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span> +<span id="cb600-3"><a href="#cb600-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb600-4"><a href="#cb600-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb600-5"><a href="#cb600-5" aria-hidden="true" tabindex="-1"></a> contentBlock = {<span class="co">%</span></span> +<span id="cb600-6"><a href="#cb600-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownInput</span>{#3}<span class="co">%</span></span> +<span id="cb600-7"><a href="#cb600-7" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb600-8"><a href="#cb600-8" aria-hidden="true" tabindex="-1"></a> documentBegin = {<span class="co">%</span></span> +<span id="cb600-9"><a href="#cb600-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb600-10"><a href="#cb600-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a document)}</span> +<span id="cb600-11"><a href="#cb600-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb600-12"><a href="#cb600-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span> +<span id="cb600-13"><a href="#cb600-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{snippet=first-nesting-level}<span class="co">%</span></span> +<span id="cb600-14"><a href="#cb600-14" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb600-15"><a href="#cb600-15" aria-hidden="true" tabindex="-1"></a> documentEnd = {<span class="co">%</span></span> +<span id="cb600-16"><a href="#cb600-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span> +<span id="cb600-17"><a href="#cb600-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb600-18"><a href="#cb600-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a document)}</span> +<span id="cb600-19"><a href="#cb600-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb600-20"><a href="#cb600-20" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb600-21"><a href="#cb600-21" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb600-22"><a href="#cb600-22" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb600-23"><a href="#cb600-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetupSnippet</span>{first-nesting-level}{</span> +<span id="cb600-24"><a href="#cb600-24" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb600-25"><a href="#cb600-25" aria-hidden="true" tabindex="-1"></a> documentBegin = {</span> +<span id="cb600-26"><a href="#cb600-26" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb600-27"><a href="#cb600-27" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a nested document)}</span> +<span id="cb600-28"><a href="#cb600-28" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb600-29"><a href="#cb600-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span> +<span id="cb600-30"><a href="#cb600-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{snippet=second-nesting-level-and-below}</span> +<span id="cb600-31"><a href="#cb600-31" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb600-32"><a href="#cb600-32" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb600-33"><a href="#cb600-33" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb600-34"><a href="#cb600-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetupSnippet</span>{second-nesting-level-and-below}{</span> +<span id="cb600-35"><a href="#cb600-35" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb600-36"><a href="#cb600-36" aria-hidden="true" tabindex="-1"></a> documentBegin = {</span> +<span id="cb600-37"><a href="#cb600-37" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb600-38"><a href="#cb600-38" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a nested document)}</span> +<span id="cb600-39"><a href="#cb600-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb600-40"><a href="#cb600-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span> +<span id="cb600-41"><a href="#cb600-41" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb600-42"><a href="#cb600-42" aria-hidden="true" tabindex="-1"></a> documentEnd = {</span> +<span id="cb600-43"><a href="#cb600-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span> +<span id="cb600-44"><a href="#cb600-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb600-45"><a href="#cb600-45" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a nested document)}</span> +<span id="cb600-46"><a href="#cb600-46" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span> +<span id="cb600-47"><a href="#cb600-47" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb600-48"><a href="#cb600-48" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb600-49"><a href="#cb600-49" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb600-50"><a href="#cb600-50" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb600-51"><a href="#cb600-51" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb600-52"><a href="#cb600-52" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span> +<span id="cb600-53"><a href="#cb600-53" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb600-54"><a href="#cb600-54" aria-hidden="true" tabindex="-1"></a>/nested.md</span> +<span id="cb600-55"><a href="#cb600-55" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb600-56"><a href="#cb600-56" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span> +<span id="cb600-57"><a href="#cb600-57" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb600-58"><a href="#cb600-58" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb600-59"><a href="#cb600-59" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb600-60"><a href="#cb600-60" aria-hidden="true" tabindex="-1"></a>Bar baz!</span> +<span id="cb600-61"><a href="#cb600-61" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb600-62"><a href="#cb600-62" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb600-63"><a href="#cb600-63" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb548"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb548-1"><a href="#cb548-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb601"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb601-1"><a href="#cb601-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -9875,51 +11016,51 @@ contain the following text:</p> <p>Bar baz!</p> <p><em>(The end of a document)</em></p> </blockquote> -<h4 data-number="2.3.1.26" id="non-breaking-space-renderer"><span -class="header-section-number">2.3.1.26</span> Non-Breaking Space +<h4 data-number="2.3.1.28" id="non-breaking-space-renderer"><span +class="header-section-number">2.3.1.28</span> Non-Breaking Space Renderer</h4> <p>The <code>\markdownRendererNbsp</code> macro represents a non-breaking space.</p> -<h5 class="unnumbered" id="latex-example-79"><span +<h5 class="unnumbered" id="latex-example-86"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.bib</code> with the following content:</p> -<div class="sourceCode" id="cb549"><pre -class="sourceCode bib"><code class="sourceCode bibtex"><span id="cb549-1"><a href="#cb549-1" aria-hidden="true" tabindex="-1"></a><span class="va">@book</span>{<span class="ot">knuth:tex</span>,</span> -<span id="cb549-2"><a href="#cb549-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">author</span> = "<span class="st">Knuth, Donald Ervin</span>",</span> -<span id="cb549-3"><a href="#cb549-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">title</span> = "<span class="st">The </span><span class="ch">\TeX</span><span class="st"> book, volume A of Computers and typesetting</span>",</span> -<span id="cb549-4"><a href="#cb549-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">publisher</span> = "<span class="st">Addison-Wesley</span>",</span> -<span id="cb549-5"><a href="#cb549-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">year</span> = "<span class="st">1984</span>"</span> -<span id="cb549-6"><a href="#cb549-6" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> +<div class="sourceCode" id="cb602"><pre +class="sourceCode bib"><code class="sourceCode bibtex"><span id="cb602-1"><a href="#cb602-1" aria-hidden="true" tabindex="-1"></a><span class="va">@book</span>{<span class="ot">knuth:tex</span>,</span> +<span id="cb602-2"><a href="#cb602-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">author</span> = "<span class="st">Knuth, Donald Ervin</span>",</span> +<span id="cb602-3"><a href="#cb602-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">title</span> = "<span class="st">The </span><span class="ch">\TeX</span><span class="st"> book, volume A of Computers and typesetting</span>",</span> +<span id="cb602-4"><a href="#cb602-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">publisher</span> = "<span class="st">Addison-Wesley</span>",</span> +<span id="cb602-5"><a href="#cb602-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">year</span> = "<span class="st">1984</span>"</span> +<span id="cb602-6"><a href="#cb602-6" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb550"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb550-1"><a href="#cb550-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb550-2"><a href="#cb550-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[</span> -<span id="cb550-3"><a href="#cb550-3" aria-hidden="true" tabindex="-1"></a> citations,</span> -<span id="cb550-4"><a href="#cb550-4" aria-hidden="true" tabindex="-1"></a> citationNbsps,</span> -<span id="cb550-5"><a href="#cb550-5" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</span>}</span> -<span id="cb550-6"><a href="#cb550-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb550-7"><a href="#cb550-7" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb550-8"><a href="#cb550-8" aria-hidden="true" tabindex="-1"></a> nbsp = {<span class="ss">$</span><span class="sc">\cdot</span><span class="ss">$</span>},</span> -<span id="cb550-9"><a href="#cb550-9" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb550-10"><a href="#cb550-10" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb550-11"><a href="#cb550-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb550-12"><a href="#cb550-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb550-13"><a href="#cb550-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb550-14"><a href="#cb550-14" aria-hidden="true" tabindex="-1"></a>The TeXbook [@knuth:tex, p. 123 and 130] is good.</span> -<span id="cb550-15"><a href="#cb550-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb550-16"><a href="#cb550-16" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb550-17"><a href="#cb550-17" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliographystyle</span>{<span class="ex">plain</span>}</span> -<span id="cb550-18"><a href="#cb550-18" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliography</span>{<span class="ex">document.bib</span>}</span> -<span id="cb550-19"><a href="#cb550-19" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb550-20"><a href="#cb550-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb603"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb603-1"><a href="#cb603-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb603-2"><a href="#cb603-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[</span> +<span id="cb603-3"><a href="#cb603-3" aria-hidden="true" tabindex="-1"></a> citations,</span> +<span id="cb603-4"><a href="#cb603-4" aria-hidden="true" tabindex="-1"></a> citationNbsps,</span> +<span id="cb603-5"><a href="#cb603-5" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</span>}</span> +<span id="cb603-6"><a href="#cb603-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb603-7"><a href="#cb603-7" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb603-8"><a href="#cb603-8" aria-hidden="true" tabindex="-1"></a> nbsp = {<span class="ss">$</span><span class="sc">\cdot</span><span class="ss">$</span>},</span> +<span id="cb603-9"><a href="#cb603-9" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb603-10"><a href="#cb603-10" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb603-11"><a href="#cb603-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb603-12"><a href="#cb603-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb603-13"><a href="#cb603-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb603-14"><a href="#cb603-14" aria-hidden="true" tabindex="-1"></a>The TeXbook [@knuth:tex, p. 123 and 130] is good.</span> +<span id="cb603-15"><a href="#cb603-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb603-16"><a href="#cb603-16" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb603-17"><a href="#cb603-17" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliographystyle</span>{<span class="ex">plain</span>}</span> +<span id="cb603-18"><a href="#cb603-18" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliography</span>{<span class="ex">document.bib</span>}</span> +<span id="cb603-19"><a href="#cb603-19" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb603-20"><a href="#cb603-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX and BibTeX from the terminal:</p> -<div class="sourceCode" id="cb551"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb551-1"><a href="#cb551-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span> -<span id="cb551-2"><a href="#cb551-2" aria-hidden="true" tabindex="-1"></a><span class="ex">bibtex</span> document.aux</span> -<span id="cb551-3"><a href="#cb551-3" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span> -<span id="cb551-4"><a href="#cb551-4" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb604"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb604-1"><a href="#cb604-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span> +<span id="cb604-2"><a href="#cb604-2" aria-hidden="true" tabindex="-1"></a><span class="ex">bibtex</span> document.aux</span> +<span id="cb604-3"><a href="#cb604-3" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span> +<span id="cb604-4"><a href="#cb604-4" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -9930,95 +11071,95 @@ href="https://datatracker.ietf.org/doc/html/rfc3986#section-4.2">1</a> Donald Ervin Knuth. <em>The TeXbook, volume A of Computers and typesetting.</em> Addison-Wesley, 1984.</p> </blockquote> -<h4 data-number="2.3.1.27" id="note-renderer"><span -class="header-section-number">2.3.1.27</span> Note Renderer</h4> +<h4 data-number="2.3.1.29" id="note-renderer"><span +class="header-section-number">2.3.1.29</span> Note Renderer</h4> <p>The <code>\markdownRendererNote</code> macro represents a note. This macro will only be produced, when the <strong><code>notes</code></strong> option is enabled. The macro receives a single argument that corresponds to the note text.</p> -<h5 class="unnumbered" id="plain-tex-example-34">Plain <span +<h5 class="unnumbered" id="plain-tex-example-38">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb552"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb552-1"><a href="#cb552-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb552-2"><a href="#cb552-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionNotes</span>{true}</span> -<span id="cb552-3"><a href="#cb552-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererNote</span>#1{ (and <span class="fu">\lowercase</span>{#1})}</span> -<span id="cb552-4"><a href="#cb552-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb552-5"><a href="#cb552-5" aria-hidden="true" tabindex="-1"></a>This is some text[^1] and this is some other text[^2].</span> -<span id="cb552-6"><a href="#cb552-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb552-7"><a href="#cb552-7" aria-hidden="true" tabindex="-1"></a> [^1]: this is a note</span> -<span id="cb552-8"><a href="#cb552-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb552-9"><a href="#cb552-9" aria-hidden="true" tabindex="-1"></a> [^2]: this is some other note</span> -<span id="cb552-10"><a href="#cb552-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb552-11"><a href="#cb552-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb605"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb605-1"><a href="#cb605-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb605-2"><a href="#cb605-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionNotes</span>{true}</span> +<span id="cb605-3"><a href="#cb605-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererNote</span>#1{ (and <span class="fu">\lowercase</span>{#1})}</span> +<span id="cb605-4"><a href="#cb605-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb605-5"><a href="#cb605-5" aria-hidden="true" tabindex="-1"></a>This is some text[^1] and this is some other text[^2].</span> +<span id="cb605-6"><a href="#cb605-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb605-7"><a href="#cb605-7" aria-hidden="true" tabindex="-1"></a> [^1]: this is a note</span> +<span id="cb605-8"><a href="#cb605-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb605-9"><a href="#cb605-9" aria-hidden="true" tabindex="-1"></a> [^2]: this is some other note</span> +<span id="cb605-10"><a href="#cb605-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb605-11"><a href="#cb605-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb553"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb553-1"><a href="#cb553-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb606"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb606-1"><a href="#cb606-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>This is some text (and this is a note) and this is some other text (and this is some other note).</p> </blockquote> -<h5 class="unnumbered" id="latex-example-80"><span +<h5 class="unnumbered" id="latex-example-87"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb554"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb554-1"><a href="#cb554-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb554-2"><a href="#cb554-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[notes]{<span class="ex">markdown</span>}</span> -<span id="cb554-3"><a href="#cb554-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb554-4"><a href="#cb554-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb554-5"><a href="#cb554-5" aria-hidden="true" tabindex="-1"></a> note = { (and <span class="fu">\MakeLowercase</span>{#1})},</span> -<span id="cb554-6"><a href="#cb554-6" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb554-7"><a href="#cb554-7" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb554-8"><a href="#cb554-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb554-9"><a href="#cb554-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb554-10"><a href="#cb554-10" aria-hidden="true" tabindex="-1"></a>This is some text[^1] and this is some other text[^2].</span> -<span id="cb554-11"><a href="#cb554-11" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb554-12"><a href="#cb554-12" aria-hidden="true" tabindex="-1"></a> [^1]: this is a note</span> -<span id="cb554-13"><a href="#cb554-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb554-14"><a href="#cb554-14" aria-hidden="true" tabindex="-1"></a> [^2]: this is some other note</span> -<span id="cb554-15"><a href="#cb554-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb554-16"><a href="#cb554-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb607"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb607-1"><a href="#cb607-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb607-2"><a href="#cb607-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[notes]{<span class="ex">markdown</span>}</span> +<span id="cb607-3"><a href="#cb607-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb607-4"><a href="#cb607-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb607-5"><a href="#cb607-5" aria-hidden="true" tabindex="-1"></a> note = { (and <span class="fu">\MakeLowercase</span>{#1})},</span> +<span id="cb607-6"><a href="#cb607-6" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb607-7"><a href="#cb607-7" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb607-8"><a href="#cb607-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb607-9"><a href="#cb607-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb607-10"><a href="#cb607-10" aria-hidden="true" tabindex="-1"></a>This is some text[^1] and this is some other text[^2].</span> +<span id="cb607-11"><a href="#cb607-11" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb607-12"><a href="#cb607-12" aria-hidden="true" tabindex="-1"></a> [^1]: this is a note</span> +<span id="cb607-13"><a href="#cb607-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb607-14"><a href="#cb607-14" aria-hidden="true" tabindex="-1"></a> [^2]: this is some other note</span> +<span id="cb607-15"><a href="#cb607-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb607-16"><a href="#cb607-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb555"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb555-1"><a href="#cb555-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb608"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb608-1"><a href="#cb608-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>This is some text (and this is a note) and this is some other text (and this is some other note).</p> </blockquote> -<h5 class="unnumbered" id="context-example-47">Con<span +<h5 class="unnumbered" id="context-example-49">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb556"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb556-1"><a href="#cb556-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb556-2"><a href="#cb556-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[notes = yes]</span> -<span id="cb556-3"><a href="#cb556-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererNote</span>#1{ (and <span class="fu">\lowercase</span>{#1})}</span> -<span id="cb556-4"><a href="#cb556-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb556-5"><a href="#cb556-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb556-6"><a href="#cb556-6" aria-hidden="true" tabindex="-1"></a>This is some text[^1] and this is some other text[^2].</span> -<span id="cb556-7"><a href="#cb556-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb556-8"><a href="#cb556-8" aria-hidden="true" tabindex="-1"></a> [^1]: this is a note</span> -<span id="cb556-9"><a href="#cb556-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb556-10"><a href="#cb556-10" aria-hidden="true" tabindex="-1"></a> [^2]: this is some other note</span> -<span id="cb556-11"><a href="#cb556-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb556-12"><a href="#cb556-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb609"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb609-1"><a href="#cb609-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb609-2"><a href="#cb609-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[notes = yes]</span> +<span id="cb609-3"><a href="#cb609-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererNote</span>#1{ (and <span class="fu">\lowercase</span>{#1})}</span> +<span id="cb609-4"><a href="#cb609-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb609-5"><a href="#cb609-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb609-6"><a href="#cb609-6" aria-hidden="true" tabindex="-1"></a>This is some text[^1] and this is some other text[^2].</span> +<span id="cb609-7"><a href="#cb609-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb609-8"><a href="#cb609-8" aria-hidden="true" tabindex="-1"></a> [^1]: this is a note</span> +<span id="cb609-9"><a href="#cb609-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb609-10"><a href="#cb609-10" aria-hidden="true" tabindex="-1"></a> [^2]: this is some other note</span> +<span id="cb609-11"><a href="#cb609-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb609-12"><a href="#cb609-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb557"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb557-1"><a href="#cb557-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb610"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb610-1"><a href="#cb610-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>This is some text (and this is a note) and this is some other text (and this is some other note).</p> </blockquote> -<h4 data-number="2.3.1.28" id="ordered-list-renderers"><span -class="header-section-number">2.3.1.28</span> Ordered List +<h4 data-number="2.3.1.30" id="ordered-list-renderers"><span +class="header-section-number">2.3.1.30</span> Ordered List Renderers</h4> <p>The <code>\markdownRendererOlBegin</code> macro represents the beginning of an ordered list that contains an item with several @@ -10102,74 +11243,74 @@ paragraphs of text (the list is tight). This macro will only be produced, when the <strong><code>fancyLists</code></strong> and <strong><code>tightLists</code></strong> options are enabled. The macro receives no arguments.</p> -<h5 class="unnumbered" id="plain-tex-example-35">Plain <span +<h5 class="unnumbered" id="plain-tex-example-39">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb558"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb558-1"><a href="#cb558-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb558-2"><a href="#cb558-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTightLists</span>{true}</span> -<span id="cb558-3"><a href="#cb558-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStartNumber</span>{true}</span> -<span id="cb558-4"><a href="#cb558-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb558-5"><a href="#cb558-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span> -<span id="cb558-6"><a href="#cb558-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBeginTight</span>{ (}</span> -<span id="cb558-7"><a href="#cb558-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span> -<span id="cb558-8"><a href="#cb558-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span> -<span id="cb558-9"><a href="#cb558-9" aria-hidden="true" tabindex="-1"></a> the first</span> -<span id="cb558-10"><a href="#cb558-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> -<span id="cb558-11"><a href="#cb558-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span> -<span id="cb558-12"><a href="#cb558-12" aria-hidden="true" tabindex="-1"></a> , the second</span> -<span id="cb558-13"><a href="#cb558-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> -<span id="cb558-14"><a href="#cb558-14" aria-hidden="true" tabindex="-1"></a> , and the third</span> -<span id="cb558-15"><a href="#cb558-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb558-16"><a href="#cb558-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb558-17"><a href="#cb558-17" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb558-18"><a href="#cb558-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{}</span> -<span id="cb558-19"><a href="#cb558-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEndTight</span>{).}</span> -<span id="cb558-20"><a href="#cb558-20" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb558-21"><a href="#cb558-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb558-22"><a href="#cb558-22" aria-hidden="true" tabindex="-1"></a>This is a tight list</span> -<span id="cb558-23"><a href="#cb558-23" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb558-24"><a href="#cb558-24" aria-hidden="true" tabindex="-1"></a>1. item</span> -<span id="cb558-25"><a href="#cb558-25" aria-hidden="true" tabindex="-1"></a>2. item</span> -<span id="cb558-26"><a href="#cb558-26" aria-hidden="true" tabindex="-1"></a>3. item</span> -<span id="cb558-27"><a href="#cb558-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb558-28"><a href="#cb558-28" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb558-29"><a href="#cb558-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> -<span id="cb558-30"><a href="#cb558-30" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span> -<span id="cb558-31"><a href="#cb558-31" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> -<span id="cb558-32"><a href="#cb558-32" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb558-33"><a href="#cb558-33" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBegin</span>{}</span> -<span id="cb558-34"><a href="#cb558-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span> -<span id="cb558-35"><a href="#cb558-35" aria-hidden="true" tabindex="-1"></a> #1.<span class="fu">\kern</span> 0.5em<span class="co">%</span></span> -<span id="cb558-36"><a href="#cb558-36" aria-hidden="true" tabindex="-1"></a> This is the</span> -<span id="cb558-37"><a href="#cb558-37" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span> -<span id="cb558-38"><a href="#cb558-38" aria-hidden="true" tabindex="-1"></a> first</span> -<span id="cb558-39"><a href="#cb558-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> -<span id="cb558-40"><a href="#cb558-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span> -<span id="cb558-41"><a href="#cb558-41" aria-hidden="true" tabindex="-1"></a> second</span> -<span id="cb558-42"><a href="#cb558-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> -<span id="cb558-43"><a href="#cb558-43" aria-hidden="true" tabindex="-1"></a> third</span> -<span id="cb558-44"><a href="#cb558-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb558-45"><a href="#cb558-45" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb558-46"><a href="#cb558-46" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb558-47"><a href="#cb558-47" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{.<span class="fu">\par</span>}</span> -<span id="cb558-48"><a href="#cb558-48" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEnd</span>{}</span> -<span id="cb558-49"><a href="#cb558-49" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb558-50"><a href="#cb558-50" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb558-51"><a href="#cb558-51" aria-hidden="true" tabindex="-1"></a>This is a loose list</span> -<span id="cb558-52"><a href="#cb558-52" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb558-53"><a href="#cb558-53" aria-hidden="true" tabindex="-1"></a>1. item</span> -<span id="cb558-54"><a href="#cb558-54" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb558-55"><a href="#cb558-55" aria-hidden="true" tabindex="-1"></a>2. item</span> -<span id="cb558-56"><a href="#cb558-56" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb558-57"><a href="#cb558-57" aria-hidden="true" tabindex="-1"></a>3. item</span> -<span id="cb558-58"><a href="#cb558-58" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb558-59"><a href="#cb558-59" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb558-60"><a href="#cb558-60" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb611"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb611-1"><a href="#cb611-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb611-2"><a href="#cb611-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTightLists</span>{true}</span> +<span id="cb611-3"><a href="#cb611-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStartNumber</span>{true}</span> +<span id="cb611-4"><a href="#cb611-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb611-5"><a href="#cb611-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span> +<span id="cb611-6"><a href="#cb611-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBeginTight</span>{ (}</span> +<span id="cb611-7"><a href="#cb611-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span> +<span id="cb611-8"><a href="#cb611-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span> +<span id="cb611-9"><a href="#cb611-9" aria-hidden="true" tabindex="-1"></a> the first</span> +<span id="cb611-10"><a href="#cb611-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> +<span id="cb611-11"><a href="#cb611-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span> +<span id="cb611-12"><a href="#cb611-12" aria-hidden="true" tabindex="-1"></a> , the second</span> +<span id="cb611-13"><a href="#cb611-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> +<span id="cb611-14"><a href="#cb611-14" aria-hidden="true" tabindex="-1"></a> , and the third</span> +<span id="cb611-15"><a href="#cb611-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb611-16"><a href="#cb611-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb611-17"><a href="#cb611-17" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb611-18"><a href="#cb611-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{}</span> +<span id="cb611-19"><a href="#cb611-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEndTight</span>{).}</span> +<span id="cb611-20"><a href="#cb611-20" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb611-21"><a href="#cb611-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb611-22"><a href="#cb611-22" aria-hidden="true" tabindex="-1"></a>This is a tight list</span> +<span id="cb611-23"><a href="#cb611-23" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb611-24"><a href="#cb611-24" aria-hidden="true" tabindex="-1"></a>1. item</span> +<span id="cb611-25"><a href="#cb611-25" aria-hidden="true" tabindex="-1"></a>2. item</span> +<span id="cb611-26"><a href="#cb611-26" aria-hidden="true" tabindex="-1"></a>3. item</span> +<span id="cb611-27"><a href="#cb611-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb611-28"><a href="#cb611-28" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb611-29"><a href="#cb611-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> +<span id="cb611-30"><a href="#cb611-30" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span> +<span id="cb611-31"><a href="#cb611-31" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> +<span id="cb611-32"><a href="#cb611-32" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb611-33"><a href="#cb611-33" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBegin</span>{}</span> +<span id="cb611-34"><a href="#cb611-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span> +<span id="cb611-35"><a href="#cb611-35" aria-hidden="true" tabindex="-1"></a> #1.<span class="fu">\kern</span> 0.5em<span class="co">%</span></span> +<span id="cb611-36"><a href="#cb611-36" aria-hidden="true" tabindex="-1"></a> This is the</span> +<span id="cb611-37"><a href="#cb611-37" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span> +<span id="cb611-38"><a href="#cb611-38" aria-hidden="true" tabindex="-1"></a> first</span> +<span id="cb611-39"><a href="#cb611-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> +<span id="cb611-40"><a href="#cb611-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span> +<span id="cb611-41"><a href="#cb611-41" aria-hidden="true" tabindex="-1"></a> second</span> +<span id="cb611-42"><a href="#cb611-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> +<span id="cb611-43"><a href="#cb611-43" aria-hidden="true" tabindex="-1"></a> third</span> +<span id="cb611-44"><a href="#cb611-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb611-45"><a href="#cb611-45" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb611-46"><a href="#cb611-46" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb611-47"><a href="#cb611-47" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{.<span class="fu">\par</span>}</span> +<span id="cb611-48"><a href="#cb611-48" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEnd</span>{}</span> +<span id="cb611-49"><a href="#cb611-49" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb611-50"><a href="#cb611-50" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb611-51"><a href="#cb611-51" aria-hidden="true" tabindex="-1"></a>This is a loose list</span> +<span id="cb611-52"><a href="#cb611-52" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb611-53"><a href="#cb611-53" aria-hidden="true" tabindex="-1"></a>1. item</span> +<span id="cb611-54"><a href="#cb611-54" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb611-55"><a href="#cb611-55" aria-hidden="true" tabindex="-1"></a>2. item</span> +<span id="cb611-56"><a href="#cb611-56" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb611-57"><a href="#cb611-57" aria-hidden="true" tabindex="-1"></a>3. item</span> +<span id="cb611-58"><a href="#cb611-58" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb611-59"><a href="#cb611-59" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb611-60"><a href="#cb611-60" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb559"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb559-1"><a href="#cb559-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb612"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb612-1"><a href="#cb612-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -10182,77 +11323,77 @@ item).</p> <li><p>This is the third item.</p></li> </ol> </blockquote> -<h5 class="unnumbered" id="latex-example-81"><span +<h5 class="unnumbered" id="latex-example-88"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb560"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb560-1"><a href="#cb560-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb560-2"><a href="#cb560-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[tightLists, startNumber]{<span class="ex">markdown</span>}</span> -<span id="cb560-3"><a href="#cb560-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb560-4"><a href="#cb560-4" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb560-5"><a href="#cb560-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{</span> -<span id="cb560-6"><a href="#cb560-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb560-7"><a href="#cb560-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {},</span> -<span id="cb560-8"><a href="#cb560-8" aria-hidden="true" tabindex="-1"></a> olBeginTight = { (},</span> -<span id="cb560-9"><a href="#cb560-9" aria-hidden="true" tabindex="-1"></a> olItemWithNumber = {<span class="co">%</span></span> -<span id="cb560-10"><a href="#cb560-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span> -<span id="cb560-11"><a href="#cb560-11" aria-hidden="true" tabindex="-1"></a> the first</span> -<span id="cb560-12"><a href="#cb560-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> -<span id="cb560-13"><a href="#cb560-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span> -<span id="cb560-14"><a href="#cb560-14" aria-hidden="true" tabindex="-1"></a> , the second</span> -<span id="cb560-15"><a href="#cb560-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> -<span id="cb560-16"><a href="#cb560-16" aria-hidden="true" tabindex="-1"></a> , and the third</span> -<span id="cb560-17"><a href="#cb560-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb560-18"><a href="#cb560-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb560-19"><a href="#cb560-19" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb560-20"><a href="#cb560-20" aria-hidden="true" tabindex="-1"></a> olItemEnd = {},</span> -<span id="cb560-21"><a href="#cb560-21" aria-hidden="true" tabindex="-1"></a> olEndTight = {).},</span> -<span id="cb560-22"><a href="#cb560-22" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb560-23"><a href="#cb560-23" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb560-24"><a href="#cb560-24" aria-hidden="true" tabindex="-1"></a>This is a tight list</span> -<span id="cb560-25"><a href="#cb560-25" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb560-26"><a href="#cb560-26" aria-hidden="true" tabindex="-1"></a>1. item</span> -<span id="cb560-27"><a href="#cb560-27" aria-hidden="true" tabindex="-1"></a>2. item</span> -<span id="cb560-28"><a href="#cb560-28" aria-hidden="true" tabindex="-1"></a>3. item</span> -<span id="cb560-29"><a href="#cb560-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb560-30"><a href="#cb560-30" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb560-31"><a href="#cb560-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{</span> -<span id="cb560-32"><a href="#cb560-32" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb560-33"><a href="#cb560-33" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span> -<span id="cb560-34"><a href="#cb560-34" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span> -<span id="cb560-35"><a href="#cb560-35" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> -<span id="cb560-36"><a href="#cb560-36" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb560-37"><a href="#cb560-37" aria-hidden="true" tabindex="-1"></a> olBeginTight = {<span class="kw">\begin</span>{<span class="ex">enumerate</span>}},</span> -<span id="cb560-38"><a href="#cb560-38" aria-hidden="true" tabindex="-1"></a> olItemWithNumber = {<span class="co">%</span></span> -<span id="cb560-39"><a href="#cb560-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\item</span> This is the</span> -<span id="cb560-40"><a href="#cb560-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span> -<span id="cb560-41"><a href="#cb560-41" aria-hidden="true" tabindex="-1"></a> first</span> -<span id="cb560-42"><a href="#cb560-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> -<span id="cb560-43"><a href="#cb560-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span> -<span id="cb560-44"><a href="#cb560-44" aria-hidden="true" tabindex="-1"></a> second</span> -<span id="cb560-45"><a href="#cb560-45" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> -<span id="cb560-46"><a href="#cb560-46" aria-hidden="true" tabindex="-1"></a> third</span> -<span id="cb560-47"><a href="#cb560-47" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb560-48"><a href="#cb560-48" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb560-49"><a href="#cb560-49" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb560-50"><a href="#cb560-50" aria-hidden="true" tabindex="-1"></a> olItemEnd = {.},</span> -<span id="cb560-51"><a href="#cb560-51" aria-hidden="true" tabindex="-1"></a> olEnd = {<span class="kw">\end</span>{<span class="ex">enumerate</span>}},</span> -<span id="cb560-52"><a href="#cb560-52" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb560-53"><a href="#cb560-53" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb560-54"><a href="#cb560-54" aria-hidden="true" tabindex="-1"></a>This is a loose list</span> -<span id="cb560-55"><a href="#cb560-55" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb560-56"><a href="#cb560-56" aria-hidden="true" tabindex="-1"></a>1. item</span> -<span id="cb560-57"><a href="#cb560-57" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb560-58"><a href="#cb560-58" aria-hidden="true" tabindex="-1"></a>2. item</span> -<span id="cb560-59"><a href="#cb560-59" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb560-60"><a href="#cb560-60" aria-hidden="true" tabindex="-1"></a>3. item</span> -<span id="cb560-61"><a href="#cb560-61" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb560-62"><a href="#cb560-62" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb560-63"><a href="#cb560-63" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb613"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb613-1"><a href="#cb613-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb613-2"><a href="#cb613-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[tightLists, startNumber]{<span class="ex">markdown</span>}</span> +<span id="cb613-3"><a href="#cb613-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb613-4"><a href="#cb613-4" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb613-5"><a href="#cb613-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span> +<span id="cb613-6"><a href="#cb613-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb613-7"><a href="#cb613-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {},</span> +<span id="cb613-8"><a href="#cb613-8" aria-hidden="true" tabindex="-1"></a> olBeginTight = { (},</span> +<span id="cb613-9"><a href="#cb613-9" aria-hidden="true" tabindex="-1"></a> olItemWithNumber = {<span class="co">%</span></span> +<span id="cb613-10"><a href="#cb613-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span> +<span id="cb613-11"><a href="#cb613-11" aria-hidden="true" tabindex="-1"></a> the first</span> +<span id="cb613-12"><a href="#cb613-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> +<span id="cb613-13"><a href="#cb613-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span> +<span id="cb613-14"><a href="#cb613-14" aria-hidden="true" tabindex="-1"></a> , the second</span> +<span id="cb613-15"><a href="#cb613-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> +<span id="cb613-16"><a href="#cb613-16" aria-hidden="true" tabindex="-1"></a> , and the third</span> +<span id="cb613-17"><a href="#cb613-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb613-18"><a href="#cb613-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb613-19"><a href="#cb613-19" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb613-20"><a href="#cb613-20" aria-hidden="true" tabindex="-1"></a> olItemEnd = {},</span> +<span id="cb613-21"><a href="#cb613-21" aria-hidden="true" tabindex="-1"></a> olEndTight = {).},</span> +<span id="cb613-22"><a href="#cb613-22" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb613-23"><a href="#cb613-23" aria-hidden="true" tabindex="-1"></a>]</span> +<span id="cb613-24"><a href="#cb613-24" aria-hidden="true" tabindex="-1"></a>This is a tight list</span> +<span id="cb613-25"><a href="#cb613-25" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb613-26"><a href="#cb613-26" aria-hidden="true" tabindex="-1"></a>1. item</span> +<span id="cb613-27"><a href="#cb613-27" aria-hidden="true" tabindex="-1"></a>2. item</span> +<span id="cb613-28"><a href="#cb613-28" aria-hidden="true" tabindex="-1"></a>3. item</span> +<span id="cb613-29"><a href="#cb613-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb613-30"><a href="#cb613-30" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb613-31"><a href="#cb613-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span> +<span id="cb613-32"><a href="#cb613-32" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb613-33"><a href="#cb613-33" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span> +<span id="cb613-34"><a href="#cb613-34" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span> +<span id="cb613-35"><a href="#cb613-35" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> +<span id="cb613-36"><a href="#cb613-36" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb613-37"><a href="#cb613-37" aria-hidden="true" tabindex="-1"></a> olBeginTight = {<span class="kw">\begin</span>{<span class="ex">enumerate</span>}},</span> +<span id="cb613-38"><a href="#cb613-38" aria-hidden="true" tabindex="-1"></a> olItemWithNumber = {<span class="co">%</span></span> +<span id="cb613-39"><a href="#cb613-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\item</span> This is the</span> +<span id="cb613-40"><a href="#cb613-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span> +<span id="cb613-41"><a href="#cb613-41" aria-hidden="true" tabindex="-1"></a> first</span> +<span id="cb613-42"><a href="#cb613-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> +<span id="cb613-43"><a href="#cb613-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span> +<span id="cb613-44"><a href="#cb613-44" aria-hidden="true" tabindex="-1"></a> second</span> +<span id="cb613-45"><a href="#cb613-45" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> +<span id="cb613-46"><a href="#cb613-46" aria-hidden="true" tabindex="-1"></a> third</span> +<span id="cb613-47"><a href="#cb613-47" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb613-48"><a href="#cb613-48" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb613-49"><a href="#cb613-49" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb613-50"><a href="#cb613-50" aria-hidden="true" tabindex="-1"></a> olItemEnd = {.},</span> +<span id="cb613-51"><a href="#cb613-51" aria-hidden="true" tabindex="-1"></a> olEnd = {<span class="kw">\end</span>{<span class="ex">enumerate</span>}},</span> +<span id="cb613-52"><a href="#cb613-52" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb613-53"><a href="#cb613-53" aria-hidden="true" tabindex="-1"></a>]</span> +<span id="cb613-54"><a href="#cb613-54" aria-hidden="true" tabindex="-1"></a>This is a loose list</span> +<span id="cb613-55"><a href="#cb613-55" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb613-56"><a href="#cb613-56" aria-hidden="true" tabindex="-1"></a>1. item</span> +<span id="cb613-57"><a href="#cb613-57" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb613-58"><a href="#cb613-58" aria-hidden="true" tabindex="-1"></a>2. item</span> +<span id="cb613-59"><a href="#cb613-59" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb613-60"><a href="#cb613-60" aria-hidden="true" tabindex="-1"></a>3. item</span> +<span id="cb613-61"><a href="#cb613-61" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb613-62"><a href="#cb613-62" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb613-63"><a href="#cb613-63" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb561"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb561-1"><a href="#cb561-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb614"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb614-1"><a href="#cb614-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -10265,78 +11406,78 @@ item).</p> <li><p>This is the third item.</p></li> </ol> </blockquote> -<h5 class="unnumbered" id="context-example-48">Con<span +<h5 class="unnumbered" id="context-example-50">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb562"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb562-1"><a href="#cb562-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb562-2"><a href="#cb562-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span> -<span id="cb562-3"><a href="#cb562-3" aria-hidden="true" tabindex="-1"></a> [</span> -<span id="cb562-4"><a href="#cb562-4" aria-hidden="true" tabindex="-1"></a> tightLists = yes,</span> -<span id="cb562-5"><a href="#cb562-5" aria-hidden="true" tabindex="-1"></a> startNumber = yes,</span> -<span id="cb562-6"><a href="#cb562-6" aria-hidden="true" tabindex="-1"></a> ]</span> -<span id="cb562-7"><a href="#cb562-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb562-8"><a href="#cb562-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb562-9"><a href="#cb562-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span> -<span id="cb562-10"><a href="#cb562-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBeginTight</span>{ (}</span> -<span id="cb562-11"><a href="#cb562-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span> -<span id="cb562-12"><a href="#cb562-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span> -<span id="cb562-13"><a href="#cb562-13" aria-hidden="true" tabindex="-1"></a> the first</span> -<span id="cb562-14"><a href="#cb562-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> -<span id="cb562-15"><a href="#cb562-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span> -<span id="cb562-16"><a href="#cb562-16" aria-hidden="true" tabindex="-1"></a> , the second</span> -<span id="cb562-17"><a href="#cb562-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> -<span id="cb562-18"><a href="#cb562-18" aria-hidden="true" tabindex="-1"></a> , and the third</span> -<span id="cb562-19"><a href="#cb562-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb562-20"><a href="#cb562-20" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb562-21"><a href="#cb562-21" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb562-22"><a href="#cb562-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{}</span> -<span id="cb562-23"><a href="#cb562-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEndTight</span>{).}</span> -<span id="cb562-24"><a href="#cb562-24" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb562-25"><a href="#cb562-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb562-26"><a href="#cb562-26" aria-hidden="true" tabindex="-1"></a>This is a tight list</span> -<span id="cb562-27"><a href="#cb562-27" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb562-28"><a href="#cb562-28" aria-hidden="true" tabindex="-1"></a>1. item</span> -<span id="cb562-29"><a href="#cb562-29" aria-hidden="true" tabindex="-1"></a>2. item</span> -<span id="cb562-30"><a href="#cb562-30" aria-hidden="true" tabindex="-1"></a>3. item</span> -<span id="cb562-31"><a href="#cb562-31" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb562-32"><a href="#cb562-32" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb562-33"><a href="#cb562-33" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> -<span id="cb562-34"><a href="#cb562-34" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span> -<span id="cb562-35"><a href="#cb562-35" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> -<span id="cb562-36"><a href="#cb562-36" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb562-37"><a href="#cb562-37" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBegin</span>{<span class="fu">\startitemize</span>}</span> -<span id="cb562-38"><a href="#cb562-38" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span> -<span id="cb562-39"><a href="#cb562-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\sym</span>{#1.}</span> -<span id="cb562-40"><a href="#cb562-40" aria-hidden="true" tabindex="-1"></a> This is the</span> -<span id="cb562-41"><a href="#cb562-41" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span> -<span id="cb562-42"><a href="#cb562-42" aria-hidden="true" tabindex="-1"></a> first</span> -<span id="cb562-43"><a href="#cb562-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> -<span id="cb562-44"><a href="#cb562-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span> -<span id="cb562-45"><a href="#cb562-45" aria-hidden="true" tabindex="-1"></a> second</span> -<span id="cb562-46"><a href="#cb562-46" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> -<span id="cb562-47"><a href="#cb562-47" aria-hidden="true" tabindex="-1"></a> third</span> -<span id="cb562-48"><a href="#cb562-48" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb562-49"><a href="#cb562-49" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb562-50"><a href="#cb562-50" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb562-51"><a href="#cb562-51" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{.<span class="fu">\par</span>}</span> -<span id="cb562-52"><a href="#cb562-52" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEnd</span>{<span class="fu">\stopitemize</span>}</span> -<span id="cb562-53"><a href="#cb562-53" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb562-54"><a href="#cb562-54" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb562-55"><a href="#cb562-55" aria-hidden="true" tabindex="-1"></a>This is a loose list</span> -<span id="cb562-56"><a href="#cb562-56" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb562-57"><a href="#cb562-57" aria-hidden="true" tabindex="-1"></a>1. item</span> -<span id="cb562-58"><a href="#cb562-58" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb562-59"><a href="#cb562-59" aria-hidden="true" tabindex="-1"></a>2. item</span> -<span id="cb562-60"><a href="#cb562-60" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb562-61"><a href="#cb562-61" aria-hidden="true" tabindex="-1"></a>3. item</span> -<span id="cb562-62"><a href="#cb562-62" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb562-63"><a href="#cb562-63" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb562-64"><a href="#cb562-64" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb615"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb615-1"><a href="#cb615-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb615-2"><a href="#cb615-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span> +<span id="cb615-3"><a href="#cb615-3" aria-hidden="true" tabindex="-1"></a> [</span> +<span id="cb615-4"><a href="#cb615-4" aria-hidden="true" tabindex="-1"></a> tightLists = yes,</span> +<span id="cb615-5"><a href="#cb615-5" aria-hidden="true" tabindex="-1"></a> startNumber = yes,</span> +<span id="cb615-6"><a href="#cb615-6" aria-hidden="true" tabindex="-1"></a> ]</span> +<span id="cb615-7"><a href="#cb615-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb615-8"><a href="#cb615-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb615-9"><a href="#cb615-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span> +<span id="cb615-10"><a href="#cb615-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBeginTight</span>{ (}</span> +<span id="cb615-11"><a href="#cb615-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span> +<span id="cb615-12"><a href="#cb615-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span> +<span id="cb615-13"><a href="#cb615-13" aria-hidden="true" tabindex="-1"></a> the first</span> +<span id="cb615-14"><a href="#cb615-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> +<span id="cb615-15"><a href="#cb615-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span> +<span id="cb615-16"><a href="#cb615-16" aria-hidden="true" tabindex="-1"></a> , the second</span> +<span id="cb615-17"><a href="#cb615-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> +<span id="cb615-18"><a href="#cb615-18" aria-hidden="true" tabindex="-1"></a> , and the third</span> +<span id="cb615-19"><a href="#cb615-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb615-20"><a href="#cb615-20" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb615-21"><a href="#cb615-21" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb615-22"><a href="#cb615-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{}</span> +<span id="cb615-23"><a href="#cb615-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEndTight</span>{).}</span> +<span id="cb615-24"><a href="#cb615-24" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb615-25"><a href="#cb615-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb615-26"><a href="#cb615-26" aria-hidden="true" tabindex="-1"></a>This is a tight list</span> +<span id="cb615-27"><a href="#cb615-27" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb615-28"><a href="#cb615-28" aria-hidden="true" tabindex="-1"></a>1. item</span> +<span id="cb615-29"><a href="#cb615-29" aria-hidden="true" tabindex="-1"></a>2. item</span> +<span id="cb615-30"><a href="#cb615-30" aria-hidden="true" tabindex="-1"></a>3. item</span> +<span id="cb615-31"><a href="#cb615-31" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb615-32"><a href="#cb615-32" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb615-33"><a href="#cb615-33" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span> +<span id="cb615-34"><a href="#cb615-34" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span> +<span id="cb615-35"><a href="#cb615-35" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span> +<span id="cb615-36"><a href="#cb615-36" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb615-37"><a href="#cb615-37" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBegin</span>{<span class="fu">\startitemize</span>}</span> +<span id="cb615-38"><a href="#cb615-38" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span> +<span id="cb615-39"><a href="#cb615-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\sym</span>{#1.}</span> +<span id="cb615-40"><a href="#cb615-40" aria-hidden="true" tabindex="-1"></a> This is the</span> +<span id="cb615-41"><a href="#cb615-41" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span> +<span id="cb615-42"><a href="#cb615-42" aria-hidden="true" tabindex="-1"></a> first</span> +<span id="cb615-43"><a href="#cb615-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> +<span id="cb615-44"><a href="#cb615-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span> +<span id="cb615-45"><a href="#cb615-45" aria-hidden="true" tabindex="-1"></a> second</span> +<span id="cb615-46"><a href="#cb615-46" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> +<span id="cb615-47"><a href="#cb615-47" aria-hidden="true" tabindex="-1"></a> third</span> +<span id="cb615-48"><a href="#cb615-48" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb615-49"><a href="#cb615-49" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb615-50"><a href="#cb615-50" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb615-51"><a href="#cb615-51" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{.<span class="fu">\par</span>}</span> +<span id="cb615-52"><a href="#cb615-52" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEnd</span>{<span class="fu">\stopitemize</span>}</span> +<span id="cb615-53"><a href="#cb615-53" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb615-54"><a href="#cb615-54" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb615-55"><a href="#cb615-55" aria-hidden="true" tabindex="-1"></a>This is a loose list</span> +<span id="cb615-56"><a href="#cb615-56" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb615-57"><a href="#cb615-57" aria-hidden="true" tabindex="-1"></a>1. item</span> +<span id="cb615-58"><a href="#cb615-58" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb615-59"><a href="#cb615-59" aria-hidden="true" tabindex="-1"></a>2. item</span> +<span id="cb615-60"><a href="#cb615-60" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb615-61"><a href="#cb615-61" aria-hidden="true" tabindex="-1"></a>3. item</span> +<span id="cb615-62"><a href="#cb615-62" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb615-63"><a href="#cb615-63" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb615-64"><a href="#cb615-64" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb563"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb563-1"><a href="#cb563-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb616"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb616-1"><a href="#cb616-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -10349,75 +11490,8 @@ item).</p> <li><p>This is the third item.</p></li> </ol> </blockquote> -<h4 data-number="2.3.1.29" id="parenthesized-citations-renderer"><span -class="header-section-number">2.3.1.29</span> Parenthesized Citations -Renderer</h4> -<p>The <code>\markdownRendererCite</code> macro represents a string of -one or more parenthetical citations. This macro will only be produced, -when the <strong><code>citations</code></strong> option is enabled. The -macro receives the parameter <code>{</code>⟨<em>number of -citations</em>⟩<code>}</code> followed by ⟨<em>suppress author</em>⟩ -<code>{</code>⟨<em>prenote</em>⟩<code>}{</code>⟨<em>postnote</em>⟩<code>}{</code>⟨<em>name</em>⟩<code>}</code> -repeated ⟨<em>number of citations</em>⟩ times. The ⟨<em>suppress -author</em>⟩ parameter is either the token <code>-</code>, when the -author’s name is to be suppressed, or <code>+</code> otherwise.</p> -<h5 class="unnumbered" id="latex-example-82"><span -class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> -<p>Using a text editor, create a text document named -<code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb564"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb564-1"><a href="#cb564-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb564-2"><a href="#cb564-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[citations]{<span class="ex">markdown</span>}</span> -<span id="cb564-3"><a href="#cb564-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsCounter</span></span> -<span id="cb564-4"><a href="#cb564-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsTotal</span></span> -<span id="cb564-5"><a href="#cb564-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatletter</span></span> -<span id="cb564-6"><a href="#cb564-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\citations</span>#1#2#3#4{<span class="co">%</span></span> -<span id="cb564-7"><a href="#cb564-7" aria-hidden="true" tabindex="-1"></a> a parenthesized citation <span class="fu">\emph</span>{#4}</span> -<span id="cb564-8"><a href="#cb564-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\citationsCounter</span> by 1<span class="fu">\relax</span></span> -<span id="cb564-9"><a href="#cb564-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#2<span class="fu">\relax</span></span> -<span id="cb564-10"><a href="#cb564-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span> -<span id="cb564-11"><a href="#cb564-11" aria-hidden="true" tabindex="-1"></a> with a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span> -<span id="cb564-12"><a href="#cb564-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb564-13"><a href="#cb564-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> -<span id="cb564-14"><a href="#cb564-14" aria-hidden="true" tabindex="-1"></a> with a prefix <span class="fu">\emph</span>{#2}<span class="co">%</span></span> -<span id="cb564-15"><a href="#cb564-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span> -<span id="cb564-16"><a href="#cb564-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ </span>and a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span> -<span id="cb564-17"><a href="#cb564-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb564-18"><a href="#cb564-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb564-19"><a href="#cb564-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\citationsCounter</span>><span class="fu">\citationsTotal\relax</span></span> -<span id="cb564-20"><a href="#cb564-20" aria-hidden="true" tabindex="-1"></a> .<span class="co">%</span></span> -<span id="cb564-21"><a href="#cb564-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\@gobble</span></span> -<span id="cb564-22"><a href="#cb564-22" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> -<span id="cb564-23"><a href="#cb564-23" aria-hidden="true" tabindex="-1"></a> , and</span> -<span id="cb564-24"><a href="#cb564-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\citations</span>}</span> -<span id="cb564-25"><a href="#cb564-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatother</span></span> -<span id="cb564-26"><a href="#cb564-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb564-27"><a href="#cb564-27" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb564-28"><a href="#cb564-28" aria-hidden="true" tabindex="-1"></a> cite = {<span class="co">%</span></span> -<span id="cb564-29"><a href="#cb564-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsCounter</span>=1<span class="co">%</span></span> -<span id="cb564-30"><a href="#cb564-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsTotal</span>=#1<span class="co">%</span></span> -<span id="cb564-31"><a href="#cb564-31" aria-hidden="true" tabindex="-1"></a> This is</span> -<span id="cb564-32"><a href="#cb564-32" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\citations</span></span> -<span id="cb564-33"><a href="#cb564-33" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb564-34"><a href="#cb564-34" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb564-35"><a href="#cb564-35" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb564-36"><a href="#cb564-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb564-37"><a href="#cb564-37" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb564-38"><a href="#cb564-38" aria-hidden="true" tabindex="-1"></a>[see @abrahams90, pp. 12; @eijkhout91, pp. 34]</span> -<span id="cb564-39"><a href="#cb564-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb564-40"><a href="#cb564-40" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> -<p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb565"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb565-1"><a href="#cb565-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> -<p>A PDF document named <code>document.pdf</code> should be produced and -contain the following text:</p> -<blockquote> -<p>This is a parenthesized citation <em>abrahams90</em> with a prefix -see and a postfix <em>pp. 12</em>, and a citation <em>eijkhout91</em> -with a postfix <em>pp. 34</em>.</p> -</blockquote> -<h4 data-number="2.3.1.30" id="raw-content-renderers"><span -class="header-section-number">2.3.1.30</span> Raw Content Renderers</h4> +<h4 data-number="2.3.1.31" id="raw-content-renderers"><span +class="header-section-number">2.3.1.31</span> Raw Content Renderers</h4> <p>The <code>\markdownRendererInputRawInline</code> macro represents an inline raw span. The macro receives two arguments: the filename of a file contaning the inline raw span contents and the raw attribute that @@ -10430,63 +11504,63 @@ contaning the raw block and the raw attribute that designates the format of the raw block. This macro will only be produced, when the <strong><code>rawAttribute</code></strong> and <strong><code>fencedCode</code></strong> options are enabled.</p> -<h5 class="unnumbered" id="latex-example-83"><span +<h5 class="unnumbered" id="latex-example-89"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb566"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb566-1"><a href="#cb566-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb566-2"><a href="#cb566-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[rawAttribute, fencedCode]{<span class="ex">markdown</span>}</span> -<span id="cb566-3"><a href="#cb566-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span> -<span id="cb566-4"><a href="#cb566-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span> -<span id="cb566-5"><a href="#cb566-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\cs</span>_new:Nn</span> -<span id="cb566-6"><a href="#cb566-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\display</span>_raw_content:nn</span> -<span id="cb566-7"><a href="#cb566-7" aria-hidden="true" tabindex="-1"></a> {</span> -<span id="cb566-8"><a href="#cb566-8" aria-hidden="true" tabindex="-1"></a> <span class="co">% If the raw attribute is TeX, execute the content as a TeX document.</span></span> -<span id="cb566-9"><a href="#cb566-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\str</span>_if_eq:nnTF</span> -<span id="cb566-10"><a href="#cb566-10" aria-hidden="true" tabindex="-1"></a> { #2 }</span> -<span id="cb566-11"><a href="#cb566-11" aria-hidden="true" tabindex="-1"></a> { tex }</span> -<span id="cb566-12"><a href="#cb566-12" aria-hidden="true" tabindex="-1"></a> { <span class="fu">\markdownEscape</span> { #1 } }</span> -<span id="cb566-13"><a href="#cb566-13" aria-hidden="true" tabindex="-1"></a> <span class="co">% Otherwise, ignore the content.</span></span> -<span id="cb566-14"><a href="#cb566-14" aria-hidden="true" tabindex="-1"></a> { }</span> -<span id="cb566-15"><a href="#cb566-15" aria-hidden="true" tabindex="-1"></a> }</span> -<span id="cb566-16"><a href="#cb566-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb566-17"><a href="#cb566-17" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb566-18"><a href="#cb566-18" aria-hidden="true" tabindex="-1"></a> rawInline = { <span class="fu">\display</span>_raw_content:nn { #1 } { #2 } },</span> -<span id="cb566-19"><a href="#cb566-19" aria-hidden="true" tabindex="-1"></a> rawBlock = { <span class="fu">\display</span>_raw_content:nn { #1 } { #2 } }</span> -<span id="cb566-20"><a href="#cb566-20" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb566-21"><a href="#cb566-21" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb566-22"><a href="#cb566-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span> -<span id="cb566-23"><a href="#cb566-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb566-24"><a href="#cb566-24" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb566-25"><a href="#cb566-25" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$H_2 O$</span>`{=tex} is a liquid.</span> -<span id="cb566-26"><a href="#cb566-26" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb566-27"><a href="#cb566-27" aria-hidden="true" tabindex="-1"></a>``` {=html}</span> -<span id="cb566-28"><a href="#cb566-28" aria-hidden="true" tabindex="-1"></a><p>Here is some HTML content that will be ignored.</p></span> -<span id="cb566-29"><a href="#cb566-29" aria-hidden="true" tabindex="-1"></a>```</span> -<span id="cb566-30"><a href="#cb566-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb566-31"><a href="#cb566-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb617"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb617-1"><a href="#cb617-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb617-2"><a href="#cb617-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[rawAttribute, fencedCode]{<span class="ex">markdown</span>}</span> +<span id="cb617-3"><a href="#cb617-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span> +<span id="cb617-4"><a href="#cb617-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span> +<span id="cb617-5"><a href="#cb617-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\cs</span>_new:Nn</span> +<span id="cb617-6"><a href="#cb617-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\display</span>_raw_content:nn</span> +<span id="cb617-7"><a href="#cb617-7" aria-hidden="true" tabindex="-1"></a> {</span> +<span id="cb617-8"><a href="#cb617-8" aria-hidden="true" tabindex="-1"></a> <span class="co">% If the raw attribute is TeX, execute the content as a TeX document.</span></span> +<span id="cb617-9"><a href="#cb617-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\str</span>_if_eq:nnTF</span> +<span id="cb617-10"><a href="#cb617-10" aria-hidden="true" tabindex="-1"></a> { #2 }</span> +<span id="cb617-11"><a href="#cb617-11" aria-hidden="true" tabindex="-1"></a> { tex }</span> +<span id="cb617-12"><a href="#cb617-12" aria-hidden="true" tabindex="-1"></a> { <span class="fu">\markdownEscape</span> { #1 } }</span> +<span id="cb617-13"><a href="#cb617-13" aria-hidden="true" tabindex="-1"></a> <span class="co">% Otherwise, ignore the content.</span></span> +<span id="cb617-14"><a href="#cb617-14" aria-hidden="true" tabindex="-1"></a> { }</span> +<span id="cb617-15"><a href="#cb617-15" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb617-16"><a href="#cb617-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb617-17"><a href="#cb617-17" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb617-18"><a href="#cb617-18" aria-hidden="true" tabindex="-1"></a> rawInline = { <span class="fu">\display</span>_raw_content:nn { #1 } { #2 } },</span> +<span id="cb617-19"><a href="#cb617-19" aria-hidden="true" tabindex="-1"></a> rawBlock = { <span class="fu">\display</span>_raw_content:nn { #1 } { #2 } }</span> +<span id="cb617-20"><a href="#cb617-20" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb617-21"><a href="#cb617-21" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb617-22"><a href="#cb617-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span> +<span id="cb617-23"><a href="#cb617-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb617-24"><a href="#cb617-24" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb617-25"><a href="#cb617-25" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$H_2 O$</span>`{=tex} is a liquid.</span> +<span id="cb617-26"><a href="#cb617-26" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb617-27"><a href="#cb617-27" aria-hidden="true" tabindex="-1"></a>``` {=html}</span> +<span id="cb617-28"><a href="#cb617-28" aria-hidden="true" tabindex="-1"></a><p>Here is some HTML content that will be ignored.</p></span> +<span id="cb617-29"><a href="#cb617-29" aria-hidden="true" tabindex="-1"></a>```</span> +<span id="cb617-30"><a href="#cb617-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb617-31"><a href="#cb617-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb567"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb567-1"><a href="#cb567-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb618"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb618-1"><a href="#cb618-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>H<sub>2</sub>O is a liquid.</p> </blockquote> -<h4 data-number="2.3.1.31" id="section-renderers"><span -class="header-section-number">2.3.1.31</span> Section Renderers</h4> +<h4 data-number="2.3.1.32" id="section-renderers"><span +class="header-section-number">2.3.1.32</span> Section Renderers</h4> <p>The <code>\markdownRendererSectionBegin</code> and <code>\markdownRendererSectionEnd</code> macros represent the beginning and the end of a section based on headings.</p> -<h4 data-number="2.3.1.32" id="replacement-character-renderers"><span -class="header-section-number">2.3.1.32</span> Replacement Character +<h4 data-number="2.3.1.33" id="replacement-character-renderers"><span +class="header-section-number">2.3.1.33</span> Replacement Character Renderers</h4> <p>The <code>\markdownRendererReplacementCharacter</code> macro represents the U+0000 and U+FFFD Unicode characters. The macro receives no arguments.</p> -<h4 data-number="2.3.1.33" id="special-character-renderers"><span -class="header-section-number">2.3.1.33</span> Special Character +<h4 data-number="2.3.1.34" id="special-character-renderers"><span +class="header-section-number">2.3.1.34</span> Special Character Renderers</h4> <p>The following macros replace any special plain <span class="tex">T<sub>e</sub>X</span> characters, including the active pipe @@ -10516,306 +11590,407 @@ class="tex">T<sub>e</sub>X</span>t, in the input text:</p> <li><code>\markdownRendererUnderscore</code> replaces the underscore (<code>_</code>).</li> </ul> -<h5 class="unnumbered" id="plain-tex-example-36">Plain <span +<h5 class="unnumbered" id="plain-tex-example-40">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content. We will make the tilde behave as if it were written in <span class="tex">T<sub>e</sub>X</span>, where it represents a non-breaking space.</p> -<div class="sourceCode" id="cb568"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb568-1"><a href="#cb568-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb568-2"><a href="#cb568-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{~}</span> -<span id="cb568-3"><a href="#cb568-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb568-4"><a href="#cb568-4" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span> -<span id="cb568-5"><a href="#cb568-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb568-6"><a href="#cb568-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb619"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb619-1"><a href="#cb619-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb619-2"><a href="#cb619-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{~}</span> +<span id="cb619-3"><a href="#cb619-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb619-4"><a href="#cb619-4" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span> +<span id="cb619-5"><a href="#cb619-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb619-6"><a href="#cb619-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb569"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb569-1"><a href="#cb569-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb620"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb620-1"><a href="#cb620-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text, where the middot (<code>·</code>) denotes a non-breaking space:</p> <blockquote> <p>Bartel·Leendert van·der·Waerden</p> </blockquote> -<h5 class="unnumbered" id="latex-example-84"><span +<h5 class="unnumbered" id="latex-example-90"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content. We will make the tilde behave as if it were written in <span class="tex">T<sub>e</sub>X</span>, where it represents a non-breaking space.</p> -<div class="sourceCode" id="cb570"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb570-1"><a href="#cb570-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb570-2"><a href="#cb570-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb570-3"><a href="#cb570-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb570-4"><a href="#cb570-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb570-5"><a href="#cb570-5" aria-hidden="true" tabindex="-1"></a> tilde = ~,</span> -<span id="cb570-6"><a href="#cb570-6" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb570-7"><a href="#cb570-7" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb570-8"><a href="#cb570-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb570-9"><a href="#cb570-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb570-10"><a href="#cb570-10" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span> -<span id="cb570-11"><a href="#cb570-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb570-12"><a href="#cb570-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb621"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb621-1"><a href="#cb621-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb621-2"><a href="#cb621-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb621-3"><a href="#cb621-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb621-4"><a href="#cb621-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb621-5"><a href="#cb621-5" aria-hidden="true" tabindex="-1"></a> tilde = ~,</span> +<span id="cb621-6"><a href="#cb621-6" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb621-7"><a href="#cb621-7" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb621-8"><a href="#cb621-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb621-9"><a href="#cb621-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb621-10"><a href="#cb621-10" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span> +<span id="cb621-11"><a href="#cb621-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb621-12"><a href="#cb621-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb571"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb571-1"><a href="#cb571-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb622"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb622-1"><a href="#cb622-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text, where the middot (<code>·</code>) denotes a non-breaking space:</p> <blockquote> <p>Bartel·Leendert van·der·Waerden</p> </blockquote> -<h5 class="unnumbered" id="context-example-49">Con<span +<h5 class="unnumbered" id="context-example-51">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content. We will make the tilde behave as if it were written in <span class="tex">T<sub>e</sub>X</span>, where it represents a non-breaking space.</p> -<div class="sourceCode" id="cb572"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb572-1"><a href="#cb572-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb572-2"><a href="#cb572-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{~}</span> -<span id="cb572-3"><a href="#cb572-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb572-4"><a href="#cb572-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb572-5"><a href="#cb572-5" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span> -<span id="cb572-6"><a href="#cb572-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb572-7"><a href="#cb572-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb623"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb623-1"><a href="#cb623-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb623-2"><a href="#cb623-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{~}</span> +<span id="cb623-3"><a href="#cb623-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb623-4"><a href="#cb623-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb623-5"><a href="#cb623-5" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span> +<span id="cb623-6"><a href="#cb623-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb623-7"><a href="#cb623-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb573"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb573-1"><a href="#cb573-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb624"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb624-1"><a href="#cb624-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text, where the middot (<code>·</code>) denotes a non-breaking space:</p> <blockquote> <p>Bartel·Leendert van·der·Waerden</p> </blockquote> -<h4 data-number="2.3.1.34" id="strike-through-renderer"><span -class="header-section-number">2.3.1.34</span> Strike-Through +<h4 data-number="2.3.1.35" id="strike-through-renderer"><span +class="header-section-number">2.3.1.35</span> Strike-Through Renderer</h4> <p>The <code>\markdownRendererStrikeThrough</code> macro represents a strike-through span of text. The macro receives a single argument that corresponds to the striked-out span of text. This macro will only be produced, when the <strong><code>strikeThrough</code></strong> option is enabled.</p> -<h5 class="unnumbered" id="plain-tex-example-37">Plain <span +<h5 class="unnumbered" id="plain-tex-example-41">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb574"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb574-1"><a href="#cb574-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb574-2"><a href="#cb574-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStrikeThrough</span>{true}</span> -<span id="cb574-3"><a href="#cb574-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> soulutf8.sty</span> -<span id="cb574-4"><a href="#cb574-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\st</span>{#1}}</span> -<span id="cb574-5"><a href="#cb574-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb574-6"><a href="#cb574-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span> -<span id="cb574-7"><a href="#cb574-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb574-8"><a href="#cb574-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb625"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb625-1"><a href="#cb625-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb625-2"><a href="#cb625-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStrikeThrough</span>{true}</span> +<span id="cb625-3"><a href="#cb625-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> soulutf8.sty</span> +<span id="cb625-4"><a href="#cb625-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\st</span>{#1}}</span> +<span id="cb625-5"><a href="#cb625-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb625-6"><a href="#cb625-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span> +<span id="cb625-7"><a href="#cb625-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb625-8"><a href="#cb625-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb575"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb575-1"><a href="#cb575-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb626"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb626-1"><a href="#cb626-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>This is <del>a lunar roving vehicle</del> strike-through text.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-85"><span +<h5 class="unnumbered" id="latex-example-91"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb576"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb576-1"><a href="#cb576-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb576-2"><a href="#cb576-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[strikeThrough]{<span class="ex">markdown</span>}</span> -<span id="cb576-3"><a href="#cb576-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soulutf8</span>}</span> -<span id="cb576-4"><a href="#cb576-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb576-5"><a href="#cb576-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb576-6"><a href="#cb576-6" aria-hidden="true" tabindex="-1"></a> strikeThrough = {<span class="fu">\st</span>{#1}},</span> -<span id="cb576-7"><a href="#cb576-7" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb576-8"><a href="#cb576-8" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb576-9"><a href="#cb576-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb576-10"><a href="#cb576-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb576-11"><a href="#cb576-11" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span> -<span id="cb576-12"><a href="#cb576-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb576-13"><a href="#cb576-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb627"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb627-1"><a href="#cb627-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb627-2"><a href="#cb627-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[strikeThrough]{<span class="ex">markdown</span>}</span> +<span id="cb627-3"><a href="#cb627-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soulutf8</span>}</span> +<span id="cb627-4"><a href="#cb627-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb627-5"><a href="#cb627-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb627-6"><a href="#cb627-6" aria-hidden="true" tabindex="-1"></a> strikeThrough = {<span class="fu">\st</span>{#1}},</span> +<span id="cb627-7"><a href="#cb627-7" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb627-8"><a href="#cb627-8" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb627-9"><a href="#cb627-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb627-10"><a href="#cb627-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb627-11"><a href="#cb627-11" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span> +<span id="cb627-12"><a href="#cb627-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb627-13"><a href="#cb627-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb577"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb577-1"><a href="#cb577-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb628"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb628-1"><a href="#cb628-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>This is <del>a lunar roving vehicle</del> strike-through text.</p> </blockquote> -<h5 class="unnumbered" id="context-example-50">Con<span +<h5 class="unnumbered" id="context-example-52">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb578"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb578-1"><a href="#cb578-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb578-2"><a href="#cb578-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[strikeThrough = yes]</span> -<span id="cb578-3"><a href="#cb578-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\overstrikes</span>{#1}}</span> -<span id="cb578-4"><a href="#cb578-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb578-5"><a href="#cb578-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb578-6"><a href="#cb578-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span> -<span id="cb578-7"><a href="#cb578-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb578-8"><a href="#cb578-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb629"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb629-1"><a href="#cb629-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb629-2"><a href="#cb629-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[strikeThrough = yes]</span> +<span id="cb629-3"><a href="#cb629-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\overstrikes</span>{#1}}</span> +<span id="cb629-4"><a href="#cb629-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb629-5"><a href="#cb629-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb629-6"><a href="#cb629-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span> +<span id="cb629-7"><a href="#cb629-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb629-8"><a href="#cb629-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb579"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb579-1"><a href="#cb579-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb630"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb630-1"><a href="#cb630-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>This is <del>a lunar roving vehicle</del> strike-through text.</p> </blockquote> -<h4 data-number="2.3.1.35" id="subscript-renderer"><span -class="header-section-number">2.3.1.35</span> Subscript Renderer</h4> +<h4 data-number="2.3.1.36" id="subscript-renderer"><span +class="header-section-number">2.3.1.36</span> Subscript Renderer</h4> <p>The <code>\markdownRendererSubscript</code> macro represents a subscript span of text. The macro receives a single argument that corresponds to the subscript span of text. This macro will only be produced, when the <strong><code>subscripts</code></strong> option is enabled.</p> -<h5 class="unnumbered" id="plain-tex-example-38">Plain <span +<h5 class="unnumbered" id="plain-tex-example-42">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb580"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb580-1"><a href="#cb580-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb580-2"><a href="#cb580-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSubscripts</span>{true}</span> -<span id="cb580-3"><a href="#cb580-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSubscript</span>#1{ (#1 moles) and }</span> -<span id="cb580-4"><a href="#cb580-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb580-5"><a href="#cb580-5" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span> -<span id="cb580-6"><a href="#cb580-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb580-7"><a href="#cb580-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb631"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb631-1"><a href="#cb631-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb631-2"><a href="#cb631-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSubscripts</span>{true}</span> +<span id="cb631-3"><a href="#cb631-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSubscript</span>#1{ (#1 moles) and }</span> +<span id="cb631-4"><a href="#cb631-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb631-5"><a href="#cb631-5" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span> +<span id="cb631-6"><a href="#cb631-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb631-7"><a href="#cb631-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb581"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb581-1"><a href="#cb581-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb632"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb632-1"><a href="#cb632-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>H (2 moles) and O is a liquid.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-86"><span +<h5 class="unnumbered" id="latex-example-92"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb582"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb582-1"><a href="#cb582-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb582-2"><a href="#cb582-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[subscripts]{<span class="ex">markdown</span>}</span> -<span id="cb582-3"><a href="#cb582-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb582-4"><a href="#cb582-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb582-5"><a href="#cb582-5" aria-hidden="true" tabindex="-1"></a> subscript = { (#1 moles) and },</span> -<span id="cb582-6"><a href="#cb582-6" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb582-7"><a href="#cb582-7" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb582-8"><a href="#cb582-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb582-9"><a href="#cb582-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb582-10"><a href="#cb582-10" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span> -<span id="cb582-11"><a href="#cb582-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb582-12"><a href="#cb582-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb633"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb633-1"><a href="#cb633-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb633-2"><a href="#cb633-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[subscripts]{<span class="ex">markdown</span>}</span> +<span id="cb633-3"><a href="#cb633-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb633-4"><a href="#cb633-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb633-5"><a href="#cb633-5" aria-hidden="true" tabindex="-1"></a> subscript = { (#1 moles) and },</span> +<span id="cb633-6"><a href="#cb633-6" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb633-7"><a href="#cb633-7" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb633-8"><a href="#cb633-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb633-9"><a href="#cb633-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb633-10"><a href="#cb633-10" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span> +<span id="cb633-11"><a href="#cb633-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb633-12"><a href="#cb633-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb583"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb583-1"><a href="#cb583-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb634"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb634-1"><a href="#cb634-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>H (2 moles) and O is a liquid.</p> </blockquote> -<h5 class="unnumbered" id="context-example-51">Con<span +<h5 class="unnumbered" id="context-example-53">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb584"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb584-1"><a href="#cb584-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb584-2"><a href="#cb584-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[subscripts = yes]</span> -<span id="cb584-3"><a href="#cb584-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSubscript</span>#1{ (#1 moles) and }</span> -<span id="cb584-4"><a href="#cb584-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb584-5"><a href="#cb584-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb584-6"><a href="#cb584-6" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span> -<span id="cb584-7"><a href="#cb584-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb584-8"><a href="#cb584-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb635"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb635-1"><a href="#cb635-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb635-2"><a href="#cb635-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[subscripts = yes]</span> +<span id="cb635-3"><a href="#cb635-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSubscript</span>#1{ (#1 moles) and }</span> +<span id="cb635-4"><a href="#cb635-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb635-5"><a href="#cb635-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb635-6"><a href="#cb635-6" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span> +<span id="cb635-7"><a href="#cb635-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb635-8"><a href="#cb635-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb585"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb585-1"><a href="#cb585-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb636"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb636-1"><a href="#cb636-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>H (2 moles) and O is a liquid.</p> </blockquote> -<h4 data-number="2.3.1.36" id="superscript-renderer"><span -class="header-section-number">2.3.1.36</span> Superscript Renderer</h4> +<h4 data-number="2.3.1.37" id="superscript-renderer"><span +class="header-section-number">2.3.1.37</span> Superscript Renderer</h4> <p>The <code>\markdownRendererSuperscript</code> macro represents a superscript span of text. The macro receives a single argument that corresponds to the superscript span of text. This macro will only be produced, when the <strong><code>superscripts</code></strong> option is enabled.</p> -<h5 class="unnumbered" id="plain-tex-example-39">Plain <span +<h5 class="unnumbered" id="plain-tex-example-43">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb586"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb586-1"><a href="#cb586-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb586-2"><a href="#cb586-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSuperscripts</span>{true}</span> -<span id="cb586-3"><a href="#cb586-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSuperscript</span>#1{ taken to the power of #1}</span> -<span id="cb586-4"><a href="#cb586-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb586-5"><a href="#cb586-5" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span> -<span id="cb586-6"><a href="#cb586-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb586-7"><a href="#cb586-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb637"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb637-1"><a href="#cb637-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb637-2"><a href="#cb637-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSuperscripts</span>{true}</span> +<span id="cb637-3"><a href="#cb637-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSuperscript</span>#1{ taken to the power of #1}</span> +<span id="cb637-4"><a href="#cb637-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb637-5"><a href="#cb637-5" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span> +<span id="cb637-6"><a href="#cb637-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb637-7"><a href="#cb637-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb587"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb587-1"><a href="#cb587-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb638"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb638-1"><a href="#cb638-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>2 taken to the power of 10 is 1024.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-87"><span +<h5 class="unnumbered" id="latex-example-93"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb588"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb588-1"><a href="#cb588-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb588-2"><a href="#cb588-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[superscripts]{<span class="ex">markdown</span>}</span> -<span id="cb588-3"><a href="#cb588-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb588-4"><a href="#cb588-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb588-5"><a href="#cb588-5" aria-hidden="true" tabindex="-1"></a> superscript = { taken to the power of #1},</span> -<span id="cb588-6"><a href="#cb588-6" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb588-7"><a href="#cb588-7" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb588-8"><a href="#cb588-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb588-9"><a href="#cb588-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb588-10"><a href="#cb588-10" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span> -<span id="cb588-11"><a href="#cb588-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb588-12"><a href="#cb588-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb639"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb639-1"><a href="#cb639-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb639-2"><a href="#cb639-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[superscripts]{<span class="ex">markdown</span>}</span> +<span id="cb639-3"><a href="#cb639-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb639-4"><a href="#cb639-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb639-5"><a href="#cb639-5" aria-hidden="true" tabindex="-1"></a> superscript = { taken to the power of #1},</span> +<span id="cb639-6"><a href="#cb639-6" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb639-7"><a href="#cb639-7" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb639-8"><a href="#cb639-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb639-9"><a href="#cb639-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb639-10"><a href="#cb639-10" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span> +<span id="cb639-11"><a href="#cb639-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb639-12"><a href="#cb639-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb589"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb589-1"><a href="#cb589-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb640"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb640-1"><a href="#cb640-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>2 taken to the power of 10 is 1024.</p> </blockquote> -<h5 class="unnumbered" id="context-example-52">Con<span +<h5 class="unnumbered" id="context-example-54">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb590"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb590-1"><a href="#cb590-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb590-2"><a href="#cb590-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[superscripts = yes]</span> -<span id="cb590-3"><a href="#cb590-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSuperscript</span>#1{ taken to the power of #1}</span> -<span id="cb590-4"><a href="#cb590-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb590-5"><a href="#cb590-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb590-6"><a href="#cb590-6" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span> -<span id="cb590-7"><a href="#cb590-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb590-8"><a href="#cb590-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb641"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb641-1"><a href="#cb641-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb641-2"><a href="#cb641-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[superscripts = yes]</span> +<span id="cb641-3"><a href="#cb641-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSuperscript</span>#1{ taken to the power of #1}</span> +<span id="cb641-4"><a href="#cb641-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb641-5"><a href="#cb641-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb641-6"><a href="#cb641-6" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span> +<span id="cb641-7"><a href="#cb641-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb641-8"><a href="#cb641-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb591"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb591-1"><a href="#cb591-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb642"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb642-1"><a href="#cb642-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>2 taken to the power of 10 is 1024.</p> </blockquote> -<h4 data-number="2.3.1.37" id="table-renderer"><span -class="header-section-number">2.3.1.37</span> Table Renderer</h4> +<h4 data-number="2.3.1.38" id="table-attribute-context-renderers"><span +class="header-section-number">2.3.1.38</span> Table Attribute Context +Renderers</h4> +<p>The following macros are only produced, when the +<strong><code>tableCaptions</code></strong> and +<strong><code>tableAttributes</code></strong> options are enabled.</p> +<p>The <code>\markdownRendererTableAttributeContextBegin</code> and +<code>\markdownRendererTableAttributeContextEnd</code> macros represent +the beginning and the end of a context in which the attributes of a +table apply. The macros receive no arguments.</p> +<h5 class="unnumbered" id="latex-example-94"><span +class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> +<p>Using a text editor, create a text document named +<code>document.tex</code> with the following content:</p> +<div class="sourceCode" id="cb643"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb643-1"><a href="#cb643-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb643-2"><a href="#cb643-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[</span> +<span id="cb643-3"><a href="#cb643-3" aria-hidden="true" tabindex="-1"></a> pipeTables,</span> +<span id="cb643-4"><a href="#cb643-4" aria-hidden="true" tabindex="-1"></a> tableCaptions,</span> +<span id="cb643-5"><a href="#cb643-5" aria-hidden="true" tabindex="-1"></a> tableAttributes,</span> +<span id="cb643-6"><a href="#cb643-6" aria-hidden="true" tabindex="-1"></a> relativeReferences,</span> +<span id="cb643-7"><a href="#cb643-7" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</span>}</span> +<span id="cb643-8"><a href="#cb643-8" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span> +<span id="cb643-9"><a href="#cb643-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span> +<span id="cb643-10"><a href="#cb643-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb643-11"><a href="#cb643-11" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb643-12"><a href="#cb643-12" aria-hidden="true" tabindex="-1"></a> tableAttributeContextBegin = {</span> +<span id="cb643-13"><a href="#cb643-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span> +<span id="cb643-14"><a href="#cb643-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span> +<span id="cb643-15"><a href="#cb643-15" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb643-16"><a href="#cb643-16" aria-hidden="true" tabindex="-1"></a> attributeIdentifier = {</span> +<span id="cb643-17"><a href="#cb643-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span> +<span id="cb643-18"><a href="#cb643-18" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb643-19"><a href="#cb643-19" aria-hidden="true" tabindex="-1"></a> tableAttributeContextEnd = {</span> +<span id="cb643-20"><a href="#cb643-20" aria-hidden="true" tabindex="-1"></a> <span class="kw">\label</span>{<span class="ex">##1</span>}</span> +<span id="cb643-21"><a href="#cb643-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span> +<span id="cb643-22"><a href="#cb643-22" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb643-23"><a href="#cb643-23" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb643-24"><a href="#cb643-24" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb643-25"><a href="#cb643-25" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb643-26"><a href="#cb643-26" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb643-27"><a href="#cb643-27" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb643-28"><a href="#cb643-28" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb643-29"><a href="#cb643-29" aria-hidden="true" tabindex="-1"></a> tableAttributeContextEnd = {</span> +<span id="cb643-30"><a href="#cb643-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span> +<span id="cb643-31"><a href="#cb643-31" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb643-32"><a href="#cb643-32" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb643-33"><a href="#cb643-33" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb643-34"><a href="#cb643-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span> +<span id="cb643-35"><a href="#cb643-35" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb643-36"><a href="#cb643-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb643-37"><a href="#cb643-37" aria-hidden="true" tabindex="-1"></a>See Table <#example-table>.</span> +<span id="cb643-38"><a href="#cb643-38" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb643-39"><a href="#cb643-39" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span> +<span id="cb643-40"><a href="#cb643-40" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span> +<span id="cb643-41"><a href="#cb643-41" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span> +<span id="cb643-42"><a href="#cb643-42" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span> +<span id="cb643-43"><a href="#cb643-43" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span> +<span id="cb643-44"><a href="#cb643-44" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb643-45"><a href="#cb643-45" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax. {#example-table}</span> +<span id="cb643-46"><a href="#cb643-46" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb643-47"><a href="#cb643-47" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb644"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb644-1"><a href="#cb644-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<p>A PDF document named <code>document.pdf</code> should be produced and +contain the following text:</p> +<blockquote> +<p>See Table 1.</p> +<table> +<caption>Table 1. Demonstration of pipe table syntax.</caption> +<thead> +<tr class="header"> +<th style="text-align: right;">Right</th> +<th style="text-align: left;">Left</th> +<th>Default</th> +<th style="text-align: center;">Center</th> +</tr> +</thead> +<tbody> +<tr class="odd"> +<td style="text-align: right;">12</td> +<td style="text-align: left;">12</td> +<td>12</td> +<td style="text-align: center;">12</td> +</tr> +<tr class="even"> +<td style="text-align: right;">123</td> +<td style="text-align: left;">123</td> +<td>123</td> +<td style="text-align: center;">123</td> +</tr> +<tr class="odd"> +<td style="text-align: right;">1</td> +<td style="text-align: left;">1</td> +<td>1</td> +<td style="text-align: center;">1</td> +</tr> +</tbody> +</table> +</blockquote> +<h4 data-number="2.3.1.39" id="table-renderer"><span +class="header-section-number">2.3.1.39</span> Table Renderer</h4> <p>The <code>\markdownRendererTable</code> macro represents a table. This macro will only be produced, when the <strong><code>pipeTables</code></strong> option is enabled. The macro @@ -10836,71 +12011,71 @@ one of the following:</p> <li><code>c</code> – The corresponding column is centered.</li> <li><code>r</code> – The corresponding column is right-aligned.</li> </ul> -<h5 class="unnumbered" id="latex-example-88"><span +<h5 class="unnumbered" id="latex-example-95"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb592"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb592-1"><a href="#cb592-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb592-2"><a href="#cb592-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[pipeTables, tableCaptions]{<span class="ex">markdown</span>}</span> -<span id="cb592-3"><a href="#cb592-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\rowCounter</span></span> -<span id="cb592-4"><a href="#cb592-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\columnCounter</span></span> -<span id="cb592-5"><a href="#cb592-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatletter</span></span> -<span id="cb592-6"><a href="#cb592-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\processRow</span>#1{<span class="co">%</span></span> -<span id="cb592-7"><a href="#cb592-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\columnCounter</span>=1<span class="co">%</span></span> -<span id="cb592-8"><a href="#cb592-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\rowCounter</span>=0<span class="fu">\relax</span></span> -<span id="cb592-9"><a href="#cb592-9" aria-hidden="true" tabindex="-1"></a> As for the alignment,</span> -<span id="cb592-10"><a href="#cb592-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> -<span id="cb592-11"><a href="#cb592-11" aria-hidden="true" tabindex="-1"></a> In row <span class="fu">\the\rowCounter</span>,</span> -<span id="cb592-12"><a href="#cb592-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb592-13"><a href="#cb592-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\processColumn</span>#1</span> -<span id="cb592-14"><a href="#cb592-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\rowCounter</span> by 1<span class="fu">\relax</span></span> -<span id="cb592-15"><a href="#cb592-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\rowCounter</span>><span class="fu">\rowTotal\relax</span></span> -<span id="cb592-16"><a href="#cb592-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\@gobble</span></span> -<span id="cb592-17"><a href="#cb592-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\processRow</span>}<span class="co">%</span></span> -<span id="cb592-18"><a href="#cb592-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\processColumn</span>#1{<span class="co">%</span></span> -<span id="cb592-19"><a href="#cb592-19" aria-hidden="true" tabindex="-1"></a> column number <span class="fu">\the\columnCounter</span>{}</span> -<span id="cb592-20"><a href="#cb592-20" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\rowCounter</span>=0<span class="fu">\relax</span></span> -<span id="cb592-21"><a href="#cb592-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1d{}has default alignment<span class="fu">\fi</span></span> -<span id="cb592-22"><a href="#cb592-22" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1l{}is left-aligned<span class="fu">\fi</span></span> -<span id="cb592-23"><a href="#cb592-23" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1c{}is centered<span class="fu">\fi</span></span> -<span id="cb592-24"><a href="#cb592-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1r{}is right-aligned<span class="fu">\fi</span></span> -<span id="cb592-25"><a href="#cb592-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> -<span id="cb592-26"><a href="#cb592-26" aria-hidden="true" tabindex="-1"></a> says <span class="fu">\emph</span>{#1}<span class="co">%</span></span> -<span id="cb592-27"><a href="#cb592-27" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb592-28"><a href="#cb592-28" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\columnCounter</span> by 1<span class="fu">\relax</span></span> -<span id="cb592-29"><a href="#cb592-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\columnCounter</span><<span class="fu">\columnTotal\relax</span>, <span class="fu">\fi</span></span> -<span id="cb592-30"><a href="#cb592-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\columnCounter</span>=<span class="fu">\columnTotal\relax</span>, and <span class="fu">\fi</span></span> -<span id="cb592-31"><a href="#cb592-31" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\columnCounter</span>><span class="fu">\columnTotal\relax</span></span> -<span id="cb592-32"><a href="#cb592-32" aria-hidden="true" tabindex="-1"></a> .<span class="fu">\expandafter\@gobble</span></span> -<span id="cb592-33"><a href="#cb592-33" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\processColumn</span>}<span class="co">%</span></span> -<span id="cb592-34"><a href="#cb592-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatother</span></span> -<span id="cb592-35"><a href="#cb592-35" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb592-36"><a href="#cb592-36" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb592-37"><a href="#cb592-37" aria-hidden="true" tabindex="-1"></a> table = {<span class="co">%</span></span> -<span id="cb592-38"><a href="#cb592-38" aria-hidden="true" tabindex="-1"></a> This is a table with caption <span class="fu">\emph</span>{#1} that is #3 colums wide</span> -<span id="cb592-39"><a href="#cb592-39" aria-hidden="true" tabindex="-1"></a> and #2 rows long.</span> -<span id="cb592-40"><a href="#cb592-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\rowCounter</span>=0<span class="co">%</span></span> -<span id="cb592-41"><a href="#cb592-41" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\rowTotal</span>{#2}<span class="co">%</span></span> -<span id="cb592-42"><a href="#cb592-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\columnTotal</span>{#3}<span class="co">%</span></span> -<span id="cb592-43"><a href="#cb592-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\processRow</span></span> -<span id="cb592-44"><a href="#cb592-44" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb592-45"><a href="#cb592-45" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb592-46"><a href="#cb592-46" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb592-47"><a href="#cb592-47" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb592-48"><a href="#cb592-48" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb592-49"><a href="#cb592-49" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span> -<span id="cb592-50"><a href="#cb592-50" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span> -<span id="cb592-51"><a href="#cb592-51" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span> -<span id="cb592-52"><a href="#cb592-52" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span> -<span id="cb592-53"><a href="#cb592-53" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span> -<span id="cb592-54"><a href="#cb592-54" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb592-55"><a href="#cb592-55" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax</span> -<span id="cb592-56"><a href="#cb592-56" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb592-57"><a href="#cb592-57" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> -<p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb593"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb593-1"><a href="#cb593-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb645"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb645-1"><a href="#cb645-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb645-2"><a href="#cb645-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[pipeTables, tableCaptions]{<span class="ex">markdown</span>}</span> +<span id="cb645-3"><a href="#cb645-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\rowCounter</span></span> +<span id="cb645-4"><a href="#cb645-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\columnCounter</span></span> +<span id="cb645-5"><a href="#cb645-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatletter</span></span> +<span id="cb645-6"><a href="#cb645-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\processRow</span>#1{<span class="co">%</span></span> +<span id="cb645-7"><a href="#cb645-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\columnCounter</span>=1<span class="co">%</span></span> +<span id="cb645-8"><a href="#cb645-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\rowCounter</span>=0<span class="fu">\relax</span></span> +<span id="cb645-9"><a href="#cb645-9" aria-hidden="true" tabindex="-1"></a> As for the alignment,</span> +<span id="cb645-10"><a href="#cb645-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> +<span id="cb645-11"><a href="#cb645-11" aria-hidden="true" tabindex="-1"></a> In row <span class="fu">\the\rowCounter</span>,</span> +<span id="cb645-12"><a href="#cb645-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb645-13"><a href="#cb645-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\processColumn</span>#1</span> +<span id="cb645-14"><a href="#cb645-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\rowCounter</span> by 1<span class="fu">\relax</span></span> +<span id="cb645-15"><a href="#cb645-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\rowCounter</span>><span class="fu">\rowTotal\relax</span></span> +<span id="cb645-16"><a href="#cb645-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\@gobble</span></span> +<span id="cb645-17"><a href="#cb645-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\processRow</span>}<span class="co">%</span></span> +<span id="cb645-18"><a href="#cb645-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\processColumn</span>#1{<span class="co">%</span></span> +<span id="cb645-19"><a href="#cb645-19" aria-hidden="true" tabindex="-1"></a> column number <span class="fu">\the\columnCounter</span>{}</span> +<span id="cb645-20"><a href="#cb645-20" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\rowCounter</span>=0<span class="fu">\relax</span></span> +<span id="cb645-21"><a href="#cb645-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1d{}has default alignment<span class="fu">\fi</span></span> +<span id="cb645-22"><a href="#cb645-22" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1l{}is left-aligned<span class="fu">\fi</span></span> +<span id="cb645-23"><a href="#cb645-23" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1c{}is centered<span class="fu">\fi</span></span> +<span id="cb645-24"><a href="#cb645-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1r{}is right-aligned<span class="fu">\fi</span></span> +<span id="cb645-25"><a href="#cb645-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> +<span id="cb645-26"><a href="#cb645-26" aria-hidden="true" tabindex="-1"></a> says <span class="fu">\emph</span>{#1}<span class="co">%</span></span> +<span id="cb645-27"><a href="#cb645-27" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> +<span id="cb645-28"><a href="#cb645-28" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\columnCounter</span> by 1<span class="fu">\relax</span></span> +<span id="cb645-29"><a href="#cb645-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\columnCounter</span><<span class="fu">\columnTotal\relax</span>, <span class="fu">\fi</span></span> +<span id="cb645-30"><a href="#cb645-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\columnCounter</span>=<span class="fu">\columnTotal\relax</span>, and <span class="fu">\fi</span></span> +<span id="cb645-31"><a href="#cb645-31" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\columnCounter</span>><span class="fu">\columnTotal\relax</span></span> +<span id="cb645-32"><a href="#cb645-32" aria-hidden="true" tabindex="-1"></a> .<span class="fu">\expandafter\@gobble</span></span> +<span id="cb645-33"><a href="#cb645-33" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\processColumn</span>}<span class="co">%</span></span> +<span id="cb645-34"><a href="#cb645-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatother</span></span> +<span id="cb645-35"><a href="#cb645-35" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb645-36"><a href="#cb645-36" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb645-37"><a href="#cb645-37" aria-hidden="true" tabindex="-1"></a> table = {<span class="co">%</span></span> +<span id="cb645-38"><a href="#cb645-38" aria-hidden="true" tabindex="-1"></a> This is a table with caption <span class="fu">\emph</span>{#1} that is #3 colums wide</span> +<span id="cb645-39"><a href="#cb645-39" aria-hidden="true" tabindex="-1"></a> and #2 rows long.</span> +<span id="cb645-40"><a href="#cb645-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\rowCounter</span>=0<span class="co">%</span></span> +<span id="cb645-41"><a href="#cb645-41" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\rowTotal</span>{#2}<span class="co">%</span></span> +<span id="cb645-42"><a href="#cb645-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\columnTotal</span>{#3}<span class="co">%</span></span> +<span id="cb645-43"><a href="#cb645-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\processRow</span></span> +<span id="cb645-44"><a href="#cb645-44" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb645-45"><a href="#cb645-45" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb645-46"><a href="#cb645-46" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb645-47"><a href="#cb645-47" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb645-48"><a href="#cb645-48" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb645-49"><a href="#cb645-49" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span> +<span id="cb645-50"><a href="#cb645-50" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span> +<span id="cb645-51"><a href="#cb645-51" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span> +<span id="cb645-52"><a href="#cb645-52" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span> +<span id="cb645-53"><a href="#cb645-53" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span> +<span id="cb645-54"><a href="#cb645-54" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb645-55"><a href="#cb645-55" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax</span> +<span id="cb645-56"><a href="#cb645-56" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb645-57"><a href="#cb645-57" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb646"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb646-1"><a href="#cb646-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -10918,35 +12093,36 @@ column number 4 says <em>12</em>. In row 3, column number 1 says number 1 says <em>1</em>, column number 2 says <em>1</em>, column number 3 says <em>1</em>, and column number 4 says <em>1</em>.</p> </blockquote> -<h4 data-number="2.3.1.38" id="tex-math-renderers"><span -class="header-section-number">2.3.1.38</span> Tex Math Renderers</h4> +<h4 data-number="2.3.1.40" id="tex-math-renderers"><span +class="header-section-number">2.3.1.40</span> <span +class="tex">T<sub>e</sub>X</span> Math Renderers</h4> <p>The <code>\markdownRendererInlineMath</code> and <code>\markdownRendererDisplayMath</code> macros represent inline and display <span class="tex">T<sub>e</sub>X</span> math. Both macros -receive a single argument that corresponds to the tex math content. -These macros will only be produced, when the -<strong><code>texMathDollars</code></strong>, +receive a single argument that corresponds to the <span +class="tex">T<sub>e</sub>X</span> math content. These macros will only +be produced, when the <strong><code>texMathDollars</code></strong>, <strong><code>texMathSingleBackslash</code></strong>, or <strong><code>texMathDoubleBackslash</code></strong> option are enabled.</p> -<h5 class="unnumbered" id="plain-tex-example-40">Plain <span +<h5 class="unnumbered" id="plain-tex-example-44">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb594"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb594-1"><a href="#cb594-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb594-2"><a href="#cb594-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDollars</span>{true}</span> -<span id="cb594-3"><a href="#cb594-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInlineMath</span>#1{<span class="ss">$#1</span><span class="sc">\dots</span><span class="ss">$</span>}</span> -<span id="cb594-4"><a href="#cb594-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDisplayMath</span>#1{<span class="ss">$$#1</span><span class="sc">\eqno</span><span class="ss">(1)$$</span>}</span> -<span id="cb594-5"><a href="#cb594-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb594-6"><a href="#cb594-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span> -<span id="cb594-7"><a href="#cb594-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb594-8"><a href="#cb594-8" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span> -<span id="cb594-9"><a href="#cb594-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb594-10"><a href="#cb594-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb647"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb647-1"><a href="#cb647-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb647-2"><a href="#cb647-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDollars</span>{true}</span> +<span id="cb647-3"><a href="#cb647-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInlineMath</span>#1{<span class="ss">$#1</span><span class="sc">\dots</span><span class="ss">$</span>}</span> +<span id="cb647-4"><a href="#cb647-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDisplayMath</span>#1{<span class="ss">$$#1</span><span class="sc">\eqno</span><span class="ss">(1)$$</span>}</span> +<span id="cb647-5"><a href="#cb647-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb647-6"><a href="#cb647-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span> +<span id="cb647-7"><a href="#cb647-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb647-8"><a href="#cb647-8" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span> +<span id="cb647-9"><a href="#cb647-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb647-10"><a href="#cb647-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb595"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb595-1"><a href="#cb595-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb648"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb648-1"><a href="#cb648-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -10956,26 +12132,26 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup>…</span>< \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx\eqno(1)$$</span></p> </blockquote> -<h5 class="unnumbered" id="latex-example-89"><span +<h5 class="unnumbered" id="latex-example-96"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb596"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb596-1"><a href="#cb596-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb596-2"><a href="#cb596-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathDollars]{<span class="ex">markdown</span>}</span> -<span id="cb596-3"><a href="#cb596-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">amsmath</span>}</span> -<span id="cb596-4"><a href="#cb596-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInlineMath</span>#1{<span class="kw">\begin</span>{<span class="ex">math</span>}<span class="ss">#1</span><span class="sc">\dots\end</span><span class="ss">{math}}</span></span> -<span id="cb596-5"><a href="#cb596-5" aria-hidden="true" tabindex="-1"></a><span class="sc">\def\markdownRendererDisplayMath</span><span class="ss">#1{</span><span class="kw">\begin</span>{<span class="ex">equation</span>}<span class="ss">#1</span><span class="sc">\end</span><span class="ss">{equation}}</span></span> -<span id="cb596-6"><a href="#cb596-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb596-7"><a href="#cb596-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb596-8"><a href="#cb596-8" aria-hidden="true" tabindex="-1"></a><span class="er">$</span><span class="ss">E=mc^2</span><span class="er">$</span></span> -<span id="cb596-9"><a href="#cb596-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb596-10"><a href="#cb596-10" aria-hidden="true" tabindex="-1"></a><span class="er">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx</span><span class="er">$$</span></span> -<span id="cb596-11"><a href="#cb596-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb596-12"><a href="#cb596-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb649"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb649-1"><a href="#cb649-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb649-2"><a href="#cb649-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathDollars]{<span class="ex">markdown</span>}</span> +<span id="cb649-3"><a href="#cb649-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">amsmath</span>}</span> +<span id="cb649-4"><a href="#cb649-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInlineMath</span>#1{<span class="kw">\begin</span>{<span class="ex">math</span>}<span class="ss">#1</span><span class="sc">\dots\end</span><span class="ss">{math}}</span></span> +<span id="cb649-5"><a href="#cb649-5" aria-hidden="true" tabindex="-1"></a><span class="sc">\def\markdownRendererDisplayMath</span><span class="ss">#1{</span><span class="kw">\begin</span>{<span class="ex">equation</span>}<span class="ss">#1</span><span class="sc">\end</span><span class="ss">{equation}}</span></span> +<span id="cb649-6"><a href="#cb649-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb649-7"><a href="#cb649-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb649-8"><a href="#cb649-8" aria-hidden="true" tabindex="-1"></a><span class="er">$</span><span class="ss">E=mc^2</span><span class="er">$</span></span> +<span id="cb649-9"><a href="#cb649-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb649-10"><a href="#cb649-10" aria-hidden="true" tabindex="-1"></a><span class="er">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx</span><span class="er">$$</span></span> +<span id="cb649-11"><a href="#cb649-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb649-12"><a href="#cb649-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb597"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb597-1"><a href="#cb597-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb650"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb650-1"><a href="#cb650-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -10984,25 +12160,25 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup>…</span>< <p><span class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em> (1)</span></p> </blockquote> -<h5 class="unnumbered" id="context-example-53">Con<span +<h5 class="unnumbered" id="context-example-55">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb598"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb598-1"><a href="#cb598-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb598-2"><a href="#cb598-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathDollars = yes]</span> -<span id="cb598-3"><a href="#cb598-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInlineMath</span>#1{<span class="ss">$#1</span><span class="sc">\dots</span><span class="ss">$</span>}<span class="co">%</span></span> -<span id="cb598-4"><a href="#cb598-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDisplayMath</span>#1{<span class="fu">\placeformula\startformula</span>#1<span class="fu">\stopformula</span>}<span class="co">%</span></span> -<span id="cb598-5"><a href="#cb598-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb598-6"><a href="#cb598-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb598-7"><a href="#cb598-7" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span> -<span id="cb598-8"><a href="#cb598-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb598-9"><a href="#cb598-9" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span> -<span id="cb598-10"><a href="#cb598-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb598-11"><a href="#cb598-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb651"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb651-1"><a href="#cb651-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb651-2"><a href="#cb651-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathDollars = yes]</span> +<span id="cb651-3"><a href="#cb651-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInlineMath</span>#1{<span class="ss">$#1</span><span class="sc">\dots</span><span class="ss">$</span>}<span class="co">%</span></span> +<span id="cb651-4"><a href="#cb651-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDisplayMath</span>#1{<span class="fu">\placeformula\startformula</span>#1<span class="fu">\stopformula</span>}<span class="co">%</span></span> +<span id="cb651-5"><a href="#cb651-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb651-6"><a href="#cb651-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb651-7"><a href="#cb651-7" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span> +<span id="cb651-8"><a href="#cb651-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb651-9"><a href="#cb651-9" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span> +<span id="cb651-10"><a href="#cb651-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb651-11"><a href="#cb651-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb599"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb599-1"><a href="#cb599-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb652"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb652-1"><a href="#cb652-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -11011,92 +12187,29 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup>…</span>< <p><span class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em> (1)</span></p> </blockquote> -<h4 data-number="2.3.1.39" id="text-citations-renderer"><span -class="header-section-number">2.3.1.39</span> Text Citations -Renderer</h4> -<p>The <code>\markdownRendererTextCite</code> macro represents a string -of one or more text citations. This macro will only be produced, when -the <strong><code>citations</code></strong> option is enabled. The macro -receives parameters in the same format as the -<code>\markdownRendererCite</code> macro.</p> -<h5 class="unnumbered" id="latex-example-90"><span -class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> -<p>Using a text editor, create a text document named -<code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb600"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb600-1"><a href="#cb600-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb600-2"><a href="#cb600-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[citations]{<span class="ex">markdown</span>}</span> -<span id="cb600-3"><a href="#cb600-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsCounter</span></span> -<span id="cb600-4"><a href="#cb600-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsTotal</span></span> -<span id="cb600-5"><a href="#cb600-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatletter</span></span> -<span id="cb600-6"><a href="#cb600-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\citations</span>#1#2#3#4{<span class="co">%</span></span> -<span id="cb600-7"><a href="#cb600-7" aria-hidden="true" tabindex="-1"></a> a text citation <span class="fu">\emph</span>{#4}</span> -<span id="cb600-8"><a href="#cb600-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\citationsCounter</span> by 1<span class="fu">\relax</span></span> -<span id="cb600-9"><a href="#cb600-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#2<span class="fu">\relax</span></span> -<span id="cb600-10"><a href="#cb600-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span> -<span id="cb600-11"><a href="#cb600-11" aria-hidden="true" tabindex="-1"></a> with a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span> -<span id="cb600-12"><a href="#cb600-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb600-13"><a href="#cb600-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> -<span id="cb600-14"><a href="#cb600-14" aria-hidden="true" tabindex="-1"></a> with a prefix <span class="fu">\emph</span>{#2}<span class="co">%</span></span> -<span id="cb600-15"><a href="#cb600-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span> -<span id="cb600-16"><a href="#cb600-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ </span>and a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span> -<span id="cb600-17"><a href="#cb600-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb600-18"><a href="#cb600-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span> -<span id="cb600-19"><a href="#cb600-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\citationsCounter</span>><span class="fu">\citationsTotal\relax</span></span> -<span id="cb600-20"><a href="#cb600-20" aria-hidden="true" tabindex="-1"></a> .<span class="co">%</span></span> -<span id="cb600-21"><a href="#cb600-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\@gobble</span></span> -<span id="cb600-22"><a href="#cb600-22" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span> -<span id="cb600-23"><a href="#cb600-23" aria-hidden="true" tabindex="-1"></a> , and</span> -<span id="cb600-24"><a href="#cb600-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\citations</span>}</span> -<span id="cb600-25"><a href="#cb600-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatother</span></span> -<span id="cb600-26"><a href="#cb600-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb600-27"><a href="#cb600-27" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb600-28"><a href="#cb600-28" aria-hidden="true" tabindex="-1"></a> textCite = {<span class="co">%</span></span> -<span id="cb600-29"><a href="#cb600-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsCounter</span>=1<span class="co">%</span></span> -<span id="cb600-30"><a href="#cb600-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsTotal</span>=#1<span class="co">%</span></span> -<span id="cb600-31"><a href="#cb600-31" aria-hidden="true" tabindex="-1"></a> This is</span> -<span id="cb600-32"><a href="#cb600-32" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\citations</span></span> -<span id="cb600-33"><a href="#cb600-33" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb600-34"><a href="#cb600-34" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb600-35"><a href="#cb600-35" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb600-36"><a href="#cb600-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb600-37"><a href="#cb600-37" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb600-38"><a href="#cb600-38" aria-hidden="true" tabindex="-1"></a>@abrahams90 [pp. 12; also @eijkhout91]</span> -<span id="cb600-39"><a href="#cb600-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb600-40"><a href="#cb600-40" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> -<p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb601"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb601-1"><a href="#cb601-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> -<p>A PDF document named <code>document.pdf</code> should be produced and -contain the following text:</p> -<blockquote> -<p>This is a text citation <em>abrahams90</em> with a postfix -<em>pp. 12</em>, and a citation <em>eijkhout91</em> with a prefix -<em>also</em>.</p> -</blockquote> -<h4 data-number="2.3.1.40" id="thematic-break-renderer"><span -class="header-section-number">2.3.1.40</span> Thematic Break +<h4 data-number="2.3.1.41" id="thematic-break-renderer"><span +class="header-section-number">2.3.1.41</span> Thematic Break Renderer</h4> <p>The <code>\markdownRendererThematicBreak</code> macro represents a thematic break. The macro receives no arguments.</p> -<h5 class="unnumbered" id="plain-tex-example-41">Plain <span +<h5 class="unnumbered" id="plain-tex-example-45">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb602"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb602-1"><a href="#cb602-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb602-2"><a href="#cb602-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererThematicBreak</span>{<span class="fu">\vfil\break</span>}</span> -<span id="cb602-3"><a href="#cb602-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb602-4"><a href="#cb602-4" aria-hidden="true" tabindex="-1"></a>This is the first page.</span> -<span id="cb602-5"><a href="#cb602-5" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb602-6"><a href="#cb602-6" aria-hidden="true" tabindex="-1"></a>***</span> -<span id="cb602-7"><a href="#cb602-7" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb602-8"><a href="#cb602-8" aria-hidden="true" tabindex="-1"></a>This is the second page.</span> -<span id="cb602-9"><a href="#cb602-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb602-10"><a href="#cb602-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb653"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb653-1"><a href="#cb653-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb653-2"><a href="#cb653-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererThematicBreak</span>{<span class="fu">\vfil\break</span>}</span> +<span id="cb653-3"><a href="#cb653-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb653-4"><a href="#cb653-4" aria-hidden="true" tabindex="-1"></a>This is the first page.</span> +<span id="cb653-5"><a href="#cb653-5" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb653-6"><a href="#cb653-6" aria-hidden="true" tabindex="-1"></a>***</span> +<span id="cb653-7"><a href="#cb653-7" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb653-8"><a href="#cb653-8" aria-hidden="true" tabindex="-1"></a>This is the second page.</span> +<span id="cb653-9"><a href="#cb653-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb653-10"><a href="#cb653-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb603"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb603-1"><a href="#cb603-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb654"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb654-1"><a href="#cb654-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -11104,30 +12217,30 @@ contain the following text:</p> <hr /> <p>This is the second page.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-91"><span +<h5 class="unnumbered" id="latex-example-97"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb604"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb604-1"><a href="#cb604-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb604-2"><a href="#cb604-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb604-3"><a href="#cb604-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb604-4"><a href="#cb604-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb604-5"><a href="#cb604-5" aria-hidden="true" tabindex="-1"></a> thematicBreak = <span class="fu">\newpage</span>,</span> -<span id="cb604-6"><a href="#cb604-6" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb604-7"><a href="#cb604-7" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb604-8"><a href="#cb604-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb604-9"><a href="#cb604-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb604-10"><a href="#cb604-10" aria-hidden="true" tabindex="-1"></a>This is the first page.</span> -<span id="cb604-11"><a href="#cb604-11" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb604-12"><a href="#cb604-12" aria-hidden="true" tabindex="-1"></a>***</span> -<span id="cb604-13"><a href="#cb604-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb604-14"><a href="#cb604-14" aria-hidden="true" tabindex="-1"></a>This is the second page.</span> -<span id="cb604-15"><a href="#cb604-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb604-16"><a href="#cb604-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb655"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb655-1"><a href="#cb655-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb655-2"><a href="#cb655-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb655-3"><a href="#cb655-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb655-4"><a href="#cb655-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb655-5"><a href="#cb655-5" aria-hidden="true" tabindex="-1"></a> thematicBreak = <span class="fu">\newpage</span>,</span> +<span id="cb655-6"><a href="#cb655-6" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb655-7"><a href="#cb655-7" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb655-8"><a href="#cb655-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb655-9"><a href="#cb655-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb655-10"><a href="#cb655-10" aria-hidden="true" tabindex="-1"></a>This is the first page.</span> +<span id="cb655-11"><a href="#cb655-11" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb655-12"><a href="#cb655-12" aria-hidden="true" tabindex="-1"></a>***</span> +<span id="cb655-13"><a href="#cb655-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb655-14"><a href="#cb655-14" aria-hidden="true" tabindex="-1"></a>This is the second page.</span> +<span id="cb655-15"><a href="#cb655-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb655-16"><a href="#cb655-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb605"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb605-1"><a href="#cb605-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb656"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb656-1"><a href="#cb656-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -11135,25 +12248,25 @@ contain the following text:</p> <hr /> <p>This is the second page.</p> </blockquote> -<h5 class="unnumbered" id="context-example-54">Con<span +<h5 class="unnumbered" id="context-example-56">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb606"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb606-1"><a href="#cb606-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb606-2"><a href="#cb606-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererThematicBreak</span>{<span class="fu">\page</span>[yes]}</span> -<span id="cb606-3"><a href="#cb606-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb606-4"><a href="#cb606-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb606-5"><a href="#cb606-5" aria-hidden="true" tabindex="-1"></a>This is the first page.</span> -<span id="cb606-6"><a href="#cb606-6" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb606-7"><a href="#cb606-7" aria-hidden="true" tabindex="-1"></a>***</span> -<span id="cb606-8"><a href="#cb606-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb606-9"><a href="#cb606-9" aria-hidden="true" tabindex="-1"></a>This is the second page.</span> -<span id="cb606-10"><a href="#cb606-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb606-11"><a href="#cb606-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb657"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb657-1"><a href="#cb657-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb657-2"><a href="#cb657-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererThematicBreak</span>{<span class="fu">\page</span>[yes]}</span> +<span id="cb657-3"><a href="#cb657-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb657-4"><a href="#cb657-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb657-5"><a href="#cb657-5" aria-hidden="true" tabindex="-1"></a>This is the first page.</span> +<span id="cb657-6"><a href="#cb657-6" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb657-7"><a href="#cb657-7" aria-hidden="true" tabindex="-1"></a>***</span> +<span id="cb657-8"><a href="#cb657-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb657-9"><a href="#cb657-9" aria-hidden="true" tabindex="-1"></a>This is the second page.</span> +<span id="cb657-10"><a href="#cb657-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb657-11"><a href="#cb657-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb607"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb607-1"><a href="#cb607-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb658"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb658-1"><a href="#cb658-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -11161,8 +12274,8 @@ contain the following text:</p> <hr /> <p>This is the second page.</p> </blockquote> -<h4 data-number="2.3.1.41" id="tickbox-renderers"><span -class="header-section-number">2.3.1.41</span> Tickbox Renderers</h4> +<h4 data-number="2.3.1.42" id="tickbox-renderers"><span +class="header-section-number">2.3.1.42</span> Tickbox Renderers</h4> <p>The macros named <code>\markdownRendererTickedBox</code>, <code>\markdownRendererHalfTickedBox</code>, and <code>\markdownRendererUntickedBox</code> represent ticked and unticked @@ -11171,28 +12284,28 @@ boxes, respectively. These macros will either be produced, when the Ballot Box with X (☒, U+2612), Hourglass (⌛, U+231B) or Ballot Box (☐, U+2610) Unicode characters are encountered in the markdown input, respectively.</p> -<h5 class="unnumbered" id="latex-example-92"><span +<h5 class="unnumbered" id="latex-example-98"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb608"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb608-1"><a href="#cb608-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb608-2"><a href="#cb608-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[taskLists]{<span class="ex">markdown</span>}</span> -<span id="cb608-3"><a href="#cb608-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb608-4"><a href="#cb608-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb608-5"><a href="#cb608-5" aria-hidden="true" tabindex="-1"></a> untickedBox = No,</span> -<span id="cb608-6"><a href="#cb608-6" aria-hidden="true" tabindex="-1"></a> tickedBox = Yes,</span> -<span id="cb608-7"><a href="#cb608-7" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb608-8"><a href="#cb608-8" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb608-9"><a href="#cb608-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb608-10"><a href="#cb608-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb608-11"><a href="#cb608-11" aria-hidden="true" tabindex="-1"></a>- [ ] you can't.</span> -<span id="cb608-12"><a href="#cb608-12" aria-hidden="true" tabindex="-1"></a>- [x] I can!</span> -<span id="cb608-13"><a href="#cb608-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb608-14"><a href="#cb608-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<div class="sourceCode" id="cb659"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb659-1"><a href="#cb659-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb659-2"><a href="#cb659-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[taskLists]{<span class="ex">markdown</span>}</span> +<span id="cb659-3"><a href="#cb659-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb659-4"><a href="#cb659-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb659-5"><a href="#cb659-5" aria-hidden="true" tabindex="-1"></a> untickedBox = No,</span> +<span id="cb659-6"><a href="#cb659-6" aria-hidden="true" tabindex="-1"></a> tickedBox = Yes,</span> +<span id="cb659-7"><a href="#cb659-7" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb659-8"><a href="#cb659-8" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb659-9"><a href="#cb659-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb659-10"><a href="#cb659-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb659-11"><a href="#cb659-11" aria-hidden="true" tabindex="-1"></a>- [ ] you can't.</span> +<span id="cb659-12"><a href="#cb659-12" aria-hidden="true" tabindex="-1"></a>- [x] I can!</span> +<span id="cb659-13"><a href="#cb659-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb659-14"><a href="#cb659-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb609"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb609-1"><a href="#cb609-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb660"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb660-1"><a href="#cb660-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -11201,24 +12314,24 @@ contain the following text:</p> <li>Yes I can!</li> </ul> </blockquote> -<h5 class="unnumbered" id="context-example-55">Con<span +<h5 class="unnumbered" id="context-example-57">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb610"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb610-1"><a href="#cb610-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb610-2"><a href="#cb610-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[taskLists = yes]</span> -<span id="cb610-3"><a href="#cb610-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUntickedBox</span>{No}</span> -<span id="cb610-4"><a href="#cb610-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTickedBox</span>{Yes}</span> -<span id="cb610-5"><a href="#cb610-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb610-6"><a href="#cb610-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb610-7"><a href="#cb610-7" aria-hidden="true" tabindex="-1"></a>- [ ] you can't.</span> -<span id="cb610-8"><a href="#cb610-8" aria-hidden="true" tabindex="-1"></a>- [x] I can!</span> -<span id="cb610-9"><a href="#cb610-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb610-10"><a href="#cb610-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb661"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb661-1"><a href="#cb661-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb661-2"><a href="#cb661-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[taskLists = yes]</span> +<span id="cb661-3"><a href="#cb661-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUntickedBox</span>{No}</span> +<span id="cb661-4"><a href="#cb661-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTickedBox</span>{Yes}</span> +<span id="cb661-5"><a href="#cb661-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb661-6"><a href="#cb661-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb661-7"><a href="#cb661-7" aria-hidden="true" tabindex="-1"></a>- [ ] you can't.</span> +<span id="cb661-8"><a href="#cb661-8" aria-hidden="true" tabindex="-1"></a>- [x] I can!</span> +<span id="cb661-9"><a href="#cb661-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb661-10"><a href="#cb661-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb611"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb611-1"><a href="#cb611-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb662"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb662-1"><a href="#cb662-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -11227,8 +12340,8 @@ contain the following text:</p> <li>Yes I can!</li> </ul> </blockquote> -<h4 data-number="2.3.1.42" id="yamlmetadatarenderers"><span -class="header-section-number">2.3.1.42</span> YAML Metadata +<h4 data-number="2.3.1.43" id="yamlmetadatarenderers"><span +class="header-section-number">2.3.1.43</span> YAML Metadata Renderers</h4> <p>The <code>\markdownRendererJekyllDataBegin</code> macro represents the beginning of a <abbr>yaml</abbr> document. This macro will only be @@ -11286,88 +12399,88 @@ be produced when the <strong><code>jekyllData</code></strong> option is enabled. The macro receives one argument: the scalar key in the parent structure, cast to a string following <abbr>yaml</abbr> serialization rules.</p> -<h5 class="unnumbered" id="plain-tex-example-42">Plain <span +<h5 class="unnumbered" id="plain-tex-example-46">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb612"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb612-1"><a href="#cb612-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb612-2"><a href="#cb612-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionJekyllData</span>{true}</span> -<span id="cb612-3"><a href="#cb612-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataString</span>#1#2{<span class="fu">\gdef\name</span>{#2}}</span> -<span id="cb612-4"><a href="#cb612-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataNumber</span>#1#2{<span class="fu">\gdef\age</span>{#2}}</span> -<span id="cb612-5"><a href="#cb612-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span> -<span id="cb612-6"><a href="#cb612-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span> -<span id="cb612-7"><a href="#cb612-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb612-8"><a href="#cb612-8" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb612-9"><a href="#cb612-9" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span> -<span id="cb612-10"><a href="#cb612-10" aria-hidden="true" tabindex="-1"></a>age: 99</span> -<span id="cb612-11"><a href="#cb612-11" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb612-12"><a href="#cb612-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb612-13"><a href="#cb612-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb663"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb663-1"><a href="#cb663-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb663-2"><a href="#cb663-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionJekyllData</span>{true}</span> +<span id="cb663-3"><a href="#cb663-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataString</span>#1#2{<span class="fu">\gdef\name</span>{#2}}</span> +<span id="cb663-4"><a href="#cb663-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataNumber</span>#1#2{<span class="fu">\gdef\age</span>{#2}}</span> +<span id="cb663-5"><a href="#cb663-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span> +<span id="cb663-6"><a href="#cb663-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span> +<span id="cb663-7"><a href="#cb663-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb663-8"><a href="#cb663-8" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb663-9"><a href="#cb663-9" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span> +<span id="cb663-10"><a href="#cb663-10" aria-hidden="true" tabindex="-1"></a>age: 99</span> +<span id="cb663-11"><a href="#cb663-11" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb663-12"><a href="#cb663-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb663-13"><a href="#cb663-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb613"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb613-1"><a href="#cb613-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb664"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb664-1"><a href="#cb664-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>Jane Doe is 99 years old.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-93"><span +<h5 class="unnumbered" id="latex-example-99"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb614"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb614-1"><a href="#cb614-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb614-2"><a href="#cb614-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span> -<span id="cb614-3"><a href="#cb614-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb614-4"><a href="#cb614-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb614-5"><a href="#cb614-5" aria-hidden="true" tabindex="-1"></a> jekyllDataString = {<span class="fu">\gdef\name</span>{#2}},</span> -<span id="cb614-6"><a href="#cb614-6" aria-hidden="true" tabindex="-1"></a> jekyllDataNumber = {<span class="fu">\gdef\age</span>{#2}},</span> -<span id="cb614-7"><a href="#cb614-7" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span> -<span id="cb614-8"><a href="#cb614-8" aria-hidden="true" tabindex="-1"></a> }</span> -<span id="cb614-9"><a href="#cb614-9" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb614-10"><a href="#cb614-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb614-11"><a href="#cb614-11" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb614-12"><a href="#cb614-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb614-13"><a href="#cb614-13" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb614-14"><a href="#cb614-14" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span> -<span id="cb614-15"><a href="#cb614-15" aria-hidden="true" tabindex="-1"></a>age: 99</span> -<span id="cb614-16"><a href="#cb614-16" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb614-17"><a href="#cb614-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb614-18"><a href="#cb614-18" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb614-19"><a href="#cb614-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> -<p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb615"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb615-1"><a href="#cb615-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb665"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb665-1"><a href="#cb665-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb665-2"><a href="#cb665-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span> +<span id="cb665-3"><a href="#cb665-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb665-4"><a href="#cb665-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb665-5"><a href="#cb665-5" aria-hidden="true" tabindex="-1"></a> jekyllDataString = {<span class="fu">\gdef\name</span>{#2}},</span> +<span id="cb665-6"><a href="#cb665-6" aria-hidden="true" tabindex="-1"></a> jekyllDataNumber = {<span class="fu">\gdef\age</span>{#2}},</span> +<span id="cb665-7"><a href="#cb665-7" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span> +<span id="cb665-8"><a href="#cb665-8" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb665-9"><a href="#cb665-9" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb665-10"><a href="#cb665-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb665-11"><a href="#cb665-11" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb665-12"><a href="#cb665-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb665-13"><a href="#cb665-13" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb665-14"><a href="#cb665-14" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span> +<span id="cb665-15"><a href="#cb665-15" aria-hidden="true" tabindex="-1"></a>age: 99</span> +<span id="cb665-16"><a href="#cb665-16" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb665-17"><a href="#cb665-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb665-18"><a href="#cb665-18" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb665-19"><a href="#cb665-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb666"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb666-1"><a href="#cb666-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>Jane Doe is 99 years old.</p> </blockquote> -<h5 class="unnumbered" id="context-example-56">Con<span +<h5 class="unnumbered" id="context-example-58">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb616"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb616-1"><a href="#cb616-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb616-2"><a href="#cb616-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[jekyllData = yes]</span> -<span id="cb616-3"><a href="#cb616-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataString</span>#1#2{<span class="fu">\gdef\name</span>{#2}}</span> -<span id="cb616-4"><a href="#cb616-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataNumber</span>#1#2{<span class="fu">\gdef\age</span>{#2}}</span> -<span id="cb616-5"><a href="#cb616-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span> -<span id="cb616-6"><a href="#cb616-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span> -<span id="cb616-7"><a href="#cb616-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb616-8"><a href="#cb616-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb616-9"><a href="#cb616-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb616-10"><a href="#cb616-10" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb616-11"><a href="#cb616-11" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span> -<span id="cb616-12"><a href="#cb616-12" aria-hidden="true" tabindex="-1"></a>age: 99</span> -<span id="cb616-13"><a href="#cb616-13" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb616-14"><a href="#cb616-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb616-15"><a href="#cb616-15" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb616-16"><a href="#cb616-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb667"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb667-1"><a href="#cb667-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb667-2"><a href="#cb667-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[jekyllData = yes]</span> +<span id="cb667-3"><a href="#cb667-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataString</span>#1#2{<span class="fu">\gdef\name</span>{#2}}</span> +<span id="cb667-4"><a href="#cb667-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataNumber</span>#1#2{<span class="fu">\gdef\age</span>{#2}}</span> +<span id="cb667-5"><a href="#cb667-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span> +<span id="cb667-6"><a href="#cb667-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span> +<span id="cb667-7"><a href="#cb667-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb667-8"><a href="#cb667-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb667-9"><a href="#cb667-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb667-10"><a href="#cb667-10" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb667-11"><a href="#cb667-11" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span> +<span id="cb667-12"><a href="#cb667-12" aria-hidden="true" tabindex="-1"></a>age: 99</span> +<span id="cb667-13"><a href="#cb667-13" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb667-14"><a href="#cb667-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb667-15"><a href="#cb667-15" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb667-16"><a href="#cb667-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb617"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb617-1"><a href="#cb617-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb668"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb668-1"><a href="#cb668-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -11379,93 +12492,93 @@ Prototypes</h3> <p>By default, token renderers point to package-defined <span class="tex">T<sub>e</sub>X</span> macros, further referred to as <em>prototypes</em>, which provide useful default definitions.</p> -<h5 class="unnumbered" id="plain-tex-example-43">Plain <span +<h5 class="unnumbered" id="plain-tex-example-47">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb618"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb618-1"><a href="#cb618-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb618-2"><a href="#cb618-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTildePrototype</span>{<span class="co">%</span></span> -<span id="cb618-3"><a href="#cb618-3" aria-hidden="true" tabindex="-1"></a> Packages can specify token renderer prototypes.<span class="co">%</span></span> -<span id="cb618-4"><a href="#cb618-4" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb618-5"><a href="#cb618-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb618-6"><a href="#cb618-6" aria-hidden="true" tabindex="-1"></a>~</span> -<span id="cb618-7"><a href="#cb618-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb618-8"><a href="#cb618-8" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb618-9"><a href="#cb618-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{<span class="co">%</span></span> -<span id="cb618-10"><a href="#cb618-10" aria-hidden="true" tabindex="-1"></a> User-defined token renderers take precedence.<span class="co">%</span></span> -<span id="cb618-11"><a href="#cb618-11" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb618-12"><a href="#cb618-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb618-13"><a href="#cb618-13" aria-hidden="true" tabindex="-1"></a>~</span> -<span id="cb618-14"><a href="#cb618-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb618-15"><a href="#cb618-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<div class="sourceCode" id="cb669"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb669-1"><a href="#cb669-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb669-2"><a href="#cb669-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTildePrototype</span>{<span class="co">%</span></span> +<span id="cb669-3"><a href="#cb669-3" aria-hidden="true" tabindex="-1"></a> Packages can specify token renderer prototypes.<span class="co">%</span></span> +<span id="cb669-4"><a href="#cb669-4" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb669-5"><a href="#cb669-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb669-6"><a href="#cb669-6" aria-hidden="true" tabindex="-1"></a>~</span> +<span id="cb669-7"><a href="#cb669-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb669-8"><a href="#cb669-8" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb669-9"><a href="#cb669-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{<span class="co">%</span></span> +<span id="cb669-10"><a href="#cb669-10" aria-hidden="true" tabindex="-1"></a> User-defined token renderers take precedence.<span class="co">%</span></span> +<span id="cb669-11"><a href="#cb669-11" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb669-12"><a href="#cb669-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb669-13"><a href="#cb669-13" aria-hidden="true" tabindex="-1"></a>~</span> +<span id="cb669-14"><a href="#cb669-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb669-15"><a href="#cb669-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb619"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb619-1"><a href="#cb619-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb670"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb670-1"><a href="#cb670-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>Packages can specify token renderer prototypes.</p> <p>User-defined token renderers take precedence.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-94"><span +<h5 class="unnumbered" id="latex-example-100"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb620"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb620-1"><a href="#cb620-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb620-2"><a href="#cb620-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> -<span id="cb620-3"><a href="#cb620-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb620-4"><a href="#cb620-4" aria-hidden="true" tabindex="-1"></a> rendererPrototypes = {</span> -<span id="cb620-5"><a href="#cb620-5" aria-hidden="true" tabindex="-1"></a> tilde = {Packages can specify token renderer prototypes.},</span> -<span id="cb620-6"><a href="#cb620-6" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb620-7"><a href="#cb620-7" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb620-8"><a href="#cb620-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb620-9"><a href="#cb620-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb620-10"><a href="#cb620-10" aria-hidden="true" tabindex="-1"></a>~</span> -<span id="cb620-11"><a href="#cb620-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb620-12"><a href="#cb620-12" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb620-13"><a href="#cb620-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{</span> -<span id="cb620-14"><a href="#cb620-14" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb620-15"><a href="#cb620-15" aria-hidden="true" tabindex="-1"></a> tilde = {User-defined token renderers take precedence.},</span> -<span id="cb620-16"><a href="#cb620-16" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb620-17"><a href="#cb620-17" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb620-18"><a href="#cb620-18" aria-hidden="true" tabindex="-1"></a>~</span> -<span id="cb620-19"><a href="#cb620-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span> -<span id="cb620-20"><a href="#cb620-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> -<p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb621"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb621-1"><a href="#cb621-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb671"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb671-1"><a href="#cb671-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb671-2"><a href="#cb671-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span> +<span id="cb671-3"><a href="#cb671-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb671-4"><a href="#cb671-4" aria-hidden="true" tabindex="-1"></a> rendererPrototypes = {</span> +<span id="cb671-5"><a href="#cb671-5" aria-hidden="true" tabindex="-1"></a> tilde = {Packages can specify token renderer prototypes.},</span> +<span id="cb671-6"><a href="#cb671-6" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb671-7"><a href="#cb671-7" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb671-8"><a href="#cb671-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb671-9"><a href="#cb671-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb671-10"><a href="#cb671-10" aria-hidden="true" tabindex="-1"></a>~</span> +<span id="cb671-11"><a href="#cb671-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb671-12"><a href="#cb671-12" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb671-13"><a href="#cb671-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span> +<span id="cb671-14"><a href="#cb671-14" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb671-15"><a href="#cb671-15" aria-hidden="true" tabindex="-1"></a> tilde = {User-defined token renderers take precedence.},</span> +<span id="cb671-16"><a href="#cb671-16" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb671-17"><a href="#cb671-17" aria-hidden="true" tabindex="-1"></a>]</span> +<span id="cb671-18"><a href="#cb671-18" aria-hidden="true" tabindex="-1"></a>~</span> +<span id="cb671-19"><a href="#cb671-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb671-20"><a href="#cb671-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb672"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb672-1"><a href="#cb672-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>Packages can specify token renderer prototypes.</p> <p>User-defined token renderers take precedence.</p> </blockquote> -<h5 class="unnumbered" id="context-example-57">Con<span +<h5 class="unnumbered" id="context-example-59">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb622"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb622-1"><a href="#cb622-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb622-2"><a href="#cb622-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTildePrototype</span>{<span class="co">%</span></span> -<span id="cb622-3"><a href="#cb622-3" aria-hidden="true" tabindex="-1"></a> Packages can specify token renderer prototypes.<span class="co">%</span></span> -<span id="cb622-4"><a href="#cb622-4" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb622-5"><a href="#cb622-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb622-6"><a href="#cb622-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb622-7"><a href="#cb622-7" aria-hidden="true" tabindex="-1"></a>~</span> -<span id="cb622-8"><a href="#cb622-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb622-9"><a href="#cb622-9" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb622-10"><a href="#cb622-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{<span class="co">%</span></span> -<span id="cb622-11"><a href="#cb622-11" aria-hidden="true" tabindex="-1"></a> User-defined token renderers take precedence.<span class="co">%</span></span> -<span id="cb622-12"><a href="#cb622-12" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb622-13"><a href="#cb622-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb622-14"><a href="#cb622-14" aria-hidden="true" tabindex="-1"></a>~</span> -<span id="cb622-15"><a href="#cb622-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb622-16"><a href="#cb622-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<div class="sourceCode" id="cb673"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb673-1"><a href="#cb673-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb673-2"><a href="#cb673-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTildePrototype</span>{<span class="co">%</span></span> +<span id="cb673-3"><a href="#cb673-3" aria-hidden="true" tabindex="-1"></a> Packages can specify token renderer prototypes.<span class="co">%</span></span> +<span id="cb673-4"><a href="#cb673-4" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb673-5"><a href="#cb673-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb673-6"><a href="#cb673-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb673-7"><a href="#cb673-7" aria-hidden="true" tabindex="-1"></a>~</span> +<span id="cb673-8"><a href="#cb673-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb673-9"><a href="#cb673-9" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb673-10"><a href="#cb673-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{<span class="co">%</span></span> +<span id="cb673-11"><a href="#cb673-11" aria-hidden="true" tabindex="-1"></a> User-defined token renderers take precedence.<span class="co">%</span></span> +<span id="cb673-12"><a href="#cb673-12" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb673-13"><a href="#cb673-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb673-14"><a href="#cb673-14" aria-hidden="true" tabindex="-1"></a>~</span> +<span id="cb673-15"><a href="#cb673-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb673-16"><a href="#cb673-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> <p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb623"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb623-1"><a href="#cb623-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb674"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb674-1"><a href="#cb674-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> @@ -11479,142 +12592,140 @@ Prototypes</h4> high-level interface that can be programmed using the <code>markdown/jekyllData</code> key–values from the l3keys module of the <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span>3 kernel.</p> -<h5 class="unnumbered" id="plain-tex-example-44">Plain <span +<h5 class="unnumbered" id="plain-tex-example-48">Plain <span class="tex">T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb624"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb624-1"><a href="#cb624-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> -<span id="cb624-2"><a href="#cb624-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionJekyllData</span>{true}</span> -<span id="cb624-3"><a href="#cb624-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span> -<span id="cb624-4"><a href="#cb624-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span> -<span id="cb624-5"><a href="#cb624-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span> -<span id="cb624-6"><a href="#cb624-6" aria-hidden="true" tabindex="-1"></a> {</span> -<span id="cb624-7"><a href="#cb624-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span> -<span id="cb624-8"><a href="#cb624-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span> -<span id="cb624-9"><a href="#cb624-9" aria-hidden="true" tabindex="-1"></a> }</span> -<span id="cb624-10"><a href="#cb624-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span> -<span id="cb624-11"><a href="#cb624-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span> -<span id="cb624-12"><a href="#cb624-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span> -<span id="cb624-13"><a href="#cb624-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> -<span id="cb624-14"><a href="#cb624-14" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb624-15"><a href="#cb624-15" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span> -<span id="cb624-16"><a href="#cb624-16" aria-hidden="true" tabindex="-1"></a>age: 99</span> -<span id="cb624-17"><a href="#cb624-17" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb624-18"><a href="#cb624-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> -<span id="cb624-19"><a href="#cb624-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> -<p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb625"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb625-1"><a href="#cb625-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb675"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb675-1"><a href="#cb675-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span> +<span id="cb675-2"><a href="#cb675-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionJekyllData</span>{true}</span> +<span id="cb675-3"><a href="#cb675-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span> +<span id="cb675-4"><a href="#cb675-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span> +<span id="cb675-5"><a href="#cb675-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span> +<span id="cb675-6"><a href="#cb675-6" aria-hidden="true" tabindex="-1"></a> {</span> +<span id="cb675-7"><a href="#cb675-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span> +<span id="cb675-8"><a href="#cb675-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span> +<span id="cb675-9"><a href="#cb675-9" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb675-10"><a href="#cb675-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span> +<span id="cb675-11"><a href="#cb675-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span> +<span id="cb675-12"><a href="#cb675-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span> +<span id="cb675-13"><a href="#cb675-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span> +<span id="cb675-14"><a href="#cb675-14" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb675-15"><a href="#cb675-15" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span> +<span id="cb675-16"><a href="#cb675-16" aria-hidden="true" tabindex="-1"></a>age: 99</span> +<span id="cb675-17"><a href="#cb675-17" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb675-18"><a href="#cb675-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span> +<span id="cb675-19"><a href="#cb675-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb676"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb676-1"><a href="#cb676-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>Jane Doe is 99 years old.</p> </blockquote> -<h5 class="unnumbered" id="latex-example-95"><span +<h5 class="unnumbered" id="latex-example-101"><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb626"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb626-1"><a href="#cb626-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> -<span id="cb626-2"><a href="#cb626-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span> -<span id="cb626-3"><a href="#cb626-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> -<span id="cb626-4"><a href="#cb626-4" aria-hidden="true" tabindex="-1"></a> jekyllDataRenderers = {</span> -<span id="cb626-5"><a href="#cb626-5" aria-hidden="true" tabindex="-1"></a> name = {<span class="fu">\gdef\name</span>{#1}},</span> -<span id="cb626-6"><a href="#cb626-6" aria-hidden="true" tabindex="-1"></a> code = {<span class="fu">\gdef\age</span>{#1}},</span> -<span id="cb626-7"><a href="#cb626-7" aria-hidden="true" tabindex="-1"></a> },</span> -<span id="cb626-8"><a href="#cb626-8" aria-hidden="true" tabindex="-1"></a> renderers = {</span> -<span id="cb626-9"><a href="#cb626-9" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span> -<span id="cb626-10"><a href="#cb626-10" aria-hidden="true" tabindex="-1"></a> }</span> -<span id="cb626-11"><a href="#cb626-11" aria-hidden="true" tabindex="-1"></a>}</span> -<span id="cb626-12"><a href="#cb626-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> -<span id="cb626-13"><a href="#cb626-13" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb626-14"><a href="#cb626-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> -<span id="cb626-15"><a href="#cb626-15" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb626-16"><a href="#cb626-16" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span> -<span id="cb626-17"><a href="#cb626-17" aria-hidden="true" tabindex="-1"></a>age: 99</span> -<span id="cb626-18"><a href="#cb626-18" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb626-19"><a href="#cb626-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> -<span id="cb626-20"><a href="#cb626-20" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb626-21"><a href="#cb626-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> -<p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb627"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb627-1"><a href="#cb627-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb677"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb677-1"><a href="#cb677-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span> +<span id="cb677-2"><a href="#cb677-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span> +<span id="cb677-3"><a href="#cb677-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span> +<span id="cb677-4"><a href="#cb677-4" aria-hidden="true" tabindex="-1"></a> jekyllDataRenderers = {</span> +<span id="cb677-5"><a href="#cb677-5" aria-hidden="true" tabindex="-1"></a> name = {<span class="fu">\gdef\name</span>{#1}},</span> +<span id="cb677-6"><a href="#cb677-6" aria-hidden="true" tabindex="-1"></a> code = {<span class="fu">\gdef\age</span>{#1}},</span> +<span id="cb677-7"><a href="#cb677-7" aria-hidden="true" tabindex="-1"></a> },</span> +<span id="cb677-8"><a href="#cb677-8" aria-hidden="true" tabindex="-1"></a> renderers = {</span> +<span id="cb677-9"><a href="#cb677-9" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span> +<span id="cb677-10"><a href="#cb677-10" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb677-11"><a href="#cb677-11" aria-hidden="true" tabindex="-1"></a>}</span> +<span id="cb677-12"><a href="#cb677-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span> +<span id="cb677-13"><a href="#cb677-13" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb677-14"><a href="#cb677-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span> +<span id="cb677-15"><a href="#cb677-15" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb677-16"><a href="#cb677-16" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span> +<span id="cb677-17"><a href="#cb677-17" aria-hidden="true" tabindex="-1"></a>age: 99</span> +<span id="cb677-18"><a href="#cb677-18" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb677-19"><a href="#cb677-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span> +<span id="cb677-20"><a href="#cb677-20" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb677-21"><a href="#cb677-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb678"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb678-1"><a href="#cb678-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>Jane Doe is 99 years old.</p> </blockquote> -<h5 class="unnumbered" id="context-example-58">Con<span +<h5 class="unnumbered" id="context-example-60">Con<span class="tex">T<sub>e</sub>X</span>t Example</h5> <p>Using a text editor, create a text document named <code>document.tex</code> with the following content:</p> -<div class="sourceCode" id="cb628"><pre -class="sourceCode tex"><code class="sourceCode latex"><span id="cb628-1"><a href="#cb628-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> -<span id="cb628-2"><a href="#cb628-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[jekyllData = yes]</span> -<span id="cb628-3"><a href="#cb628-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span> -<span id="cb628-4"><a href="#cb628-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span> -<span id="cb628-5"><a href="#cb628-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span> -<span id="cb628-6"><a href="#cb628-6" aria-hidden="true" tabindex="-1"></a> {</span> -<span id="cb628-7"><a href="#cb628-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span> -<span id="cb628-8"><a href="#cb628-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span> -<span id="cb628-9"><a href="#cb628-9" aria-hidden="true" tabindex="-1"></a> }</span> -<span id="cb628-10"><a href="#cb628-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span> -<span id="cb628-11"><a href="#cb628-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span> -<span id="cb628-12"><a href="#cb628-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span> -<span id="cb628-13"><a href="#cb628-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> -<span id="cb628-14"><a href="#cb628-14" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb628-15"><a href="#cb628-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> -<span id="cb628-16"><a href="#cb628-16" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb628-17"><a href="#cb628-17" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span> -<span id="cb628-18"><a href="#cb628-18" aria-hidden="true" tabindex="-1"></a>age: 99</span> -<span id="cb628-19"><a href="#cb628-19" aria-hidden="true" tabindex="-1"></a>---</span> -<span id="cb628-20"><a href="#cb628-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> -<span id="cb628-21"><a href="#cb628-21" aria-hidden="true" tabindex="-1"></a></span> -<span id="cb628-22"><a href="#cb628-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> -<p>Next, invoke LuaTeX from the terminal:</p> -<div class="sourceCode" id="cb629"><pre -class="sourceCode sh"><code class="sourceCode bash"><span id="cb629-1"><a href="#cb629-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div> +<div class="sourceCode" id="cb679"><pre +class="sourceCode tex"><code class="sourceCode latex"><span id="cb679-1"><a href="#cb679-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span> +<span id="cb679-2"><a href="#cb679-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[jekyllData = yes]</span> +<span id="cb679-3"><a href="#cb679-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span> +<span id="cb679-4"><a href="#cb679-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span> +<span id="cb679-5"><a href="#cb679-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span> +<span id="cb679-6"><a href="#cb679-6" aria-hidden="true" tabindex="-1"></a> {</span> +<span id="cb679-7"><a href="#cb679-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span> +<span id="cb679-8"><a href="#cb679-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span> +<span id="cb679-9"><a href="#cb679-9" aria-hidden="true" tabindex="-1"></a> }</span> +<span id="cb679-10"><a href="#cb679-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span> +<span id="cb679-11"><a href="#cb679-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span> +<span id="cb679-12"><a href="#cb679-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span> +<span id="cb679-13"><a href="#cb679-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span> +<span id="cb679-14"><a href="#cb679-14" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb679-15"><a href="#cb679-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span> +<span id="cb679-16"><a href="#cb679-16" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb679-17"><a href="#cb679-17" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span> +<span id="cb679-18"><a href="#cb679-18" aria-hidden="true" tabindex="-1"></a>age: 99</span> +<span id="cb679-19"><a href="#cb679-19" aria-hidden="true" tabindex="-1"></a>---</span> +<span id="cb679-20"><a href="#cb679-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span> +<span id="cb679-21"><a href="#cb679-21" aria-hidden="true" tabindex="-1"></a></span> +<span id="cb679-22"><a href="#cb679-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div> +<p>Next, invoke LuaTeX from the terminal:</p> +<div class="sourceCode" id="cb680"><pre +class="sourceCode sh"><code class="sourceCode bash"><span id="cb680-1"><a href="#cb680-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div> <p>A PDF document named <code>document.pdf</code> should be produced and contain the following text:</p> <blockquote> <p>Jane Doe is 99 years old.</p> </blockquote> -<section class="footnotes footnotes-end-of-document" +<aside id="footnotes" class="footnotes footnotes-end-of-document" role="doc-endnotes"> <hr /> <ol> -<li id="fn1" role="doc-endnote"><p>Inlines notes are easier to write, -since you don’t have to pick an identifier and move down to type the -note.<a href="#fnref1" class="footnote-back" -role="doc-backlink">↩︎</a></p></li> -<li id="fn2" role="doc-endnote"><p>Inlines notes are easier to write, -since you don’t have to pick an identifier and move down to type the -note.<a href="#fnref2" class="footnote-back" -role="doc-backlink">↩︎</a></p></li> -<li id="fn3" role="doc-endnote"><p>Here is the note.<a href="#fnref3" +<li id="fn1"><p>Inlines notes are easier to write, since you don’t have +to pick an identifier and move down to type the note.<a href="#fnref1" class="footnote-back" role="doc-backlink">↩︎</a></p></li> -<li id="fn4" role="doc-endnote"><p>Here’s one with multiple blocks.</p> +<li id="fn2"><p>Inlines notes are easier to write, since you don’t have +to pick an identifier and move down to type the note.<a href="#fnref2" +class="footnote-back" role="doc-backlink">↩︎</a></p></li> +<li id="fn3"><p>Here is the note.<a href="#fnref3" class="footnote-back" +role="doc-backlink">↩︎</a></p></li> +<li id="fn4"><p>Here’s one with multiple blocks.</p> <p>Subsequent paragraphs are indented to show that they belong to the previous note.</p> <pre><code>{ some.code }</code></pre> <p>The whole paragraph can be indented, or just the first line. In this way, multi-paragraph notes work like multi-paragraph list items.<a href="#fnref4" class="footnote-back" role="doc-backlink">↩︎</a></p></li> -<li id="fn5" role="doc-endnote"><p>Here is the note.<a href="#fnref5" -class="footnote-back" role="doc-backlink">↩︎</a></p></li> -<li id="fn6" role="doc-endnote"><p>Here’s one with multiple blocks.</p> +<li id="fn5"><p>Here is the note.<a href="#fnref5" class="footnote-back" +role="doc-backlink">↩︎</a></p></li> +<li id="fn6"><p>Here’s one with multiple blocks.</p> <p>Subsequent paragraphs are indented to show that they belong to the previous note.</p> <pre><code>{ some.code }</code></pre> <p>The whole paragraph can be indented, or just the first line. In this way, multi-paragraph notes work like multi-paragraph list items.<a href="#fnref6" class="footnote-back" role="doc-backlink">↩︎</a></p></li> -<li id="fn7" role="doc-endnote"><p>Filenames other than +<li id="fn7"><p>Filenames other than <code>markdown-languages.json</code> may be specified using the <code>contentBlocksLanguageMap</code> Lua option.<a href="#fnref7" class="footnote-back" role="doc-backlink">↩︎</a></p></li> </ol> -</section> +</aside> </body> </html> diff --git a/macros/generic/markdown/markdown.ins b/macros/generic/markdown/markdown.ins index de2f350d50..8e777f4217 100644 --- a/macros/generic/markdown/markdown.ins +++ b/macros/generic/markdown/markdown.ins @@ -9,10 +9,13 @@ \file{markdown.tex}{\from{markdown.dtx}{tex}} \file{markdown.sty}{\from{markdown.dtx}{latex}} \file{t-markdown.tex}{\from{markdown.dtx}{context}} - \file{markdownthemewitiko_dot.sty}{\from{markdown.dtx}{latex-themes-witiko-dot}} - \file{markdownthemewitiko_graphicx_http.sty}{\from{markdown.dtx}{latex-themes-witiko-graphicx-http}} - \file{markdownthemewitiko_tilde.sty}{\from{markdown.dtx}{latex-themes-witiko-tilde}} - \file{markdownthemewitiko_markdown_techdoc.sty}{\from{markdown.dtx}{latex-themes-witiko-markdown-techdoc}} + \file{markdownthemewitiko_dot.sty}{\from{markdown.dtx}{themes-witiko-dot}} + \file{markdownthemewitiko_graphicx_http.sty}{\from{markdown.dtx}{themes-witiko-graphicx-http}} + \file{markdownthemewitiko_tilde.tex}{\from{markdown.dtx}{themes-witiko-tilde}} + \file{markdownthemewitiko_markdown_defaults.tex}{\from{markdown.dtx}{themes-witiko-markdown-defaults-tex}} + \file{markdownthemewitiko_markdown_defaults.sty}{\from{markdown.dtx}{themes-witiko-markdown-defaults-latex}} + \file{t-markdownthemewitiko_markdown_defaults.tex}{\from{markdown.dtx}{themes-witiko-markdown-defaults-context}} + \file{markdownthemewitiko_markdown_techdoc.sty}{\from{markdown.dtx}{themes-witiko-markdown-techdoc}} \usepreamble\empty \usepostamble\empty \file{markdown.md}{\from{markdown.dtx}{manual}} diff --git a/macros/generic/markdown/markdown.pdf b/macros/generic/markdown/markdown.pdf Binary files differindex 4b99308976..a5d91a2327 100644 --- a/macros/generic/markdown/markdown.pdf +++ b/macros/generic/markdown/markdown.pdf diff --git a/macros/jptex/latex/jlreq-deluxe/LICENSE b/macros/jptex/latex/jlreq-deluxe/LICENSE index fb51f9cba4..5eecbdfd83 100644 --- a/macros/jptex/latex/jlreq-deluxe/LICENSE +++ b/macros/jptex/latex/jlreq-deluxe/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019-2023 Yukimasa Morimi (h20y6m) +Copyright (c) 2019-2024 Yukimasa Morimi (h20y6m) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/macros/jptex/latex/jlreq-deluxe/README-ja.md b/macros/jptex/latex/jlreq-deluxe/README-ja.md index 699a661133..41c7f0c00e 100644 --- a/macros/jptex/latex/jlreq-deluxe/README-ja.md +++ b/macros/jptex/latex/jlreq-deluxe/README-ja.md @@ -71,6 +71,8 @@ jlreq クラスでは [JLReq](https://www.w3.org/TR/jlreq/?lang=ja) に従った 更新履歴 ------- +* Version 0.5.0 <2024/02/18> + - jlreq 20240213 用に JFM/VF を調整 * Version 0.4.1 <2023/02/23> - e-upTeX ベースの pLaTeX をサポート * Version 0.4.0 <2021/03/13> diff --git a/macros/jptex/latex/jlreq-deluxe/README.md b/macros/jptex/latex/jlreq-deluxe/README.md index 5d33f536eb..3961944914 100644 --- a/macros/jptex/latex/jlreq-deluxe/README.md +++ b/macros/jptex/latex/jlreq-deluxe/README.md @@ -32,6 +32,8 @@ This package is distributed under [the MIT License](LICENSE). History ------- +* Version 0.5.0 <2024/02/18> + - Adjust JFM/VF for jlreq 20240213. * Version 0.4.1 <2023/02/23> - Support e-upTeX based pLaTeX. * Version 0.4.0 <2021/03/13> diff --git a/macros/jptex/latex/jlreq-deluxe/jlreq-deluxe.pdf b/macros/jptex/latex/jlreq-deluxe/jlreq-deluxe.pdf Binary files differindex 2ed89d8c0a..1269acc75a 100644 --- a/macros/jptex/latex/jlreq-deluxe/jlreq-deluxe.pdf +++ b/macros/jptex/latex/jlreq-deluxe/jlreq-deluxe.pdf diff --git a/macros/jptex/latex/jlreq-deluxe/jlreq-deluxe.sty b/macros/jptex/latex/jlreq-deluxe/jlreq-deluxe.sty index d7b5fe53d2..67de48e1dc 100644 --- a/macros/jptex/latex/jlreq-deluxe/jlreq-deluxe.sty +++ b/macros/jptex/latex/jlreq-deluxe/jlreq-deluxe.sty @@ -1,7 +1,7 @@ %% %% jlreq-deluxe.sty %% -%% Copyright (c) 2019-2023 Yukimasa Morimi (h20y6m) +%% Copyright (c) 2019-2024 Yukimasa Morimi (h20y6m) %% GitHub: https://github.com/h20y6m %% %% This package is distributed under the MIT License. @@ -11,7 +11,7 @@ \NeedsTeXFormat{pLaTeX2e} \RequirePackage{expl3}[2019-05-03] -\ProvidesExplPackage {jlreq-deluxe} {2023-02-23} {0.4.1} +\ProvidesExplPackage {jlreq-deluxe} {2024-02-18} {0.5.0} {Multi-weight Japanese font for jlreq class} % -------------------------------------------------- diff --git a/macros/jptex/latex/jlreq-deluxe/jlreq-deluxe.tex b/macros/jptex/latex/jlreq-deluxe/jlreq-deluxe.tex index f9dddc6e3f..338197e252 100644 --- a/macros/jptex/latex/jlreq-deluxe/jlreq-deluxe.tex +++ b/macros/jptex/latex/jlreq-deluxe/jlreq-deluxe.tex @@ -18,7 +18,7 @@ \title{\pkg{jlreq-deluxe}パッケージ} \author{Yukimasa Morimi (h20y6m)\thanks{\url{https://github.com/h20y6m}}} -\date{2023-02-23} +\date{2024-02-18} \begin{document} diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothb-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothb-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothbn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothbn-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothbn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothbn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothbn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothbn-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothbn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothbn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgotheb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgotheb-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgotheb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgotheb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgotheb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgotheb-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgotheb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgotheb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothebn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothebn-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothebn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothebn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothebn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothebn-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothebn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothebn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothr-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothr-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothrn-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothrn-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpgothrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpmgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpmgothr-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpmgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpmgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpmgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpmgothr-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpmgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpmgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpmgothrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpmgothrn-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpmgothrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpmgothrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpmgothrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpmgothrn-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpmgothrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpmgothrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminb-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminb-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminbn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminbn-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminbn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminbn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminbn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminbn-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminbn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminbn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminl-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminl-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminl-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminl-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminl-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminl-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminl-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminl-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminln-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminln-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminln-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminln-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminln-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminln-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminln-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminln-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminr-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminr-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminrn-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminrn-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upexpminrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothb-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothb-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothbn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothbn-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothbn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothbn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothbn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothbn-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothbn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothbn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgotheb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgotheb-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgotheb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgotheb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgotheb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgotheb-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgotheb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgotheb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothebn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothebn-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothebn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothebn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothebn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothebn-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothebn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothebn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothr-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothr-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothrn-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothrn-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlgothrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlmgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlmgothr-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlmgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlmgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlmgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlmgothr-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlmgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlmgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlmgothrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlmgothrn-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlmgothrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlmgothrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlmgothrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlmgothrn-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlmgothrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlmgothrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminb-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminb-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminbn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminbn-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminbn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminbn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminbn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminbn-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminbn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminbn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminl-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminl-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminl-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminl-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminl-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminl-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminl-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminl-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminln-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminln-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminln-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminln-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminln-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminln-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminln-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminln-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminr-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminr-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminrn-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminrn-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--upnmlminrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygothb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygothb-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygothb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygothb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygothb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygothb-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygothb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygothb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygotheb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygotheb-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygotheb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygotheb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygotheb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygotheb-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygotheb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygotheb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygothr-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygothr-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubygothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubymgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubymgothr-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubymgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubymgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubymgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubymgothr-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubymgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubymgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminb-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminb-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminl-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminl-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminl-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminl-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminl-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminl-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminl-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminl-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminr-h.tfm Binary files differindex e04af49035..b427dfbece 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminr-v.tfm Binary files differindex d52f57b60b..f79073dfde 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bjlreq--uprubyminr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothb-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothb-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothbn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothbn-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothbn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothbn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothbn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothbn-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothbn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothbn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgotheb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgotheb-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgotheb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgotheb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgotheb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgotheb-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgotheb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgotheb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothebn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothebn-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothebn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothebn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothebn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothebn-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothebn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothebn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothr-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothr-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothrn-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothrn-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpgothrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpmgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpmgothr-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpmgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpmgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpmgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpmgothr-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpmgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpmgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpmgothrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpmgothrn-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpmgothrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpmgothrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpmgothrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpmgothrn-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpmgothrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpmgothrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminb-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminb-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminbn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminbn-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminbn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminbn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminbn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminbn-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminbn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminbn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminl-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminl-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminl-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminl-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminl-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminl-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminl-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminl-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminln-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminln-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminln-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminln-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminln-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminln-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminln-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminln-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminr-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminr-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminrn-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminrn-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upexpminrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothb-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothb-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothbn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothbn-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothbn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothbn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothbn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothbn-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothbn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothbn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgotheb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgotheb-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgotheb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgotheb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgotheb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgotheb-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgotheb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgotheb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothebn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothebn-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothebn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothebn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothebn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothebn-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothebn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothebn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothr-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothr-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothrn-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothrn-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlgothrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlmgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlmgothr-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlmgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlmgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlmgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlmgothr-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlmgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlmgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlmgothrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlmgothrn-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlmgothrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlmgothrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlmgothrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlmgothrn-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlmgothrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlmgothrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminb-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminb-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminbn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminbn-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminbn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminbn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminbn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminbn-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminbn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminbn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminl-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminl-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminl-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminl-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminl-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminl-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminl-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminl-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminln-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminln-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminln-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminln-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminln-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminln-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminln-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminln-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminr-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminr-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminrn-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminrn-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--upnmlminrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygothb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygothb-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygothb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygothb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygothb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygothb-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygothb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygothb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygotheb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygotheb-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygotheb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygotheb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygotheb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygotheb-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygotheb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygotheb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygothr-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygothr-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubygothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubymgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubymgothr-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubymgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubymgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubymgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubymgothr-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubymgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubymgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminb-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminb-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminl-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminl-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminl-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminl-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminl-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminl-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminl-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminl-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminr-h.tfm Binary files differindex d39d77e79e..63d47906f7 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminr-v.tfm Binary files differindex 3eb8e12031..04ace4f0f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/bzjlreq--uprubyminr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothb-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothb-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothbn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothbn-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothbn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothbn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothbn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothbn-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothbn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothbn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgotheb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgotheb-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgotheb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgotheb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgotheb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgotheb-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgotheb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgotheb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothebn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothebn-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothebn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothebn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothebn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothebn-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothebn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothebn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothr-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothr-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothrn-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothrn-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpgothrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpmgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpmgothr-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpmgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpmgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpmgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpmgothr-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpmgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpmgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpmgothrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpmgothrn-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpmgothrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpmgothrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpmgothrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpmgothrn-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpmgothrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpmgothrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminb-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminb-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminbn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminbn-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminbn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminbn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminbn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminbn-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminbn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminbn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminl-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminl-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminl-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminl-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminl-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminl-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminl-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminl-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminln-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminln-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminln-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminln-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminln-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminln-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminln-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminln-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminr-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminr-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminrn-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminrn-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upexpminrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothb-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothb-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothbn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothbn-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothbn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothbn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothbn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothbn-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothbn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothbn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgotheb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgotheb-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgotheb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgotheb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgotheb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgotheb-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgotheb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgotheb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothebn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothebn-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothebn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothebn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothebn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothebn-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothebn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothebn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothr-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothr-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothrn-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothrn-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlgothrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlmgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlmgothr-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlmgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlmgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlmgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlmgothr-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlmgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlmgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlmgothrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlmgothrn-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlmgothrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlmgothrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlmgothrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlmgothrn-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlmgothrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlmgothrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminb-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminb-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminbn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminbn-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminbn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminbn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminbn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminbn-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminbn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminbn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminl-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminl-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminl-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminl-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminl-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminl-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminl-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminl-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminln-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminln-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminln-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminln-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminln-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminln-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminln-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminln-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminr-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminr-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminrn-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminrn-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--upnmlminrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygothb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygothb-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygothb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygothb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygothb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygothb-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygothb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygothb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygotheb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygotheb-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygotheb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygotheb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygotheb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygotheb-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygotheb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygotheb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygothr-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygothr-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubygothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubymgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubymgothr-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubymgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubymgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubymgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubymgothr-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubymgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubymgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminb-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminb-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminl-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminl-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminl-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminl-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminl-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminl-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminl-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminl-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminr-h.tfm Binary files differindex 2ec79270e2..14f35e9d31 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminr-v.tfm Binary files differindex 8c3bf49ec1..e6bffb2536 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/jlreq--uprubyminr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothb-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothb-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothbn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothbn-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothbn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothbn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothbn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothbn-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothbn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothbn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgotheb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgotheb-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgotheb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgotheb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgotheb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgotheb-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgotheb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgotheb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothebn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothebn-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothebn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothebn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothebn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothebn-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothebn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothebn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothr-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothr-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothrn-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothrn-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpgothrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpmgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpmgothr-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpmgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpmgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpmgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpmgothr-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpmgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpmgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpmgothrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpmgothrn-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpmgothrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpmgothrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpmgothrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpmgothrn-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpmgothrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpmgothrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminb-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminb-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminbn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminbn-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminbn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminbn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminbn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminbn-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminbn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminbn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminl-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminl-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminl-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminl-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminl-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminl-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminl-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminl-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminln-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminln-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminln-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminln-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminln-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminln-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminln-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminln-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminr-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminr-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminrn-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminrn-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upexpminrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothb-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothb-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothbn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothbn-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothbn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothbn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothbn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothbn-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothbn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothbn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgotheb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgotheb-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgotheb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgotheb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgotheb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgotheb-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgotheb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgotheb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothebn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothebn-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothebn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothebn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothebn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothebn-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothebn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothebn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothr-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothr-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothrn-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothrn-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlgothrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlmgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlmgothr-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlmgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlmgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlmgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlmgothr-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlmgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlmgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlmgothrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlmgothrn-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlmgothrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlmgothrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlmgothrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlmgothrn-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlmgothrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlmgothrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminb-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminb-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminbn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminbn-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminbn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminbn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminbn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminbn-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminbn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminbn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminl-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminl-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminl-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminl-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminl-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminl-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminl-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminl-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminln-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminln-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminln-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminln-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminln-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminln-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminln-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminln-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminr-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminr-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminrn-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminrn-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminrn-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminrn-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminrn-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminrn-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminrn-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--upnmlminrn-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygothb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygothb-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygothb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygothb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygothb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygothb-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygothb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygothb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygotheb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygotheb-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygotheb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygotheb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygotheb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygotheb-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygotheb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygotheb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygothr-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygothr-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubygothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubymgothr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubymgothr-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubymgothr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubymgothr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubymgothr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubymgothr-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubymgothr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubymgothr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminb-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminb-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminb-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminb-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminb-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminb-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminb-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminb-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminl-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminl-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminl-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminl-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminl-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminl-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminl-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminl-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminr-h.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminr-h.tfm Binary files differindex 64792076ec..f89c65ac62 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminr-h.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminr-h.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminr-v.tfm b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminr-v.tfm Binary files differindex 894103f1a8..36bccfff3b 100644 --- a/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminr-v.tfm +++ b/macros/jptex/latex/jlreq-deluxe/tfm/zjlreq--uprubyminr-v.tfm diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothb-v.vf Binary files differindex 241f308296..56fb571f29 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothbn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothbn-v.vf Binary files differindex dbe2d85989..088264fb0b 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothbn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothbn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgotheb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgotheb-v.vf Binary files differindex 0c126e515c..2476707bc7 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgotheb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgotheb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothebn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothebn-v.vf Binary files differindex 653fc4fe37..5aad288fff 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothebn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothebn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothr-v.vf Binary files differindex 38940a5099..bfea57d9a3 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothrn-v.vf Binary files differindex 943148166f..2533779386 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpgothrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpmgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpmgothr-v.vf Binary files differindex 3cc24a9f07..6429229a8b 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpmgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpmgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpmgothrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpmgothrn-v.vf Binary files differindex 3c6ddf311c..911a90532f 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpmgothrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpmgothrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminb-v.vf Binary files differindex b60f00e65d..68089a8f9f 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminbn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminbn-v.vf Binary files differindex cf9121a246..476042dc33 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminbn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminbn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminl-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminl-v.vf Binary files differindex 95045ced0f..373a086868 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminl-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminl-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminln-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminln-v.vf Binary files differindex 45d9507275..c6d0a500a2 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminln-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminln-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminr-v.vf Binary files differindex f210508c88..3468646509 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminrn-v.vf Binary files differindex 5ce523bdd5..eec8d6319b 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upexpminrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothb-v.vf Binary files differindex 81d6bde51b..c5f564ec1b 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothbn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothbn-v.vf Binary files differindex 2299d7c6b2..7fd809ac7a 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothbn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothbn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgotheb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgotheb-v.vf Binary files differindex 8ff054a3ac..db9c3a9329 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgotheb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgotheb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothebn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothebn-v.vf Binary files differindex 5a671967ef..43d1567dfc 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothebn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothebn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothr-v.vf Binary files differindex d11ae717dc..21904758c1 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothrn-v.vf Binary files differindex 4ee1e55af4..788bbac73b 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlgothrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlmgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlmgothr-v.vf Binary files differindex db59963ab9..02118551c5 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlmgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlmgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlmgothrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlmgothrn-v.vf Binary files differindex abc17535be..1d74f8704b 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlmgothrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlmgothrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminb-v.vf Binary files differindex a29e722fc8..7de8e65285 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminbn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminbn-v.vf Binary files differindex d762fd92fa..fca56dc61d 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminbn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminbn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminl-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminl-v.vf Binary files differindex e0d1a4a897..3f943dc348 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminl-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminl-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminln-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminln-v.vf Binary files differindex 81b9f1a3b8..a345792c17 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminln-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminln-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminr-v.vf Binary files differindex a53581d916..fd526a4211 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminrn-v.vf Binary files differindex 607404fbc2..89813a9a6b 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--upnmlminrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubygothb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubygothb-v.vf Binary files differindex f54a71446a..bc4747b920 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubygothb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubygothb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubygotheb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubygotheb-v.vf Binary files differindex 869b048ea7..59870ad8e5 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubygotheb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubygotheb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubygothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubygothr-v.vf Binary files differindex 7ef659f9d3..d2106a49f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubygothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubygothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubymgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubymgothr-v.vf Binary files differindex 71969f0cbb..471b67eacb 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubymgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubymgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubyminb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubyminb-v.vf Binary files differindex f2f9157d62..26248cf760 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubyminb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubyminb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubyminl-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubyminl-v.vf Binary files differindex 44092d9abd..fd1a35e9e8 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubyminl-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubyminl-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubyminr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubyminr-v.vf Binary files differindex e1fada0200..9b6495744a 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubyminr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bjlreq--uprubyminr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothb-v.vf Binary files differindex a13d8fd4e3..a9c9033577 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothbn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothbn-v.vf Binary files differindex 9c0f6107d9..cf0d73adcb 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothbn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothbn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgotheb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgotheb-v.vf Binary files differindex dc501fb487..169d33fb30 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgotheb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgotheb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothebn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothebn-v.vf Binary files differindex 86dd4c1b48..0e23a67385 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothebn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothebn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothr-v.vf Binary files differindex ff21dc2a18..ba781853ea 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothrn-v.vf Binary files differindex 20090bf148..60f7bc0fbd 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpgothrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpmgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpmgothr-v.vf Binary files differindex 85ee5d9d5d..765bea52d5 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpmgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpmgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpmgothrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpmgothrn-v.vf Binary files differindex bdf897e07f..b2b74c1795 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpmgothrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpmgothrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminb-v.vf Binary files differindex 84ca520db4..27648308c9 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminbn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminbn-v.vf Binary files differindex 7ee23bab05..515d3a777d 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminbn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminbn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminl-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminl-v.vf Binary files differindex 0292846fcd..e8ea8281b7 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminl-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminl-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminln-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminln-v.vf Binary files differindex b71da20e3d..29ca052f1a 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminln-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminln-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminr-v.vf Binary files differindex 664dd07c59..04f5d6e97a 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminrn-v.vf Binary files differindex 843648b2d9..5dfdc8ae74 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upexpminrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothb-v.vf Binary files differindex 8321b2bed1..84e6e50386 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothbn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothbn-v.vf Binary files differindex c5c24aa2ed..e2a6cf9526 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothbn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothbn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgotheb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgotheb-v.vf Binary files differindex 8a27c29f2c..24ec9eed64 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgotheb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgotheb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothebn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothebn-v.vf Binary files differindex 20083d69cc..67a743baa8 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothebn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothebn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothr-v.vf Binary files differindex ea255f207f..d0674409a7 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothrn-v.vf Binary files differindex f368660342..794b450321 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlgothrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlmgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlmgothr-v.vf Binary files differindex 6e2b83bce5..85d627c72f 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlmgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlmgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlmgothrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlmgothrn-v.vf Binary files differindex aa1bced637..05c440ea1c 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlmgothrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlmgothrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminb-v.vf Binary files differindex 5be77cbbb0..09041269c8 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminbn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminbn-v.vf Binary files differindex a4fc9ad0be..9d999f2583 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminbn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminbn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminl-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminl-v.vf Binary files differindex 96d654fbcf..ecc729faba 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminl-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminl-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminln-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminln-v.vf Binary files differindex 0f133847ec..e7732b0cfd 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminln-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminln-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminr-v.vf Binary files differindex 24087e3ad2..3b01b99a5d 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminrn-v.vf Binary files differindex a030a9e401..67c8fb8abc 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--upnmlminrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubygothb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubygothb-v.vf Binary files differindex 84f3721906..b10263cc84 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubygothb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubygothb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubygotheb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubygotheb-v.vf Binary files differindex d331a6c1e8..b317e4c0d6 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubygotheb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubygotheb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubygothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubygothr-v.vf Binary files differindex 0bf823c9da..d89f676e00 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubygothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubygothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubymgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubymgothr-v.vf Binary files differindex f35d8def78..1d50482e18 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubymgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubymgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubyminb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubyminb-v.vf Binary files differindex 7b75a0e9fd..b44efebdcf 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubyminb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubyminb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubyminl-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubyminl-v.vf Binary files differindex 55fd0a7072..2366c41ba5 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubyminl-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubyminl-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubyminr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubyminr-v.vf Binary files differindex 3fd5de74bf..b0482a7485 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubyminr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/bzjlreq--uprubyminr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothb-v.vf Binary files differindex 241f308296..56fb571f29 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothbn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothbn-v.vf Binary files differindex dbe2d85989..088264fb0b 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothbn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothbn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgotheb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgotheb-v.vf Binary files differindex 0c126e515c..2476707bc7 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgotheb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgotheb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothebn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothebn-v.vf Binary files differindex 653fc4fe37..5aad288fff 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothebn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothebn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothr-v.vf Binary files differindex 38940a5099..bfea57d9a3 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothrn-v.vf Binary files differindex 943148166f..2533779386 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpgothrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpmgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpmgothr-v.vf Binary files differindex 3cc24a9f07..6429229a8b 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpmgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpmgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpmgothrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpmgothrn-v.vf Binary files differindex 3c6ddf311c..911a90532f 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpmgothrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpmgothrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminb-v.vf Binary files differindex b60f00e65d..68089a8f9f 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminbn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminbn-v.vf Binary files differindex cf9121a246..476042dc33 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminbn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminbn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminl-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminl-v.vf Binary files differindex 95045ced0f..373a086868 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminl-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminl-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminln-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminln-v.vf Binary files differindex 45d9507275..c6d0a500a2 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminln-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminln-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminr-v.vf Binary files differindex f210508c88..3468646509 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminrn-v.vf Binary files differindex 5ce523bdd5..eec8d6319b 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upexpminrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothb-v.vf Binary files differindex 81d6bde51b..c5f564ec1b 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothbn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothbn-v.vf Binary files differindex 2299d7c6b2..7fd809ac7a 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothbn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothbn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgotheb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgotheb-v.vf Binary files differindex 8ff054a3ac..db9c3a9329 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgotheb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgotheb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothebn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothebn-v.vf Binary files differindex 5a671967ef..43d1567dfc 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothebn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothebn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothr-v.vf Binary files differindex d11ae717dc..21904758c1 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothrn-v.vf Binary files differindex 4ee1e55af4..788bbac73b 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlgothrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlmgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlmgothr-v.vf Binary files differindex db59963ab9..02118551c5 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlmgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlmgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlmgothrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlmgothrn-v.vf Binary files differindex abc17535be..1d74f8704b 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlmgothrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlmgothrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminb-v.vf Binary files differindex a29e722fc8..7de8e65285 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminbn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminbn-v.vf Binary files differindex d762fd92fa..fca56dc61d 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminbn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminbn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminl-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminl-v.vf Binary files differindex e0d1a4a897..3f943dc348 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminl-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminl-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminln-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminln-v.vf Binary files differindex 81b9f1a3b8..a345792c17 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminln-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminln-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminr-v.vf Binary files differindex a53581d916..fd526a4211 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminrn-v.vf Binary files differindex 607404fbc2..89813a9a6b 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--upnmlminrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubygothb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubygothb-v.vf Binary files differindex f54a71446a..bc4747b920 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubygothb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubygothb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubygotheb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubygotheb-v.vf Binary files differindex 869b048ea7..59870ad8e5 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubygotheb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubygotheb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubygothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubygothr-v.vf Binary files differindex 7ef659f9d3..d2106a49f1 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubygothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubygothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubymgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubymgothr-v.vf Binary files differindex 71969f0cbb..471b67eacb 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubymgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubymgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubyminb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubyminb-v.vf Binary files differindex f2f9157d62..26248cf760 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubyminb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubyminb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubyminl-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubyminl-v.vf Binary files differindex 44092d9abd..fd1a35e9e8 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubyminl-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubyminl-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubyminr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubyminr-v.vf Binary files differindex e1fada0200..9b6495744a 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubyminr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/jlreq--uprubyminr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothb-v.vf Binary files differindex a13d8fd4e3..a9c9033577 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothbn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothbn-v.vf Binary files differindex 9c0f6107d9..cf0d73adcb 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothbn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothbn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgotheb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgotheb-v.vf Binary files differindex dc501fb487..169d33fb30 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgotheb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgotheb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothebn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothebn-v.vf Binary files differindex 86dd4c1b48..0e23a67385 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothebn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothebn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothr-v.vf Binary files differindex ff21dc2a18..ba781853ea 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothrn-v.vf Binary files differindex 20090bf148..60f7bc0fbd 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpgothrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpmgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpmgothr-v.vf Binary files differindex 85ee5d9d5d..765bea52d5 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpmgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpmgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpmgothrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpmgothrn-v.vf Binary files differindex bdf897e07f..b2b74c1795 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpmgothrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpmgothrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminb-v.vf Binary files differindex 84ca520db4..27648308c9 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminbn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminbn-v.vf Binary files differindex 7ee23bab05..515d3a777d 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminbn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminbn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminl-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminl-v.vf Binary files differindex 0292846fcd..e8ea8281b7 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminl-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminl-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminln-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminln-v.vf Binary files differindex b71da20e3d..29ca052f1a 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminln-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminln-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminr-v.vf Binary files differindex 664dd07c59..04f5d6e97a 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminrn-v.vf Binary files differindex 843648b2d9..5dfdc8ae74 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upexpminrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothb-v.vf Binary files differindex 8321b2bed1..84e6e50386 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothbn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothbn-v.vf Binary files differindex c5c24aa2ed..e2a6cf9526 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothbn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothbn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgotheb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgotheb-v.vf Binary files differindex 8a27c29f2c..24ec9eed64 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgotheb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgotheb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothebn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothebn-v.vf Binary files differindex 20083d69cc..67a743baa8 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothebn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothebn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothr-v.vf Binary files differindex ea255f207f..d0674409a7 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothrn-v.vf Binary files differindex f368660342..794b450321 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlgothrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlmgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlmgothr-v.vf Binary files differindex 6e2b83bce5..85d627c72f 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlmgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlmgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlmgothrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlmgothrn-v.vf Binary files differindex aa1bced637..05c440ea1c 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlmgothrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlmgothrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminb-v.vf Binary files differindex 5be77cbbb0..09041269c8 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminbn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminbn-v.vf Binary files differindex a4fc9ad0be..9d999f2583 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminbn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminbn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminl-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminl-v.vf Binary files differindex 96d654fbcf..ecc729faba 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminl-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminl-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminln-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminln-v.vf Binary files differindex 0f133847ec..e7732b0cfd 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminln-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminln-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminr-v.vf Binary files differindex 24087e3ad2..3b01b99a5d 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminrn-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminrn-v.vf Binary files differindex a030a9e401..67c8fb8abc 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminrn-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--upnmlminrn-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubygothb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubygothb-v.vf Binary files differindex 84f3721906..b10263cc84 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubygothb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubygothb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubygotheb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubygotheb-v.vf Binary files differindex d331a6c1e8..b317e4c0d6 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubygotheb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubygotheb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubygothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubygothr-v.vf Binary files differindex 0bf823c9da..d89f676e00 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubygothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubygothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubymgothr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubymgothr-v.vf Binary files differindex f35d8def78..1d50482e18 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubymgothr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubymgothr-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubyminb-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubyminb-v.vf Binary files differindex 7b75a0e9fd..b44efebdcf 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubyminb-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubyminb-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubyminl-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubyminl-v.vf Binary files differindex 55fd0a7072..2366c41ba5 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubyminl-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubyminl-v.vf diff --git a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubyminr-v.vf b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubyminr-v.vf Binary files differindex 3fd5de74bf..b0482a7485 100644 --- a/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubyminr-v.vf +++ b/macros/jptex/latex/jlreq-deluxe/vf/zjlreq--uprubyminr-v.vf diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx index a69d7de48b..bf101810cd 100644 --- a/macros/latex/contrib/easybook/easybook.dtx +++ b/macros/latex/contrib/easybook/easybook.dtx @@ -15,7 +15,7 @@ %<*class> \NeedsTeXFormat{LaTeX2e}[2021/11/15] \RequirePackage{l3keys2e} -\ProvidesExplClass{easybook}{2024/02/16}{2024ad} +\ProvidesExplClass{easybook}{2024/02/18}{2024ae} {Easily typesetting Chinese theses or books} \bool_set_false:N \l__eb_compile_draft_bool @@ -297,7 +297,7 @@ %<*package> \NeedsTeXFormat{LaTeX2e}[2021/11/15] \RequirePackage{l3keys2e,etoolbox} -\ProvidesExplPackage{easybase}{2024/02/16}{2024ad} +\ProvidesExplPackage{easybase}{2024/02/18}{2024ae} {Easily typesetting Chinese theses or books} \cs_generate_variant:Nn \dim_set:Nn { NV } @@ -630,19 +630,19 @@ } \ctex_define:nn { hdrset } { - chap-mark .cs_set:Np = \eb_fancyhf_chapter_mark:n #1, + chap-mark .cs_set:Np = \eb@mark@chapter@whole #1, chap-mark .initial:n = { \CTEXifname{\eb@mark@chapter@label}{} \eb_mark_uppercase_case_init:n {#1} }, - sec-mark .cs_set:Np = \eb_fancyhf_section_mark:n #1, + sec-mark .cs_set:Np = \eb@mark@section@whole #1, sec-mark .initial:n = { \CTEXifname{\eb@mark@section@label}{} \eb_mark_uppercase_case_init:n {#1} }, - subsec-mark .cs_set:Np = \eb_fancyhf_subsection_mark:n #1, + subsec-mark .cs_set:Np = \eb@mark@subsection@whole #1, subsec-mark .initial:n = { \CTEXifname{\eb@mark@subsection@label}{} @@ -668,9 +668,9 @@ \cs_set:Npn \markdouble #1 { \markboth{#1}{\ifbool{@twoside}{#1}{}} } \cs_new:Npn \eb@level@markdouble #1#2 - { \markdouble{\use:c { eb_fancyhf_#1_mark:n } {#2}} } + { \markdouble{\use:c { eb@mark@#1@whole } {#2}} } \cs_new:Npn \eb@level@markright #1#2 - { \markright{\use:c { eb_fancyhf_#1_mark:n } {#2}} } + { \markright{\use:c { eb@mark@#1@whole } {#2}} } \cs_gset:Npn \chaptermark #1 { \eb@level@markdouble{chapter}{#1} } \cs_gset:Npn \sectionmark #1 { @@ -1032,8 +1032,8 @@ \eb_patch_cmd:Nnn #1 { \reset@font } { - \setspread{\fp_use:N \l__eb_spread_footnote_fp} - \tl_use:N \l__eb_subfont_footnote_tl + \setspread{\eb@spread@footnote} + \eb@subfont@footnote } } \cs_set_eq:NN \eb@@makefntext \@makefntext @@ -1150,7 +1150,7 @@ { \tl_clear:N \l__eb_fnmarktext_format_tl } } \bool_if:NF \l__eb_fnmarktext_format_match_bool { \spbset{spcmd = { }} } - \tl_use:N \l__eb_subfont_footnote_tl + \eb@subfont@footnote } \cs_new_protected:Npn \defupfntmark #1 { \cs_set:Npn \@makefnmark { \hbox:n {#1} } } @@ -1328,8 +1328,12 @@ } } +\cs_new_protected:Npn \SetTocOuter #1 + { \keys_set:nn { eb/tocouter } {#1} } \tl_new:N \eb@bitoc@title -\keys_define:nn { eb/floattoc } +\newbool{bitoc} +\cs_new:Npn \ebifbitoc { \ifbool{bitoc} } +\keys_define:nn { eb/tocouter } { level .tl_set:N = \eb@toc@title@level, level .initial:n = @@ -1364,13 +1368,27 @@ plan .initial:n = cn, columns .meta:n = { multoc = #1 }, title .code:n = \eb_assign_toc_title:n {#1}, - bilist .tl_gset:N = \g__eb_bilist_permute_value_tl, + bilist .code:n = + { + \tl_gset:Nn \g__eb_bilist_permute_value_tl {#1} + \str_if_eq:nnTF {#1} { mix } + { + \eb_preto_cmd:nn { CTEX@addtocline } + { \addtocontents{toc}{\boolfalse{bitoc}} } + \eb_preto_cmd:nn { CTEX@addbitocline } + { \addtocontents{toc}{\booltrue{bitoc}} } + } + { + \RemoveFromHook{cmd/CTEX@addtocline/before} + \RemoveFromHook{cmd/CTEX@addbitocline/before} + } + }, name .tl_set:N = \l__eb_print_index_name_tl, name .initial:n = \imki@jobname } \bool_if:NTF \l__eb_class_mode_book_bool - { \keys_define:nn { } { eb/floattoc .inherit:n = ctex/chapter } } - { \keys_define:nn { } { eb/floattoc .inherit:n = ctex/section } } + { \keys_define:nn { } { eb/tocouter .inherit:n = ctex/chapter } } + { \keys_define:nn { } { eb/tocouter .inherit:n = ctex/section } } \NewDocumentCommand{\eb_assign_toc_title:n} {>{\SplitArgument{1}{,}}m} {\eb_assign_toc_title_judge:nn #1} @@ -1410,7 +1428,7 @@ { \group_begin: \tl_set_eq:Nc \eb@toc@title { list#4name } - \IfValueT{#3}{\keys_set:nn { eb/floattoc } {#3}} + \IfValueT{#3}{\keys_set:nn { eb/tocouter } {#3}} \eb_toc_title_level_cmd:n {#1} \eb_toc_if_title_between_hook:nn {#1} {#4} \eb_toc_start_multi_column_ext:n {#5} @@ -1465,7 +1483,7 @@ { \chapter* } { \section* } } - \IfValueT{#3}{\keys_set:nn { eb/floattoc } {#3}} + \IfValueT{#3}{\keys_set:nn { eb/tocouter } {#3}} \bool_if:NT \l__eb_toc_plan_cn_bool { \IfBooleanF{#1}{\eb@toc@title@level{\eb@toc@title}{}} @@ -1474,9 +1492,12 @@ } \bool_if:NT \l__eb_toc_plan_bi_bool { - \IfBooleanF{#1}{\eb@toc@title@level{\eb@bitoc@title}{}} - \eb_toc_if_title_between_hook:nn {#1} { bimain } - \eb_toc_start_multi_column_ext:n { tec } + \tl_if_eq:NnF \g__eb_bilist_permute_value_tl { mix } + { + \IfBooleanF{#1}{\eb@toc@title@level{\eb@bitoc@title}{}} + \eb_toc_if_title_between_hook:nn {#1} { bimain } + \eb_toc_start_multi_column_ext:n { tec } + } } \group_end: } @@ -1605,7 +1626,7 @@ \cs_set_eq:NN \eb@ctexsetii \ctex_set:nn \cs_new_protected:Npn \SetTocStyle #1#2#3 { - \cs_set:cpn { eb@toc@style@set@#1@#2 } + \cs_set_protected:cpn { eb@toc@style@set@#1@#2 } { \eb@ctexsetii{#1}{#3} } } \cs_new_protected:Npn \UseTocStyle #1#2#3 @@ -1654,7 +1675,7 @@ \group_begin: \tl_set_eq:NN \eb@toc@title \indexname \cs_set_eq:NN \imki@indexlevel \use_none:n - \IfValueT{#3}{\keys_set:nn { eb/floattoc } {#3}} + \IfValueT{#3}{\keys_set:nn { eb/tocouter } {#3}} \cs_set_protected:Npn \imki@indexheaders { \eb_toc_title_level_cmd:n {#1} @@ -1716,7 +1737,7 @@ caption-listing = #1 }, caption-every .initial:n = \sffamily\small, - footnote .tl_set:N = \l__eb_subfont_footnote_tl, + footnote .tl_set:N = \eb@subfont@footnote, marginpar .tl_set:N = \marginfont, marginpar .initial:n = \footnotesize, unknown .code:n = \eb_msg_deprecated_option:n { subfont } @@ -1742,23 +1763,23 @@ } \ctex_define:nn { spread } { - line .code:n = \AfterPreamble{\setspread{#1}}, + line .code:n = \setspread{#1}, line .initial:n = { - \fp_if_nan:nTF { \l__ctex_line_spread_fp } + \fp_compare:nNnTF { \l__ctex_line_spread_fp } = { 1.3 } { 1.354 } { \fp_use:N \l__ctex_line_spread_fp } }, table .fp_set:N = \l__eb_spread_table_fp, table .initial:n = 1.354, math .fp_set:N = \l__eb_spread_math_fp, - math .initial:n = 1.354, + math .initial:n = 1.2, footnote .code:n = { - \fp_set:Nn \l__eb_spread_footnote_fp {#1} + \tl_set:Nn \eb@spread@footnote {#1} \group_begin: \footnotesize - \setspread{\fp_use:N \l__eb_spread_footnote_fp} + \setspread{\eb@spread@footnote} \exp_args:NNNo \group_end: \dim_set:Nn \footnotesep { \dim_use:N \box_ht:N \strutbox } }, @@ -1777,8 +1798,22 @@ line = #1,table = #1,math = #1, caption-every = #1,footnote = #1 }, - unknown .code:n = \eb_msg_deprecated_option:n { spread } + abovedisplayskip .code:n = + {\AfterPreamble{\skip_set:Nn \abovedisplayskip {#1}}}, + abovedisplayskip .initial:n = 0.5ex plus .1ex minus .1ex, + belowdisplayskip .code:n = + { + \AfterPreamble + { + \skip_set:Nn \belowdisplayskip {#1} + \skip_set:Nn \belowdisplayshortskip {#1} + } + }, + belowdisplayskip .initial:n = 0.5ex plus .1ex minus .1ex, + unknown .code:n = \eb_msg_deprecated_option:n { spread } } +\AfterPreamble + {\skip_set:Nn \abovedisplayshortskip { 0ex plus .1ex }} \eb_seq_map_inline:nn { table,figure,listing } @@ -1806,9 +1841,9 @@ \captionsetup[table][bi-second]{name = Table} } \eb_at_begin_environment:nn - { tabular,tabularx,tblr,longtblr,longtable } + { tabular,tabularx,longtblr,longtable } { \setspread{\fp_use:N \l__eb_spread_table_fp} } -\IfPackageAtLeastTF{tabularray}{2021/07/01}{\UseTblrLibrary{booktabs}}{} +\UseTblrLibrary{booktabs} \bool_if:NF \l__eb_float_page_bool { @@ -2022,13 +2057,6 @@ \setspread{\fp_use:N \l__eb_spread_math_fp} \spread@equation } -\ctex_after_end_preamble:n - { - \skip_set:Nn \abovedisplayskip { 6pt plus 1pt minus 1pt } - \skip_set:Nn \belowdisplayskip { 6pt plus 1pt minus 1pt } - \skip_set:Nn \abovedisplayshortskip { 0pt plus 1pt minus 1pt } - \skip_set:Nn \belowdisplayshortskip { 6pt plus 1pt minus 1pt } - } \ctex_at_end_package:nn { unicode-math } { \msg_redirect_module:nnn { unicode-math } { warning } { info } } \ctex_at_end_package:nn { tcolorbox } @@ -2071,7 +2099,7 @@ { \group_begin: \tl_set_eq:NN \eb@toc@title \bibname - \IfValueT{##3}{ \keys_set:nn { eb/floattoc } {##3} } + \IfValueT{##3}{ \keys_set:nn { eb/tocouter } {##3} } \cs_set_protected:Npn \bibsection { \eb_toc_title_level_cmd:n {##1} @@ -2092,7 +2120,6 @@ \bool_if:NTF \l__eb_class_mode_book_bool { \bichapter*{#1}{\eb@bib@bitoc@title} } { \bisection*{#1}{\eb@bib@bitoc@title} } - \sectionmark{#1} } \cs_new_protected:Npn \eb_biber_biblatex_set: { @@ -2215,7 +2242,7 @@ \clist_map_function:nN { { none, 000000,000000,000000 }, - { seaside, 4169e1,9932cc,eb6100 }, + { seaside, 3f3fc4,9932cc,09cc00 }, { energy, f39800,00a0e9,893895 }, { cyberpunk, 601986,eb6877,a4005b } } @@ -2352,7 +2379,7 @@ } %</package> %<*tcolorbox> -\ProvidesExplFile{eb-tcolorbox.cfg}{2024/02/16}{2024ad} +\ProvidesExplFile{eb-tcolorbox.cfg}{2024/02/18}{2024ae} {Customization of tcolorbox for easybook} \cs_set_protected:Npn \addtotcbstyle #1#2 diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf Binary files differindex dbddf2a96c..1330b516ff 100644 --- a/macros/latex/contrib/easybook/easybook.pdf +++ b/macros/latex/contrib/easybook/easybook.pdf diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex index 3a725ee03c..92848347f4 100644 --- a/macros/latex/contrib/easybook/easybook.tex +++ b/macros/latex/contrib/easybook/easybook.tex @@ -5,7 +5,7 @@ \usepackage { enumitem,newtxmath,indentfirst,tabularray, - fancyvrb,geometry,hologo,pifont,changelog + fancyvrb,geometry,hologo,pifont,changelog,calc } \definecolorscheme{blue} { @@ -23,8 +23,8 @@ name = easybook, color-scheme = blue, title = EASYBOOK使用手册, - version = v2024ad, - date = 2024/02/16, + version = v2024ae, + date = 2024/02/18, authors = 瞿毅, info = 简便地排版中文学位论文或书籍, email = toquyi@163.com, @@ -61,6 +61,7 @@ \ExplSyntaxOn\makeatletter % * Do not add entries to the index % - Leave the option value blank +\let\isvalue\cnltx@isvalue \NewDocumentCommand{\kvsplit}{st-mm} { \item\code @@ -112,6 +113,12 @@ \IfBooleanF{#1}{\cnltx@checkdefault{\hfill\newline}} } \newnote{\newtag}[1][New]{\fbox{#1}} +% Multi-row values alignment when there are many choices +\newcommand{\leftfillchoice}[2] + { + \hspace*{\widthof{\option*{#1}}+\widthof{\code{\cnltx@isvalue}}-1em} + \code{\choices{#2}} + } % Use a separate module margin marker to prevent overlap \newcommand{\smodule}[1]{\cnltx@module@text*{\normalsize #1}} \newcommand{\noitemsep}{\setlength{\itemsep}{0ex}} @@ -308,7 +315,8 @@ \end{options} \begin{options} - \keychoice{mathfont}{\fbox{times},noto,notosans,nc,stix2,charter,ebgaramond,libertine,none}\dtag + \keychoice{mathfont}{\fbox{times},noto,notosans,nc,ncf,stix2,charter,ebgaramond,libertine}\dtag + \leftfillchoice{mathfont}{minion,garamondx,baskervaldx,baskerville,none} \\ 选择合适的数学字体,将会加载 \pkg*{newtxmath} 和 \pkg*{bm} 宏包。使用选项 \code{none} 时可以使用 \pkg*{unicode-math} 等其它数学字体宏包定义字体。 \end{options} @@ -454,8 +462,8 @@ \keyval{line}{数值} 正文行距因子。行距因子初始值为 \code{1.354}(相当于 \textsf{Word} 的1.25倍行距),如果设置了文类或 \pkg*{ctex} 宏包的全局行距选项 \option*{linespread} 则初始值设为它的值。 \keyval{table}{数值}\Default{1.354} - 表格内容行距因子。对传统表格 \env{tabular} 和 \env{tabularx} 等环境以及 \pkg*{tabularray} 宏包的 \env{tblr} 环境生效,同时 \env{tblr} 也自带有 \option*{stretch} 选项设置行距系数。 - \keyval{math}{数值}\Default{1.354} + 表格内容行距因子,对传统表格 \env{tabular} 和 \env{tabularx} 等环境生效。\pkg*{tabularray} 宏包的 \env{tblr} 环境自带 \option*{stretch} 和 \option*{rowsep} 等行间距选项,这里不做调整。 + \keyval{math}{数值}\Default{1.2} 数学环境的行距因子,包含了 \pkg*{amsmath} 和 \pkg*{mathtools} 宏包提供的公式环境。 \keyval{caption-figure}{数值}\Default{1.2} 图片题注的行距因子。 @@ -473,6 +481,10 @@ \end{ctexexam} \keyval{every}{数值} 统一设置上述所有的行距因子。 + \keyval{abovedisplayskip}{弹性长度}\Default{0.5ex plus .1ex minus .1ex}\newtag% + 行间公式与上面正文间的额外距离。 + \keyval{belowdisplayskip}{弹性长度}\Default{0.5ex plus .1ex minus .1ex}\newtag% + 行间公式与下面正文间的额外距离。 \end{options} \subsection[其它字体]{其它字体\smodule{subfont}} @@ -880,7 +892,7 @@ \keyval{lolskip}{弹性长度}\Default{10pt} 代码目录中每章第一个条目上方增加的垂直距离。与 \CTeX 的表格和图片目录中每章间的条目距离选项 \option*{lotskip} 和 \option*{lofskip} 类似,在 \cls*{article} 模式中此选项失效。 \keyval{between}{代码钩子}\dtag[\textcolor{red}{\ding{73}}] - 目录标题与条目内容间的钩子(作用于标题下方间距之后),一般插入负的垂直距离代码用于抵消目录首行额外的垂直间距。除了条目名的键路径外,此选项也可用于 \module*{tocset} 路径中,表示章节标题目录标题代码钩子。 + 目录标题与条目内容间的钩子(作用于标题下方间距之后),如果是 \cls*{book} 模式则默认插入 \code{-10pt} 垂直距离抵消首行目录的额外垂直间距,这是由于图表和 由 \pkg*{newfloat} 宏包所创建环境的目录默认每使用一次章标题在题注目录中插入 \code{10pt} 距离。除了条目名的键路径外,此选项也可用于 \module*{tocset} 路径中,表示章节标题目录标题代码钩子,如果是 \cls*{book} 模式则默认插入 \code{-1pc} 垂直距离。 \keyval{bibetween}{代码钩子} 与选项 \option{between} 类似,是英文章节标题目录(如果启用)标题代码钩子。 \keychoice{dotalign}{\fbox{true},false} @@ -919,7 +931,7 @@ \begin{options} \keychoice{plan}{\fbox{cn},bi,both}\newtag[Exp]% 章节标题目录的输出方案。\code{cn} 只输出中文目录,\code{bi} 只输出英文目录。\code{both} 同时连续输出中文和英文目录,需要与双语目录标题命令 \cs{bichapter} 等或双语标题选项 \option{title} 配合使用。 - \keyval{bicontentsname}{英文目录标题}\Default{Contents}\newtag% + \keyval{bicontentsname}{英文目录标题}\Default{Contents} 英文目录的标题,为通用接口命令 \cs*{ctexset} 的选项。 \end{options} \command{listoffigures}[\sarg\oarg{键值列表}] @@ -929,9 +941,13 @@ \command{listoflstlistings}[\sarg\oarg{键值列表}] 输出代码目录命令。带有星号参数的命令不输出目录标题。 - 如果需要部分而不是全文的目录或其它类型的目录,可以查看 \pkg*{titletoc} 宏包的相关示例。如果需要双语图表目录,可以查看 \pkg*{bicaption} 宏包的相关示例。上面目录命令的可选参数改进了原本单一的功能,其中 \meta{键值列表} 的选项如下: + 如果需要部分而不是全文的目录或其它类型的目录,可以查看 \pkg*{titletoc} 宏包的相关示例。如果需要双语图表目录,可以查看 \pkg*{bicaption} 宏包的相关示例。上面目录命令的可选参数改进了原本单一的功能,也提供了配置命令 \cs{SetTocOuter} 在目录命令外设置选项默认值。 + \begin{commands} + \command{SetTocOuter}[\marg{键值列表}]\newtag% + 统一设置上述所有目录可选参数的默认值\footnote{由于目录命令通常只在文中使用一次,因此不设计为可以分别指定不同目录的参数。},其中 \meta{键值列表} 的选项如下: + \end{commands} \begin{options} - \keyval{level}{标题命令}\newtag% + \keyval{level}{标题命令} 设定输出目录标题的命令。如果使用 \option{title} 选项设置了双语标题则需要配合双语标题命令。 \begin{ctexexam} \tableofcontents[level = \chapter*] @@ -942,7 +958,20 @@ \kvsplit{title}{中文目录标题,英文目录标题} 用于更改目录的双语标题。标题之间用一个英文逗号分开,对主目录来说前部分为中文目录标题,后部分为英文目录标题,对图表和代码目录来说后部分则是加入英文目录的条目。也可以只有一部分,表示中文目录的标题。 \keychoice{bilist}{mix,\fbox{new}} - 确定章节标题目录中双语标题条目的输出排列方式。选项 \code{mix} 使每个英文标题条目在中文目录中跟随对应的中文标题输出,\code{new} 则在新建的英文目录中输出英文标题。 + 确定章节标题目录中双语标题条目的输出排列方式。选项 \code{mix} 使每个英文标题条目在中文目录中跟随对应的中文标题输出,\code{new} 则在新建的英文目录中输出英文标题。这是个全局选项,在所有目录的可选参数中使用均可生效,但推荐在章节标题目录中使用。 + \begin{commands} + \command{ebifbitoc}[\marg{英文目录代码}\marg{中文目录代码}]\newtag% + 启用混合双语目录条目即 \keyis{bilist}{mix} 时,在设置目录样式时可以配合 \cs{ebifbitoc} 命令判断当前条目是否为英文,从而输出不同的代码。 + \begin{ctexexam} + \SetTocStyle{section}{fancy} + { + tocformat = \ebifbitoc{\color{red}}{\small}, + tocindent = \ebifbitoc{1em}{2em} + } + \UseTocStyle{section}{fancy}{toc} + \tableofcontents[bilist = mix] + \end{ctexexam} + \end{commands} \keyval{format}{目录标题格式} 设置目录标题的格式,在标题级别为 \code{chapter} 或者 \cls*{article} 模式且标题级别为 \code{section} 时有效。 \keyval{aftertitle}{标题后代码} @@ -1358,13 +1387,17 @@ \shortversion{v = 1.638,date = 2022/03/04,changes = 增加目录条目样式选项注册命令 \cs{RegisterTocName}。} \shortversion{v = 1.644,date = 2022/03/10,changes = 增加浮动环境目录声明命令 \cs{DeclareFloatList} 配合 \pkg*{caption} 宏包。} \shortversion{v = 1.682,date = 2022/05/01,changes = 将迷你页判断命令 \cs{notminipage} 改为被保护命令兼容 \pkg*{circledtext} 宏包。} - \begin{version}[v = 2024ad,date = 2024/02/16,simple] - \item 核对依赖宏包的更新改动,优化使用手册的内容细节。 + \begin{version}[v = 2024ae,date = 2024/02/18] + \fixed \item 修复图表等浮动环境题注目录中条目标签编号的计数器值显示错误问题。 \item 修复附录命令 \cs{appendix} 的可选参数设置英文目录中条目名字和编号失效的问题。 + \item 修复 \pkg*{biblatex} 宏包对脚注打补丁失效的问题。 + \added \item 新增目录风格定义命令 \cs{SetTocStyle} 和使用命令 \cs{UseTocStyle}。 + \item 新增目录配置命令 \cs{SetTocOuter} 双语目录判断命令 \cs{ebifbitoc}。 \item 新增脚注段落文本格式定义命令 \cs{deffntpara} 和脚注间距离选项 \option{footnotesep}。 \item 新增悬挂缩进命令 \cs{hangfrom}。 + \item 新增行间公式与正文上下间距选项 \option{abovedisplayskip} 和 \option{belowdisplayskip}。 \end{version} \end{changelog} \nocite{*} diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md index 472c43a655..ac41336237 100644 --- a/macros/latex/contrib/l3kernel/CHANGELOG.md +++ b/macros/latex/contrib/l3kernel/CHANGELOG.md @@ -7,6 +7,15 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2024-02-18] + +### Changed +- Work-around to enable `\prop_set_from_keyval:Nn`, etc., to avoid an error if + `prop` is not already defined + +### Fixed +- Extend debug checking to cover `\prop_(g)set_from_keyval:Nn` + ## [2024-02-13] ### Added @@ -1668,7 +1677,8 @@ this project uses date-based 'snapshot' version identifiers. - Step functions have been added for dim variables, e.g. `\dim_step_inline:nnnn` -[Unreleased]: https://github.com/latex3/latex3/compare/2024-02-13...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2024-02-18...HEAD +[2024-02-18]: https://github.com/latex3/latex3/compare/2024-02-13...2024-02-18 [2024-02-13]: https://github.com/latex3/latex3/compare/2024-01-22...2024-02-13 [2024-01-22]: https://github.com/latex3/latex3/compare/2024-01-04...2024-01-22 [2024-01-04]: https://github.com/latex3/latex3/compare/2023-12-11...2024-01-04 diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md index ee146d0405..769204cdef 100644 --- a/macros/latex/contrib/l3kernel/README.md +++ b/macros/latex/contrib/l3kernel/README.md @@ -1,7 +1,7 @@ LaTeX3 Programming Conventions ============================== -Release 2024-02-13 +Release 2024-02-18 Overview -------- diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx index a2f820f71f..f09ff8a437 100644 --- a/macros/latex/contrib/l3kernel/expl3.dtx +++ b/macros/latex/contrib/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> %</driver|generic|package|2ekernel> -\def\ExplFileDate{2024-02-13}% +\def\ExplFileDate{2024-02-18}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf Binary files differindex 03b7a491c1..1117b70706 100644 --- a/macros/latex/contrib/l3kernel/expl3.pdf +++ b/macros/latex/contrib/l3kernel/expl3.pdf diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf Binary files differindex dcbc798249..9c0fc6973e 100644 --- a/macros/latex/contrib/l3kernel/interface3.pdf +++ b/macros/latex/contrib/l3kernel/interface3.pdf diff --git a/macros/latex/contrib/l3kernel/interface3.tex b/macros/latex/contrib/l3kernel/interface3.tex index c4c45a6bca..63d687c9bd 100644 --- a/macros/latex/contrib/l3kernel/interface3.tex +++ b/macros/latex/contrib/l3kernel/interface3.tex @@ -58,7 +58,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2023-12-08} +\date{Released 2024-02-18} \pagenumbering{roman} \maketitle diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx index bc79956d05..0bfa11edaf 100644 --- a/macros/latex/contrib/l3kernel/l3basics.dtx +++ b/macros/latex/contrib/l3kernel/l3basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % @@ -1252,16 +1252,22 @@ % \begin{function}[EXP]{\if:w, \if_charcode:w, \if_catcode:w} % \begin{syntax} % "\if:w" <token(s)> <true code> "\else:" <false code> "\fi:" \\ -% "\if_catcode:w" <token(s_> <true code> "\else:" <false code> "\fi:" +% "\if_catcode:w" <token(s)> <true code> "\else:" <false code> "\fi:" % \end{syntax} +% "\if_charcode:w" is an alternative name for "\if:w". % These conditionals expand \meta{token(s)} until two -% unexpandable tokens \meta{token_1} and \meta{tokens_2} are left; -% any further tokens become part of the \meta{true code}. -% If you wish to prevent this expansion, -% prefix the token in question with "\exp_not:N". "\if_catcode:w" -% tests if the category codes of the two tokens are the same whereas -% "\if:w" tests if the character codes are -% identical. "\if_charcode:w" is an alternative name for "\if:w". +% unexpandable tokens \meta{token_1} and \meta{token_2} are found; +% any further tokens up to the next unbalanced "\else:" are the true branch, +% ending with \meta{true code}. It is executed if the condition is fulfilled, +% otherwise \meta{false code} is executed. +% You can omit "\else:" when just in front of "\fi:" and +% you can nest "\if...\else:...\fi:" constructs inside the true branch or the +% \meta{false code}. +% With "\exp_not:N", you can prevent the expansion of a token. +% +% "\if_catcode:w" +% tests if \meta{token_1} and \meta{token_2} have the same category code whereas +% "\if:w" and \cs{if_charcode:w} test if they have the same character code. % \begin{texnote} % \cs{if:w} and \cs{if_charcode:w} are both the \TeX{} primitive \tn{if}. % \cs{if_catcode:w} is the \TeX{} primitive \tn{ifcat}. diff --git a/macros/latex/contrib/l3kernel/l3bitset.dtx b/macros/latex/contrib/l3kernel/l3bitset.dtx index e87a9c9e0f..38375db79b 100644 --- a/macros/latex/contrib/l3kernel/l3bitset.dtx +++ b/macros/latex/contrib/l3kernel/l3bitset.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx index b6a747f833..42799fd051 100644 --- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx +++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx index 5cb80d888d..5582196acd 100644 --- a/macros/latex/contrib/l3kernel/l3box.dtx +++ b/macros/latex/contrib/l3kernel/l3box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3cctab.dtx b/macros/latex/contrib/l3kernel/l3cctab.dtx index a11b0e31a7..43639710ca 100644 --- a/macros/latex/contrib/l3kernel/l3cctab.dtx +++ b/macros/latex/contrib/l3kernel/l3cctab.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx index 54b558f7ea..a017b91c03 100644 --- a/macros/latex/contrib/l3kernel/l3clist.dtx +++ b/macros/latex/contrib/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx index c8a71eb252..3647bb7d77 100644 --- a/macros/latex/contrib/l3kernel/l3coffins.dtx +++ b/macros/latex/contrib/l3kernel/l3coffins.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3color.dtx b/macros/latex/contrib/l3kernel/l3color.dtx index 6ecdf216c4..9d07855fed 100644 --- a/macros/latex/contrib/l3kernel/l3color.dtx +++ b/macros/latex/contrib/l3kernel/l3color.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx index f345c6d303..af4afcdf69 100644 --- a/macros/latex/contrib/l3kernel/l3debug.dtx +++ b/macros/latex/contrib/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % @@ -69,7 +69,7 @@ % % Standard file identification. % \begin{macrocode} -\ProvidesExplFile{l3debug.def}{2024-02-13}{}{L3 Debugging support} +\ProvidesExplFile{l3debug.def}{2024-02-18}{}{L3 Debugging support} % \end{macrocode} % % \begin{variable}{\s_@@_stop} @@ -787,6 +787,7 @@ \prop_put_from_keyval:Nn \prop_remove:Nn \prop_set_eq:NN + \prop_set_from_keyval:Nn \seq_set_eq:NN \skip_zero:N \skip_set:Nn @@ -867,6 +868,7 @@ \prop_gput_from_keyval:Nn \prop_gremove:Nn \prop_gset_eq:NN + \prop_gset_from_keyval:Nn \seq_gset_eq:NN \skip_gzero:N \skip_gset:Nn diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx index 674ca610bd..50c5edd996 100644 --- a/macros/latex/contrib/l3kernel/l3deprecation.dtx +++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % @@ -321,9 +321,9 @@ % % \begin{macro}[deprecated]{\msg_gset:nnnn, \msg_gset:nnn} % \begin{macrocode} -\__kernel_patch_deprecation:nnNNpn { 2024-01-17 } { \msg_set:nnnn } +\__kernel_patch_deprecation:nnNNpn { 2024-02-13 } { \msg_set:nnnn } \cs_new_protected:Npn \msg_gset:nnnn { \msg_set:nnnn } -\__kernel_patch_deprecation:nnNNpn { 2024-01-17 } { \msg_set:nnn } +\__kernel_patch_deprecation:nnNNpn { 2024-02-13 } { \msg_set:nnn } \cs_new_protected:Npn \msg_gset:nnn { \msg_set:nnn } % \end{macrocode} % \end{macro} diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx index 48e022ae80..9e5c4b5449 100644 --- a/macros/latex/contrib/l3kernel/l3doc.dtx +++ b/macros/latex/contrib/l3kernel/l3doc.dtx @@ -71,7 +71,7 @@ and all files in that bundle must be distributed together. % This isn't included in the typeset documentation because it's a bit % ugly: %<*class> -\ProvidesExplClass{l3doc}{2024-02-13}{} +\ProvidesExplClass{l3doc}{2024-02-18}{} {L3 Experimental documentation class} %</class> % \fi @@ -84,7 +84,7 @@ and all files in that bundle must be distributed together. % require you to do updates, if the class changes.}} % % \author{\Team} -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % \maketitle % \tableofcontents % diff --git a/macros/latex/contrib/l3kernel/l3doc.pdf b/macros/latex/contrib/l3kernel/l3doc.pdf Binary files differindex 9d301da547..da81829479 100644 --- a/macros/latex/contrib/l3kernel/l3doc.pdf +++ b/macros/latex/contrib/l3kernel/l3doc.pdf diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx index f55be84c36..08823150c0 100644 --- a/macros/latex/contrib/l3kernel/l3docstrip.dtx +++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf Binary files differindex 923689f3d8..457ab48f9e 100644 --- a/macros/latex/contrib/l3kernel/l3docstrip.pdf +++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/contrib/l3kernel/l3expan.dtx index 7527b4091a..1af40338cf 100644 --- a/macros/latex/contrib/l3kernel/l3expan.dtx +++ b/macros/latex/contrib/l3kernel/l3expan.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx index 091c7b57f0..26ff4b3cf4 100644 --- a/macros/latex/contrib/l3kernel/l3file.dtx +++ b/macros/latex/contrib/l3kernel/l3file.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx index d1325b2c96..e182bd91f8 100644 --- a/macros/latex/contrib/l3kernel/l3flag.dtx +++ b/macros/latex/contrib/l3kernel/l3flag.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % @@ -348,9 +348,9 @@ % code is activated, it checks existence of the \texttt{N}-type flag % variables that result. % -% \begin{macro}{\flag_new:n, \flag_clear:n, \flag_clear_new:n} -% \begin{macro}[EXP, pTF]{\flag_if_exist:n, \flag_if_raised:n} -% \begin{macro}[EXP]{\flag_height:n, \flag_raise:n, \flag_ensure_raised:n} +% \begin{macro}[no-user-doc]{\flag_new:n, \flag_clear:n, \flag_clear_new:n} +% \begin{macro}[EXP, pTF, no-user-doc]{\flag_if_exist:n, \flag_if_raised:n} +% \begin{macro}[EXP, no-user-doc]{\flag_height:n, \flag_raise:n, \flag_ensure_raised:n} % \begin{macrocode} \cs_new_protected:Npn \flag_new:n #1 { \flag_new:c { l_#1_flag } } \cs_new_protected:Npn \flag_clear:n #1 { \flag_clear:c { l_#1_flag } } @@ -371,7 +371,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\flag_show:n, \flag_log:n, \@@_show:Nn} +% \begin{macro}[no-user-doc]{\flag_show:n, \flag_log:n, \@@_show:Nn} % To avoid changing the output here we mostly keep the old code. % \begin{macrocode} \cs_new_protected:Npn \flag_show:n { \@@_show:Nn \tl_show:n } diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx index ca71600b16..acec6c1b92 100644 --- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-assign.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % \maketitle % % \begin{documentation} diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx index 1c8c57a3f9..306c35b86c 100644 --- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx index 4227b8f6f5..f5460d81df 100644 --- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx index 413d4988a5..bdd6f17003 100644 --- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx index 0013d859a9..ecc9f0561c 100644 --- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-expo.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx index be9cc93107..79490a1f5a 100644 --- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-extended.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-functions.dtx b/macros/latex/contrib/l3kernel/l3fp-functions.dtx index 4024dbacf3..5ac7deff34 100644 --- a/macros/latex/contrib/l3kernel/l3fp-functions.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-functions.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx index 42d88735c4..c433b72d2d 100644 --- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-logic.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx index 2bcd5a2c89..7d7c9cabf4 100644 --- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-parse.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx index 7d32a59a51..8ca58cc5a7 100644 --- a/macros/latex/contrib/l3kernel/l3fp-random.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-random.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx index e6bb4e58c0..7bdf0c3efd 100644 --- a/macros/latex/contrib/l3kernel/l3fp-round.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx b/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx index 088c118b9c..c771c69d15 100644 --- a/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx index 90f33a7aa4..693af9e981 100644 --- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % \maketitle % % \begin{documentation} diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx index c7d235b991..28a70763a4 100644 --- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-trig.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-types.dtx b/macros/latex/contrib/l3kernel/l3fp-types.dtx index 2843b9131c..8a621d7096 100644 --- a/macros/latex/contrib/l3kernel/l3fp-types.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-types.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx index cfd8b118fc..9ccc42b1dc 100644 --- a/macros/latex/contrib/l3kernel/l3fp.dtx +++ b/macros/latex/contrib/l3kernel/l3fp.dtx @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx index b9b4e4a096..4c0460d076 100644 --- a/macros/latex/contrib/l3kernel/l3fparray.dtx +++ b/macros/latex/contrib/l3kernel/l3fparray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx index 9a6d09f193..728804f5f4 100644 --- a/macros/latex/contrib/l3kernel/l3int.dtx +++ b/macros/latex/contrib/l3kernel/l3int.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx index cc3f7a2c6c..0c9f78db99 100644 --- a/macros/latex/contrib/l3kernel/l3intarray.dtx +++ b/macros/latex/contrib/l3kernel/l3intarray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx index c19add5937..0300696929 100644 --- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx +++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % @@ -206,7 +206,7 @@ % \cs{__kernel_deprecation_code:nn} \Arg{error code} \Arg{working code} % \end{syntax} % Stores both an \meta{error} and \meta{working} definition for given material -% such that they can be exchanged by \cs{debug_on:} and \cs{debug_off:}. +% such that they can be exchanged by \cs{debug_on:n} and \cs{debug_off:n}. % \end{function} % % \begin{function}[EXP]{\__kernel_exp_not:w} diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx index 18b42ae30d..2b5327c9bb 100644 --- a/macros/latex/contrib/l3kernel/l3keys.dtx +++ b/macros/latex/contrib/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx index 0a7b8bb9a1..3c7cfc2937 100644 --- a/macros/latex/contrib/l3kernel/l3legacy.dtx +++ b/macros/latex/contrib/l3kernel/l3legacy.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx index 8a18c7fbf1..ab77d9dab8 100644 --- a/macros/latex/contrib/l3kernel/l3luatex.dtx +++ b/macros/latex/contrib/l3kernel/l3luatex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx index 5cbf548e0e..efa741f3b8 100644 --- a/macros/latex/contrib/l3kernel/l3msg.dtx +++ b/macros/latex/contrib/l3kernel/l3msg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx index 6a1bb766d1..72d11a4d9e 100644 --- a/macros/latex/contrib/l3kernel/l3names.dtx +++ b/macros/latex/contrib/l3kernel/l3names.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf Binary files differindex 31473fd53c..fd20895dd2 100644 --- a/macros/latex/contrib/l3kernel/l3news.pdf +++ b/macros/latex/contrib/l3kernel/l3news.pdf diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf Binary files differindex 1e97f4aaca..db9c210133 100644 --- a/macros/latex/contrib/l3kernel/l3news01.pdf +++ b/macros/latex/contrib/l3kernel/l3news01.pdf diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf Binary files differindex ed804fc6b3..90f997495b 100644 --- a/macros/latex/contrib/l3kernel/l3news02.pdf +++ b/macros/latex/contrib/l3kernel/l3news02.pdf diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf Binary files differindex ffcf4a37f2..29726a457e 100644 --- a/macros/latex/contrib/l3kernel/l3news03.pdf +++ b/macros/latex/contrib/l3kernel/l3news03.pdf diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf Binary files differindex 971bea5082..0497dfdd70 100644 --- a/macros/latex/contrib/l3kernel/l3news04.pdf +++ b/macros/latex/contrib/l3kernel/l3news04.pdf diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf Binary files differindex bbdc0373a5..f3ff96748c 100644 --- a/macros/latex/contrib/l3kernel/l3news05.pdf +++ b/macros/latex/contrib/l3kernel/l3news05.pdf diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf Binary files differindex 3a46d423fa..f79e8a7b97 100644 --- a/macros/latex/contrib/l3kernel/l3news06.pdf +++ b/macros/latex/contrib/l3kernel/l3news06.pdf diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf Binary files differindex 6c9632fdf4..cdb64db395 100644 --- a/macros/latex/contrib/l3kernel/l3news07.pdf +++ b/macros/latex/contrib/l3kernel/l3news07.pdf diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf Binary files differindex 5ec72ff809..92dcba924e 100644 --- a/macros/latex/contrib/l3kernel/l3news08.pdf +++ b/macros/latex/contrib/l3kernel/l3news08.pdf diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf Binary files differindex a2ea7832c0..03bc119504 100644 --- a/macros/latex/contrib/l3kernel/l3news09.pdf +++ b/macros/latex/contrib/l3kernel/l3news09.pdf diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf Binary files differindex 113dfe2f19..e63e5c5935 100644 --- a/macros/latex/contrib/l3kernel/l3news10.pdf +++ b/macros/latex/contrib/l3kernel/l3news10.pdf diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf Binary files differindex 74d21a3c62..7169cfa33a 100644 --- a/macros/latex/contrib/l3kernel/l3news11.pdf +++ b/macros/latex/contrib/l3kernel/l3news11.pdf diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf Binary files differindex ccbd0305ff..4ee15a6eee 100644 --- a/macros/latex/contrib/l3kernel/l3news12.pdf +++ b/macros/latex/contrib/l3kernel/l3news12.pdf diff --git a/macros/latex/contrib/l3kernel/l3pdf.dtx b/macros/latex/contrib/l3kernel/l3pdf.dtx index 0490af4c46..75f88eca38 100644 --- a/macros/latex/contrib/l3kernel/l3pdf.dtx +++ b/macros/latex/contrib/l3kernel/l3pdf.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3prefixes.csv b/macros/latex/contrib/l3kernel/l3prefixes.csv index 286be82652..54fb41bdeb 100644 --- a/macros/latex/contrib/l3kernel/l3prefixes.csv +++ b/macros/latex/contrib/l3kernel/l3prefixes.csv @@ -97,7 +97,7 @@ fmwao,widows-and-orphans,Frank Mittelbach,https://www.latex-project.org/,https:/ fnote,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex2e.git,https://github.com/latex3/latex2e/issues,2023-10-17,2023-10-17, fnpct,fnpct,Clemens Niederberger,https://github.com/cgnieder/fnpct/,https://github.com/cgnieder/fnpct.git,https://github.com/cgnieder/fnpct/issues,2013-03-16,2020-04-14, fontsizes,fontsizes,Julien Rivaud,,,,,2018-06-13, -fontspec,fontspec,Will Robertson,https://github.com/wspr/fontspec,https://github.com/wspr/fontspec.git,https://github.com/wspr/fontspec/issues,2013-03-16,2013-03-16, +fontspec,fontspec,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/fontspec.git,https://github.com/latex3/fontspec/issues,2013-03-16,2024-02-15, fp,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, fun,functional,Jianrui Lyu,https://github.com/lvjr/functional,https://github.com/lvjr/functional.git,https://github.com/lvjr/functional/issues,2022-04-02,2022-04-02, galley,l3galley,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, @@ -277,7 +277,7 @@ withargs,withargs,Michiel Helvensteijn,,,,2014-02-05,2014-02-05, witharrows,witharrows,François Pantigny,,,,2019-12-19,2019-12-19, xeCJK,xecjk,Qing Lee,https://github.com/CTeX-org/ctex-kit,https://github.com/CTeX-org/ctex-kit.git,https://github.com/CTeX-org/ctex-kit/issues,2013-05-26,2013-05-26, xetex,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, -xfrac,xfrac,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, +xfrac,xfrac,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/xfrac.git,https://github.com/latex3/xfrac/issues,2012-09-27,2024-02-14, xmarks,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex2e.git,https://github.com/latex3/latex2e/issues,2021-03-03,2021-03-03, xparse,xparse,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, xpatch,"regexpatch,xpatch",Enrico Gregorio,,,,2013-03-16,2013-03-16, diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf Binary files differindex 2bd39c3787..7aaca4d831 100644 --- a/macros/latex/contrib/l3kernel/l3prefixes.pdf +++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/contrib/l3kernel/l3prg.dtx index 5b7a36238b..a90e86669a 100644 --- a/macros/latex/contrib/l3kernel/l3prg.dtx +++ b/macros/latex/contrib/l3kernel/l3prg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx index 8281611924..acab35c56e 100644 --- a/macros/latex/contrib/l3kernel/l3prop.dtx +++ b/macros/latex/contrib/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % @@ -1014,9 +1014,11 @@ % make the second choice; this way props that are accidentally % \tn{relax} are treated as they were before. The auxiliary receives % \cs{use_i:nn} or \cs{use_ii:nn} as~|#3|. +% As a transitional fix we avoid erroring in case the prop is undefined (the \cs{exp_after:wN} is omitted in that case, taking the flat branch). % \begin{macrocode} \cs_new:Npn \@@_if_flat:NTF #1 { + \prop_if_exist:NT #1 \exp_after:wN \@@_if_flat_aux:w #1 \s_@@_mark \use_ii:nn \@@_flatten:w \s_@@_mark \use_i:nn \s_@@_stop diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx index 3aeff3f8de..e29563a054 100644 --- a/macros/latex/contrib/l3kernel/l3quark.dtx +++ b/macros/latex/contrib/l3kernel/l3quark.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx index d59d61ddb6..2a7e996edd 100644 --- a/macros/latex/contrib/l3kernel/l3regex.dtx +++ b/macros/latex/contrib/l3kernel/l3regex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx index c68a7a86af..2eeaf3386e 100644 --- a/macros/latex/contrib/l3kernel/l3seq.dtx +++ b/macros/latex/contrib/l3kernel/l3seq.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx index e18ea29c9b..0d8ec55663 100644 --- a/macros/latex/contrib/l3kernel/l3skip.dtx +++ b/macros/latex/contrib/l3kernel/l3skip.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx index 0e9e70bbdb..309bbdc4bb 100644 --- a/macros/latex/contrib/l3kernel/l3sort.dtx +++ b/macros/latex/contrib/l3kernel/l3sort.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx index dc87dbb621..75c3e14ee2 100644 --- a/macros/latex/contrib/l3kernel/l3str-convert.dtx +++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx index 8be8e8ff09..ca31ee72eb 100644 --- a/macros/latex/contrib/l3kernel/l3str.dtx +++ b/macros/latex/contrib/l3kernel/l3str.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf Binary files differindex c40939a7a3..e51d369b0b 100644 --- a/macros/latex/contrib/l3kernel/l3styleguide.pdf +++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf diff --git a/macros/latex/contrib/l3kernel/l3styleguide.tex b/macros/latex/contrib/l3kernel/l3styleguide.tex index d2e46f56c4..98b50b2f30 100644 --- a/macros/latex/contrib/l3kernel/l3styleguide.tex +++ b/macros/latex/contrib/l3kernel/l3styleguide.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2023-12-08} +\date{Released 2024-02-18} \begin{document} diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf Binary files differindex e8db43bb3e..3bdc707c38 100644 --- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf +++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.tex b/macros/latex/contrib/l3kernel/l3syntax-changes.tex index 0b64e14487..2b605478d0 100644 --- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex +++ b/macros/latex/contrib/l3kernel/l3syntax-changes.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2023-12-08} +\date{Released 2024-02-18} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx index d62bd9a80b..32de4338c5 100644 --- a/macros/latex/contrib/l3kernel/l3sys.dtx +++ b/macros/latex/contrib/l3kernel/l3sys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf Binary files differindex 736d53b4c0..93e859b252 100644 --- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf +++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.tex b/macros/latex/contrib/l3kernel/l3term-glossary.tex index f26cf48fbe..c9393940ad 100644 --- a/macros/latex/contrib/l3kernel/l3term-glossary.tex +++ b/macros/latex/contrib/l3kernel/l3term-glossary.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2023-12-08} +\date{Released 2024-02-18} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx index ec9368ae18..3d73b8d5d6 100644 --- a/macros/latex/contrib/l3kernel/l3text-case.dtx +++ b/macros/latex/contrib/l3kernel/l3text-case.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3text-map.dtx b/macros/latex/contrib/l3kernel/l3text-map.dtx index c8e5db95dc..4ae250c241 100644 --- a/macros/latex/contrib/l3kernel/l3text-map.dtx +++ b/macros/latex/contrib/l3kernel/l3text-map.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx index a797b3a609..35a63c0320 100644 --- a/macros/latex/contrib/l3kernel/l3text-purify.dtx +++ b/macros/latex/contrib/l3kernel/l3text-purify.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx index 7ef37636f3..91df04a4b8 100644 --- a/macros/latex/contrib/l3kernel/l3text.dtx +++ b/macros/latex/contrib/l3kernel/l3text.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx index 9ff2ec04e7..62ce80c145 100644 --- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx +++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % @@ -1216,7 +1216,7 @@ % { % \peek_analysis_map_inline:n, % \@@_peek_analysis_loop:NNn, \@@_peek_analysis_test:, -% \@@_peek_analysis_exp:N, \@@_peek_analysis_exp_active:N, +% \@@_peek_analysis_exp:N, \@@_peek_analysis_exp_aux:N, % \@@_peek_analysis_nonexp:N, \@@_peek_analysis_cs:N, % \@@_peek_analysis_char:N, \@@_peek_analysis_char:w, % \@@_peek_analysis_special:, \@@_peek_analysis_retest:, @@ -1230,9 +1230,11 @@ % Save the user's code in a control sequence that is suitable for % nested maps. We may wish to pass to this function an \tn{outer} % control sequence or active character; for this we will undefine -% potentially-\tn{outer} tokens within a group, closed after the -% function reads its arguments (for an \tn{outer} active character -% there is no good alternative). This user's code function also +% any expandable token (testing if it is \tn{outer} is much slower) +% within a group, closed immediately after the function reads its +% arguments to avoid affecting the user's code or even our peek code +% (there is no risk of undefining \cs{group_end:} itself since that is +% not expandable). This user's code function also % calls the loop auxiliary, and includes the trailing % \cs{prg_break_point:Nn} for when the user wants to stop the loop. % The loop auxiliary must remove that break point because it must look @@ -1261,7 +1263,11 @@ % The loop starts a group (closed by the user-code function defined % above) with a normalized escape character, and checks if the next % token is special or \texttt{N}-type (distinguishing expandable from -% non-expandable tokens). +% non-expandable tokens). The test for nonexpandable tokens in +% \cs{@@_peek_analysis_test:} must be done after the tests for +% begin-group, end-group, and space tokens, in case \cs{l_peek_token} +% is either \tn{outer} or is a primitive \TeX{} conditional, as such +% tokens cannot be skipped over correctly by conditional code. % \begin{macrocode} \cs_new_protected:Npn \@@_peek_analysis_loop:NNn #1#2#3 { @@ -1317,11 +1323,9 @@ % the two cases is easy: since we have made the escape character % printable, \cs{token_to_str:N} gives at least two characters for a % control sequence versus a single one for an active character -% (possibly being a space). Producing the right outcome is trickier, -% as |#1| cannot appear in either branch of the conditional (it could -% be \tn{outer}, or simply a \TeX{} conditional), and can only be -% safely discarded by \cs{use_none:n} if it is first hit with -% \cs{exp_not:N}. +% (possibly being a space). Importantly, once we apply +% \cs{token_to_str:N} we no longer need to worry about \tn{outer} +% tokens. % \begin{macrocode} \cs_new_protected:Npn \@@_peek_analysis_exp:N #1 { @@ -1333,22 +1337,19 @@ \exp_not:n { \__kernel_exp_not:w \exp_after:wN } { \exp_not:N \exp_not:N \exp_not:N #1 } } - \if:w \scan_stop: - \exp_after:wN \use_none:n \token_to_str:N #1 \prg_do_nothing: - \scan_stop: - \exp_after:wN \exp_after:wN - \exp_after:wN \@@_peek_analysis_exp_active:N - \else: - { -1 } 0 - \exp_after:wN \exp_after:wN - \exp_after:wN \use_none:n - \fi: - \exp_not:N #1 + \exp_after:wN \@@_peek_analysis_exp_aux:Nw + \token_to_str:N #1 \prg_do_nothing: \s_@@ } \l_@@_peek_code_tl } -\cs_new:Npe \@@_peek_analysis_exp_active:N #1 - { { \exp_not:N \int_value:w `#1 } \token_to_str:N D } +\cs_new:Npe \@@_peek_analysis_exp_aux:Nw #1#2 \s_@@ + { + \exp_not:N \if:w \scan_stop: #2 \scan_stop: + { \exp_not:N \int_value:w `#1 } \token_to_str:N D + \exp_not:N \else: + { -1 } 0 + \exp_not:N \fi: + } % \end{macrocode} % For normal non-expandable tokens we must distinguish characters % (including active ones and macro parameter characters) from control @@ -1357,10 +1358,9 @@ % sequence call the user code with suitable arguments, wrapping |#1| % within \cs{exp_not:n} just in case it happens to be equal to a macro % parameter character. We do not skip \cs{exp_not:n} when -% unnecessary, because there might be situations where the argument -% could be used by the user after further redefinitions of the token, -% and it seems more convenient to know that \cs{exp_not:n} is always -% used. +% unnecessary, because this auxiliary is also called in +% \cs{@@_peek_analysis_retest:} where we have changed some control +% sequences or active characters to \cs{scan_stop:} temporarily. % \begin{macrocode} \cs_new_protected:Npn \@@_peek_analysis_nonexp:N #1 { @@ -1389,12 +1389,17 @@ % characters to anything else than character code~$32$), then we apply % \cs{@@_analysis_b_char:Nn}, which detects active characters by % comparing them to \cs{tex_undefined:D}, and we must have undefined -% the active space for this test to work ---we use an |e|-expanding -% assignment to get the active space in the right place. Finally -% \cs{@@_peek_analysis_char:w} puts the arguments in the correct -% order, including \cs{exp_not:n} for macro parameter characters and -% active characters (the latter could be macro parameter characters, -% and it seems more uniform to always put \cs{exp_not:n}). +% the active space (locally) for this test to work. +% To define \cs{@@_peek_analysis_char:N} itself we use an +% |e|-expanding assignment to get the active space in the right place +% after making it (just for this definition) unexpandable. +% Finally \cs{@@_peek_analysis_char:w} receives the \meta{charcode}, +% \meta{user function}, \meta{catcode}, and \meta{token}, and places +% the arguments in the correct order. It keeps \cs{exp_not:n} for +% macro parameter characters and active characters (the latter could +% be macro parameter characters, and it seems more uniform to always +% put \cs{exp_not:n}), and otherwise eliminates it by expanding once +% with \cs{exp_args:NNNo}. % \begin{macrocode} \group_begin: \char_set_active_eq:NN \ \scan_stop: @@ -1457,7 +1462,7 @@ \cs_new_protected:Npn \@@_peek_analysis_retest: { \if_meaning:w \l_@@_analysis_token \scan_stop: - \exp_after:wN \@@_peek_analysis_normal:N + \exp_after:wN \@@_peek_analysis_nonexp:N \else: \exp_after:wN \@@_peek_analysis_str: \fi: @@ -1607,8 +1612,8 @@ \@@_peek_analysis_collect:w } % \end{macrocode} -% End by calling the user code with suitable arguments (here |#1|, -% |#2| are \cs{fi:}), which closes the group begun early on. +% As in all other cases, end by calling the user code with suitable +% arguments (here |#1| is \cs{fi:}). % \begin{macrocode} \cs_new_protected:Npn \@@_peek_analysis_collect_end:NNNN #1#2#3#4 { diff --git a/macros/latex/contrib/l3kernel/l3tl-build.dtx b/macros/latex/contrib/l3kernel/l3tl-build.dtx index 7971301ef3..4a2b44b287 100644 --- a/macros/latex/contrib/l3kernel/l3tl-build.dtx +++ b/macros/latex/contrib/l3kernel/l3tl-build.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx index 1043feaad9..c1391c9de1 100644 --- a/macros/latex/contrib/l3kernel/l3tl.dtx +++ b/macros/latex/contrib/l3kernel/l3tl.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx index fe8d1a780e..a5a225ab8b 100644 --- a/macros/latex/contrib/l3kernel/l3token.dtx +++ b/macros/latex/contrib/l3kernel/l3token.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % @@ -1005,6 +1005,10 @@ % effect after the loop. Within the code, \cs{l_peek_token} is set % equal (as a token, not a token list) to the token under % consideration. +% +% Peek functions cannot be used within this mapping function (nor +% other mapping functions) since the input stream contains trailing +% material necessary for the functioning of the loop. % \begin{texnote} % In case the input stream has not yet been tokenized (converted % from characters to tokens), characters are tokenized one by one as diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx index de3b6067ba..fd4171ffaf 100644 --- a/macros/latex/contrib/l3kernel/l3unicode.dtx +++ b/macros/latex/contrib/l3kernel/l3unicode.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf Binary files differindex 09f28f0667..f660845598 100644 --- a/macros/latex/contrib/l3kernel/source3.pdf +++ b/macros/latex/contrib/l3kernel/source3.pdf diff --git a/macros/latex/contrib/l3kernel/source3.tex b/macros/latex/contrib/l3kernel/source3.tex index 5aae34aba2..0527b2c6de 100644 --- a/macros/latex/contrib/l3kernel/source3.tex +++ b/macros/latex/contrib/l3kernel/source3.tex @@ -57,7 +57,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2023-12-08} +\date{Released 2024-02-18} \pagenumbering{roman} \maketitle diff --git a/macros/latex/contrib/l3packages/CHANGELOG.md b/macros/latex/contrib/l3packages/CHANGELOG.md index abef360b7a..4677988532 100644 --- a/macros/latex/contrib/l3packages/CHANGELOG.md +++ b/macros/latex/contrib/l3packages/CHANGELOG.md @@ -7,6 +7,11 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2024-02-18] + +### Changed +- Re-added `\IfInstanceExist(TF)` to docs - is required + ## [2024-02-13] ### Changed @@ -243,7 +248,8 @@ this project uses date-based 'snapshot' version identifiers. - Switch to ISO date format - Improve cross-module use of internal functions -[Unreleased]: https://github.com/latex3/latex3/compare/2024-02-13...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2024-02-18...HEAD +[2024-02-18]: https://github.com/latex3/latex3/compare/2024-02-13...2024-02-18 [2024-02-13]: https://github.com/latex3/latex3/compare/2023-10-10...2024-02-13 [2023-10-10]: https://github.com/latex3/latex3/compare/2023-08-29...2023-10-10 [2023-08-29]: https://github.com/latex3/latex3/compare/2023-02-02...2023-08-29 diff --git a/macros/latex/contrib/l3packages/README.md b/macros/latex/contrib/l3packages/README.md index 2579ee6e96..2b489b3e97 100644 --- a/macros/latex/contrib/l3packages/README.md +++ b/macros/latex/contrib/l3packages/README.md @@ -1,6 +1,6 @@ # `l3packages`: Higher-level LaTeX3 Concepts (Deprecated) -Release 2024-02-13 +Release 2024-02-18 ## Overview diff --git a/macros/latex/contrib/l3packages/l3keys2e.dtx b/macros/latex/contrib/l3packages/l3keys2e.dtx index f5c494120a..a65b0239dd 100644 --- a/macros/latex/contrib/l3packages/l3keys2e.dtx +++ b/macros/latex/contrib/l3packages/l3keys2e.dtx @@ -62,7 +62,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % @@ -154,7 +154,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{l3keys2e}{2024-02-13}{} +\ProvidesExplPackage{l3keys2e}{2024-02-18}{} {LaTeX2e option processing using LaTeX3 keys} % \end{macrocode} % diff --git a/macros/latex/contrib/l3packages/l3keys2e.pdf b/macros/latex/contrib/l3packages/l3keys2e.pdf Binary files differindex a6e0bd9e41..b05bece984 100644 --- a/macros/latex/contrib/l3packages/l3keys2e.pdf +++ b/macros/latex/contrib/l3packages/l3keys2e.pdf diff --git a/macros/latex/contrib/l3packages/xfp.dtx b/macros/latex/contrib/l3packages/xfp.dtx index d695d44bb1..3a97e46903 100644 --- a/macros/latex/contrib/l3packages/xfp.dtx +++ b/macros/latex/contrib/l3packages/xfp.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % @@ -171,7 +171,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xfp}{2024-02-13}{} +\ProvidesExplPackage{xfp}{2024-02-18}{} {L3 Floating point unit} % \end{macrocode} % diff --git a/macros/latex/contrib/l3packages/xfp.pdf b/macros/latex/contrib/l3packages/xfp.pdf Binary files differindex b45cdd5b15..0544fac0fa 100644 --- a/macros/latex/contrib/l3packages/xfp.pdf +++ b/macros/latex/contrib/l3packages/xfp.pdf diff --git a/macros/latex/contrib/l3packages/xparse.dtx b/macros/latex/contrib/l3packages/xparse.dtx index e701edada3..6dba694d39 100644 --- a/macros/latex/contrib/l3packages/xparse.dtx +++ b/macros/latex/contrib/l3packages/xparse.dtx @@ -67,7 +67,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % @@ -1064,7 +1064,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xparse}{2024-02-13}{} +\ProvidesExplPackage{xparse}{2024-02-18}{} {L3 Experimental document command parser} % \end{macrocode} % diff --git a/macros/latex/contrib/l3packages/xparse.pdf b/macros/latex/contrib/l3packages/xparse.pdf Binary files differindex 183ebaaa78..d666c5ec7f 100644 --- a/macros/latex/contrib/l3packages/xparse.pdf +++ b/macros/latex/contrib/l3packages/xparse.pdf diff --git a/macros/latex/contrib/l3packages/xtemplate.dtx b/macros/latex/contrib/l3packages/xtemplate.dtx index ee393ef3b3..7a956d82bf 100644 --- a/macros/latex/contrib/l3packages/xtemplate.dtx +++ b/macros/latex/contrib/l3packages/xtemplate.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2024-02-13} +% \date{Released 2024-02-18} % % \maketitle % @@ -450,6 +450,14 @@ % the general idea of fixing some settings. % \end{function} % +% \begin{function}{\IfInstanceExistT, \IfInstanceExistF, \IfInstanceExistTF} +% \begin{syntax} +% \cs{IfInstanceExistTF} \Arg{object type} \Arg{instance} \Arg{true code} \Arg{false code} +% \end{syntax} +% Tests if the named \meta{instance} of a \meta{object type} exists, and +% then inserts the appropriate code into the input stream. +% \end{function} +% % \begin{function}{\DeclareInstanceCopy} % \begin{syntax} % \cs{DeclareInstanceCopy} diff --git a/macros/latex/contrib/l3packages/xtemplate.pdf b/macros/latex/contrib/l3packages/xtemplate.pdf Binary files differindex c5fc465835..9edb9f169a 100644 --- a/macros/latex/contrib/l3packages/xtemplate.pdf +++ b/macros/latex/contrib/l3packages/xtemplate.pdf diff --git a/macros/latex/contrib/randexam/randexam-a-answer.pdf b/macros/latex/contrib/randexam/randexam-a-answer.pdf Binary files differindex 6c62155246..d961cd9cb5 100644 --- a/macros/latex/contrib/randexam/randexam-a-answer.pdf +++ b/macros/latex/contrib/randexam/randexam-a-answer.pdf diff --git a/macros/latex/contrib/randexam/randexam-a-answer.tex b/macros/latex/contrib/randexam/randexam-a-answer.tex index bd1cbc9f70..09fecee21c 100644 --- a/macros/latex/contrib/randexam/randexam-a-answer.tex +++ b/macros/latex/contrib/randexam/randexam-a-answer.tex @@ -2,7 +2,7 @@ % !TEX program = xelatex \documentclass[12pt,math=all]{randexam} -%\boolfalse{exam@answer} % hide answers +%\SetExamBoolFalse{answer} % hide answers \SetExamOption{ seed = 19061116, % random seed @@ -14,7 +14,7 @@ \gradetable[total=4] -\exampart{Fill in the blanks.}{6 questions; 3 points for each; 18 points in total.} +\exampart{Fill in the blanks.}[6 questions; 3 points for each; 18 points in total.] % make answer table: six in total, three for each row, strut height 3em \answertable[total=6,column=3,strut=3em] @@ -71,7 +71,7 @@ text text text text text text text text text text $\xi-2\eta\sim$ \fillout{$N(-3 \newpage -\exampart{Select one answer from four choices.}{6 questions; 3 points for each; 18 points in total.} +\exampart{Select one answer from four choices.}[6 questions; 3 points for each; 18 points in total.] % make answer table: six in total, six for each row, default strut height \answertable[total=6,column=6] @@ -170,7 +170,7 @@ text text text text text text text text text text text text text text \pickout{D \newpage -\exampart{Work out math questions.}{6 questions; 8 points for each; 48 points in total.} +\exampart{Work out math questions.}[6 questions; 8 points for each; 48 points in total.] \begin{question} The first question $\int\e^{2x}\,(\tan x+1)^2\dx$. @@ -307,7 +307,7 @@ Text text $H_0:\mu=3140$ text text ($\alpha = 0.01$). \newpage -\exampart{Work out math proofs.}{2 questions; 16 points in total.} +\exampart{Work out math proofs.}[2 questions; 16 points in total.] \SetExamTranslation{solution-Solution=Proof} % rename "Solution" as "Proof" diff --git a/macros/latex/contrib/randexam/randexam-a-blank.pdf b/macros/latex/contrib/randexam/randexam-a-blank.pdf Binary files differindex dcc54e2939..9656be370d 100644 --- a/macros/latex/contrib/randexam/randexam-a-blank.pdf +++ b/macros/latex/contrib/randexam/randexam-a-blank.pdf diff --git a/macros/latex/contrib/randexam/randexam-b-answer.pdf b/macros/latex/contrib/randexam/randexam-b-answer.pdf Binary files differindex c6be0a3b3d..fe0867038c 100644 --- a/macros/latex/contrib/randexam/randexam-b-answer.pdf +++ b/macros/latex/contrib/randexam/randexam-b-answer.pdf diff --git a/macros/latex/contrib/randexam/randexam-b-blank.pdf b/macros/latex/contrib/randexam/randexam-b-blank.pdf Binary files differindex 17ea5a41ab..c059b6e615 100644 --- a/macros/latex/contrib/randexam/randexam-b-blank.pdf +++ b/macros/latex/contrib/randexam/randexam-b-blank.pdf diff --git a/macros/latex/contrib/randexam/randexam.cls b/macros/latex/contrib/randexam/randexam.cls index 105d3de168..ec5d1c43c2 100644 --- a/macros/latex/contrib/randexam/randexam.cls +++ b/macros/latex/contrib/randexam/randexam.cls @@ -6,7 +6,7 @@ % ---------------------------------------------------------------------------- \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{randexam}[2024-02-03 v2024D Make an exam paper and its randomized variants] +\ProvidesClass{randexam}[2024-02-18 v2024E Make an exam paper and its randomized variants] %% Old LaTeX release could not recognize date format like 2022-11-01 %\@ifl@t@r\fmtversion{2022-11-01}{}{ @@ -25,27 +25,74 @@ \IgnoreSpacesOn %% --------------------------------------------------------------------------- -%% Declare class options +%% Boolean commands for this class %% --------------------------------------------------------------------------- \RequirePackage{etoolbox} -\newbool{exam@plain} \boolfalse{exam@plain} % use plain page style -\newbool{exam@twoinone} \boolfalse{exam@twoinone} % use A3 paper -\newbool{exam@oneside} \boolfalse{exam@oneside} % use single sided exam paper -\newbool{exam@resetnumber}\booltrue{exam@resetnumber} % reset numbers in new exam parts -\newbool{exam@random} \boolfalse{exam@random} % shuffle questions -\newbool{exam@answer} \booltrue{exam@answer} % show answers -\newbool{exam@evaluator} \boolfalse{exam@evaluator} % add evaluator line in the grade table -\newbool{exam@mathdesign} \booltrue{exam@mathdesign} % use mathdesign fonts -\newbool{exam@freealign} \boolfalse{exam@freealign} % load freealign package -\newbool{exam@medmath} \boolfalse{exam@medmath} % use medium-size formulas -\newbool{exam@moremath} \boolfalse{exam@moremath} % define more math commands +\NewDocumentCommand\NewExamBool{m}{ + \newbool{exam@#1} +} + +\NewDocumentCommand\SetExamBoolTrue{m}{ + \booltrue{exam@#1} +} + +\NewDocumentCommand\SetExamBoolFalse{m}{ + \boolfalse{exam@#1} +} + +\NewExpandableDocumentCommand\IfExamBoolT{m+m}{ + \ifbool{exam@#1}{#2}{} +} + +\NewExpandableDocumentCommand\IfExamBoolF{m+m}{ + \ifbool{exam@#1}{}{#2} +} + +\NewExpandableDocumentCommand\IfExamBoolTF{m+m+m}{ + \ifbool{exam@#1}{#2}{#3} +} + +%% --------------------------------------------------------------------------- +%% Declare language commands +%% --------------------------------------------------------------------------- + +\tlSet\l@rdxm@current@language@tl{english} + +\NewExpandableDocumentCommand\IfExamLanguageEqT{m+m}{ + \ExpandArgs{V}\ifstrequal\l@rdxm@current@language@tl{#1}{#2}{} +} + +\NewExpandableDocumentCommand\IfExamLanguageEqF{m+m}{ + \ExpandArgs{V}\ifstrequal\l@rdxm@current@language@tl{#1}{}{#2} +} + +\NewExpandableDocumentCommand\IfExamLanguageEqTF{m+m+m}{ + \ExpandArgs{V}\ifstrequal\l@rdxm@current@language@tl{#1}{#2}{#3} +} + +%% --------------------------------------------------------------------------- +%% Declare class options +%% --------------------------------------------------------------------------- + +\NewExamBool{plain} \SetExamBoolFalse{plain} % use plain page style +\NewExamBool{twoinone} \SetExamBoolFalse{twoinone} % use A3 paper +\NewExamBool{oneside} \SetExamBoolFalse{oneside} % use single sided exam paper +\NewExamBool{resetnumber}\SetExamBoolTrue{resetnumber} % reset numbers in new exam parts +\NewExamBool{random} \SetExamBoolFalse{random} % shuffle questions +\NewExamBool{answer} \SetExamBoolTrue{answer} % show answers +\NewExamBool{evaluator} \SetExamBoolFalse{evaluator} % add evaluator line in the grade table +\NewExamBool{mathdesign} \SetExamBoolTrue{mathdesign} % use mathdesign fonts +\NewExamBool{freealign} \SetExamBoolFalse{freealign} % load freealign package +\NewExamBool{medmath} \SetExamBoolFalse{medmath} % use medium-size formulas +\NewExamBool{moremath} \SetExamBoolFalse{moremath} % define more math commands \DeclareKeys[randexam]{ - plain .if = exam@plain + language .store = \l@rdxm@current@language@tl + ,plain .if = exam@plain ,a3paper .if = exam@twoinone - ,a3input .code = \booltrue{exam@twoinone}\booltrue{exam@plain} + ,a3input .code = \SetExamBoolTrue{twoinone}\SetExamBoolTrue{plain} ,oneside .if = exam@oneside ,random .if = exam@random ,noanswer .ifnot = exam@answer @@ -56,26 +103,26 @@ ,moremath .if = exam@moremath ,math .choice: ,math .default:n = many - ,math/many .code = \booltrue{exam@mathdesign}\booltrue{exam@freealign} - ,math/most .code = \booltrue{exam@mathdesign}\booltrue{exam@freealign} - \booltrue{exam@medmath} - ,math/all .code = \booltrue{exam@mathdesign}\booltrue{exam@freealign} - \booltrue{exam@medmath}\booltrue{exam@moremath} + ,math/many .code = \SetExamBoolTrue{mathdesign}\SetExamBoolTrue{freealign} + ,math/most .code = \SetExamBoolTrue{mathdesign}\SetExamBoolTrue{freealign} + \SetExamBoolTrue{medmath} + ,math/all .code = \SetExamBoolTrue{mathdesign}\SetExamBoolTrue{freealign} + \SetExamBoolTrue{medmath}\SetExamBoolTrue{moremath} } %% Support for Chinese language -\newbool{exam@ctex} \boolfalse{exam@ctex} % load ctex package -\newbool{exam@solidot} \boolfalse{exam@solidot} % use full-width solid periods -\newbool{exam@sourcehan}\boolfalse{exam@sourcehan} % use source han font +\NewExamBool{ctex} \SetExamBoolFalse{ctex} % load ctex package +\NewExamBool{solidot} \SetExamBoolFalse{solidot} % use full-width solid periods +\NewExamBool{sourcehan}\SetExamBoolFalse{sourcehan} % use source han font \DeclareKeys[randexam]{ ctex .if = exam@ctex ,solidot .if = exam@solidot ,sourcehan .if = exam@sourcehan ,chinese .choice: ,chinese .default:n = many - ,chinese/many .code = \booltrue{exam@ctex} - ,chinese/most .code = \booltrue{exam@ctex}\booltrue{exam@solidot} - ,chinese/all .code = \booltrue{exam@ctex}\booltrue{exam@solidot}\booltrue{exam@sourcehan} + ,chinese/many .code = \SetExamBoolTrue{ctex} + ,chinese/most .code = \SetExamBoolTrue{ctex}\SetExamBoolTrue{solidot} + ,chinese/all .code = \SetExamBoolTrue{ctex}\SetExamBoolTrue{solidot}\SetExamBoolTrue{sourcehan} } \DeclareUnknownKeyHandler{\PassOptionsToClass{\CurrentOption}{article}} @@ -84,12 +131,18 @@ \LoadClass{article} -\ifbool{exam@twoinone}{ +%% Avoid option conflicts with fontspec package +%% see https://github.com/latex3/fontspec/issues/501 +\let\@raw@classoptionslist\@empty + +\IfExamBoolTF{twoinone}{ \RequirePackage[a3paper,landscape,twocolumn,columnsep=60mm,left=30mm,right=30mm,top=25mm,bottom=25mm]{geometry} }{ \RequirePackage[a4paper,left=30mm,right=30mm,top=25mm,bottom=25mm]{geometry} } +\geometry{headheight=17pt} + \RequirePackage{amsmath} \RequirePackage{array} \RequirePackage{calc} @@ -100,10 +153,12 @@ \RequirePackage{zref-user,zref-lastpage} \RequirePackage{tabularx} \RequirePackage{xcolor} +\RequirePackage{tabularray} +\UseTblrLibrary{diagbox} -\ifbool{exam@plain}{\allowdisplaybreaks[4]}{} +\IfExamBoolT{plain}{\allowdisplaybreaks[4]} -\ifbool{exam@twoinone}{ +\IfExamBoolT{twoinone}{ \RequirePackage{pdfpages} % When pdfpages package is newer enough, putting \includepdf at the beginning % of document body will cause an error about an undefined command; @@ -111,9 +166,9 @@ % Also since LaTeX release 2018-04-01 \@ifundefined won't turn an undefined command % into \relax; see https://www.latex-project.org/news/latex2e-news/ltnews28.pdf \@ifundefined{@setmarks}{\let\@setmarks\relax}{} -}{} +} -\ifbool{exam@mathdesign}{ +\IfExamBoolTF{mathdesign}{ \RequirePackage[utopia]{mathdesign} % charter, utopia \renewcommand\bfdefault{bx} \let\oldoiint\oiint\renewcommand{\oiint}{\oldoiint\nolimits} @@ -122,6 +177,7 @@ \RequirePackage{amssymb} } +\setlength\arraycolsep{4pt} \newcolumntype{Y}{>{\centering\arraybackslash}X} \newcolumntype{n}[1]{>{\centering\arraybackslash}m{#1}} @@ -157,8 +213,6 @@ %% Translation commands for exam keywords %% --------------------------------------------------------------------------- -\tlSet\l@rdxm@current@language@tl{english} - \DeclareUnknownKeyHandler[randexam/translation]{ \tlSet{\expName{l@rdxm@translate@\l@rdxm@declare@language@tl @#1@tl}}{#2} } @@ -223,7 +277,7 @@ ,solution-Solution = Solution } -\SelectExamTranslation{english} +\ExpandArgs{V}\SelectExamTranslation\l@rdxm@current@language@tl %% --------------------------------------------------------------------------- %% Keyvalue commands for exam elements @@ -257,6 +311,16 @@ \UseName{l@rdxm@value@#1@#2@tl} } +\NewExpandableDocumentCommand\IfExamValueEmptyT{mm+m}{ + \ifcsempty{l@rdxm@value@#1@#2@tl}{#3}{} +} +\NewExpandableDocumentCommand\IfExamValueEmptyF{mm+m}{ + \ifcsempty{l@rdxm@value@#1@#2@tl}{}{#3} +} +\NewExpandableDocumentCommand\IfExamValueEmptyTF{mm+m+m}{ + \ifcsempty{l@rdxm@value@#1@#2@tl}{#3}{#4} +} + %% In fact, \ifdef/ifcsname is a wrapper for \ifdefined/\ifcsname in eTeX; %% they will not turn an undefined macro into \relax \NewExpandableDocumentCommand\IfExamValueExistT{mm+m}{ @@ -275,6 +339,44 @@ } %% --------------------------------------------------------------------------- +%% Theme commands for exam papers +%% --------------------------------------------------------------------------- + +%% #1: theme name; #2: theme code +\NewDocumentCommand\DeclareExamTheme{m+m}{ + \tlSet{\expName{l@rdxm@theme@#1@tl}}{#2} +} + +%% #1: theme name +\NewDocumentCommand\SelectExamTheme{m}{ + \UseName{l@rdxm@theme@#1@tl} +} + +\DeclareKeys[randexam]{ + theme .code = \SelectExamTheme{#1} +} + +%% --------------------------------------------------------------------------- +%% Fill commands for exam papers +%% --------------------------------------------------------------------------- + +\NewDocumentCommand\ExamFillCdot{}{ + \leavevmode\xleaders\hbox to 0.5em{\hss$\cdot$\hss}\hfill\kern0pt\relax +} + +\NewDocumentCommand\ExamFillUline{}{ + \xleaders\hbox{\underline{\kern1pt}}\hfill\kern0pt +} + +\NewDocumentCommand\ExamFillUlinePhantom{m}{ + \xleaders\hbox{\underline{\vphantom{#1}\kern1pt}}\hfill\kern0pt +} + +\NewDocumentCommand\ExamFillUlineText{m}{ + \ExamFillUlinePhantom{#1}\underline{#1}\ExamFillUlinePhantom{#1} +} + +%% --------------------------------------------------------------------------- %% Command for exam title: \examtitle %% --------------------------------------------------------------------------- @@ -289,7 +391,7 @@ \DeclareExamTemplate{examtitle}{normal}{ \begingroup \Large\noindent - \ifbool{exam@answer}{ + \IfExamBoolTF{answer}{ \textcolor{red!80!black}{ \UseExamValue{examtitle}{name}\hfill\UseExamTranslation{examtitle-Solutions} } @@ -302,15 +404,15 @@ \NewDocumentCommand\examtitle{+m}{ \SetExamValue{examtitle}{#1} - \thispagestyle{plain} - \ifbool{exam@random}{ + \IfExamBoolF{plain}{\thispagestyle{fancyfirst}} + \IfExamBoolT{random}{ \tlIfEqT{\expWhole{\UseExamValue{examtitle}{version}}}{A}{ \SetExamValue{examtitle}{version=B} } \tlIfEqT{\expWhole{\UseExamValue{examtitle}{version}}}{C}{ \SetExamValue{examtitle}{version=D} } - }{} + } \UseExamTemplate{examtitle}{default} } @@ -360,7 +462,7 @@ {} {\UseExamValue{gradetable}{total}} \rdxm@gobble@one - \ifbool{exam@evaluator}{ + \IfExamBoolT{evaluator}{ \rdxm@table@make@row \l@rdxm@gradetable@evaluator@tl {\textbf{\UseExamTranslation{gradetable-Evaluator}} @@ -368,13 +470,13 @@ {} {\UseExamValue{gradetable}{total}} \rdxm@gobble@one - }{} + } \noindent \begin{tabularx}{\linewidth}{|c|*{\UseExamValue{gradetable}{total}}{Y|}Y|} \hline \l@rdxm@gradetable@part@tl \\ \hline \l@rdxm@gradetable@score@tl \\ \hline - \ifbool{exam@evaluator}{\l@rdxm@gradetable@evaluator@tl \\ \hline}{} + \IfExamBoolT{evaluator}{\l@rdxm@gradetable@evaluator@tl \\ \hline} \end{tabularx} } \SelectExamTemplate{gradetable}{normal} @@ -391,56 +493,115 @@ %% Setting header and footer %% --------------------------------------------------------------------------- -\newcommand{\rdxm@columnbox}[1]{\makebox[\columnwidth]{#1}} -\newcommand{\rdxm@headleft}{\UseExamValue{examtitle}{name}} -\newcommand{\rdxm@headright}{ - \ifbool{exam@answer}{ +\DeclareExamTemplate{headleft}{empty}{} +\DeclareExamTemplate{headcenter}{empty}{} +\DeclareExamTemplate{headright}{empty}{} +\DeclareExamTemplate{footleft}{empty}{} +\DeclareExamTemplate{footcenter}{empty}{} +\DeclareExamTemplate{footright}{empty}{} + +\DeclareExamTemplate{headleft}{plain}{} +\DeclareExamTemplate{headcenter}{plain}{} +\DeclareExamTemplate{headright}{plain}{} +\DeclareExamTemplate{footleft}{plain}{} +\DeclareExamTemplate{footcenter}{plain}{\thepage} +\DeclareExamTemplate{footright}{plain}{} + +\DeclareExamTemplate{headleft}{fancy}{ + \UseExamValue{examtitle}{name} +} +\DeclareExamTemplate{headcenter}{fancy}{} +\DeclareExamTemplate{headright}{fancy}{ + \IfExamBoolTF{answer}{ \UseExamTranslation{headfoot-Solutions} }{ \UseExamTranslation{headfoot-Name}:\hspace{12em} } } -\newcommand{\rdxm@headtext}{\rdxm@headleft\hfill\rdxm@headright} -\newcommand{\rdxm@footleft}{\UseExamValue{examtitle}{date}} -\newcommand{\rdxm@footcenter}{ +\DeclareExamTemplate{footleft}{fancy}{ + \UseExamValue{examtitle}{date} +} +\DeclareExamTemplate{footcenter}{fancy}{ \MakeExamNameNumber{\UseExamTranslation{headfoot-Page}}{\thepage} \space \MakeExamNameNumber{\UseExamTranslation{headfoot-of}}{\zpageref{LastPage}} } -\newcommand{\rdxm@footright}{ +\DeclareExamTemplate{footright}{fancy}{ \MakeExamNameNumber{\UseExamTranslation{headfoot-Version}} {\UseExamValue{examtitle}{version}} } -\newcommand{\rdxm@foottext}{\rdxm@footleft\hfill\rdxm@footcenter\hfill\rdxm@footright} -% fancy page style -\fancyhf{} % clear head and foot -\ifbool{exam@twoinone}{ - \renewcommand{\headrulewidth}{0pt} - \lhead{\small\underline{\rdxm@columnbox{\rdxm@headtext}\strut}} - \rhead{\small\underline{\rdxm@columnbox{\rdxm@headtext}\strut}} - \lfoot{\small\rdxm@columnbox{\rdxm@foottext}} - \rfoot{\small\rdxm@columnbox{\stepcounter{page}\rdxm@foottext}} +\tlSet\l@rdxm@headtext@tl{ + \UseExamTemplate{headleft}{default} + \hfill + \UseExamTemplate{headcenter}{default} + \hfill + \UseExamTemplate{headright}{default} +} + +\tlSet\l@rdxm@foottext@tl{ + \UseExamTemplate{footleft}{default} + \hfill + \UseExamTemplate{footcenter}{default} + \hfill + \UseExamTemplate{footright}{default} +} + +\newrobustcmd\rdxm@columnbox[1]{\makebox[\columnwidth]{#1}} + +\newrobustcmd\rdxm@other@pages@only[1]{\ifnumgreater{\value{page}}{1}{#1}{}} +\newrobustcmd\rdxm@fancyhead[2][]{\fancyhead[#1]{\rdxm@other@pages@only{#2}}} +\newrobustcmd\rdxm@fancyfoot[2][]{\fancyfoot[#1]{\rdxm@other@pages@only{#2}}} + +\IfExamBoolTF{twoinone}{ + \rdxm@fancyhead[L]{\small\underline{\rdxm@columnbox{\l@rdxm@headtext@tl}\strut}} + \fancyhead[C]{} + \fancyhead[R]{\small\underline{\rdxm@columnbox{\l@rdxm@headtext@tl}\strut}} + \fancyfoot[L]{\small\rdxm@columnbox{\l@rdxm@foottext@tl}} + \fancyfoot[C]{} + \fancyfoot[R]{\small\rdxm@columnbox{\stepcounter{page}\l@rdxm@foottext@tl}} }{ - \lhead{\small\rdxm@headleft} - \rhead{\small\rdxm@headright} - \cfoot{\small\rdxm@foottext} + \rdxm@fancyhead[L]{\small\UseExamTemplate{headleft}{default}} + \rdxm@fancyhead[C]{\small\UseExamTemplate{headcenter}{default}} + \rdxm@fancyhead[R]{\small\UseExamTemplate{headright}{default}} + \fancyfoot[L]{\small\UseExamTemplate{footleft}{default}} + \fancyfoot[C]{\small\UseExamTemplate{footcenter}{default}} + \fancyfoot[R]{\small\UseExamTemplate{footright}{default}} } -% plain page style +%% plain page style \fancypagestyle{plain}{ - \renewcommand{\headrulewidth}{0pt} - \fancyhf{} - \ifbool{exam@twoinone}{ - \rhead{\small\underline{\rdxm@columnbox{\rdxm@headtext\strut}}} - \lfoot{\small\rdxm@columnbox{\rdxm@foottext}} - \rfoot{\small\rdxm@columnbox{\stepcounter{page}\rdxm@foottext}} + \renewcommand\headrulewidth{0pt} + \fancyhead{} + \SelectExamTemplate{footleft}{plain} + \SelectExamTemplate{footcenter}{plain} + \SelectExamTemplate{footright}{plain} +} + +%% fancy page style +\tlSet\l@rdxm@fancy@page@code@tl{ + \SelectExamTemplate{headleft}{fancy} + \SelectExamTemplate{headcenter}{fancy} + \SelectExamTemplate{headright}{fancy} + \SelectExamTemplate{footleft}{fancy} + \SelectExamTemplate{footcenter}{fancy} + \SelectExamTemplate{footright}{fancy} +} +\fancypagestyle{fancy}{ + \IfExamBoolTF{twoinone}{ + \renewcommand\headrulewidth{0pt} }{ - \cfoot{\small\rdxm@foottext} + \renewcommand\headrulewidth{0.4pt} } + \l@rdxm@fancy@page@code@tl +} +\fancypagestyle{fancyfirst}{ + \renewcommand\headrulewidth{0pt} + \l@rdxm@fancy@page@code@tl } -\ifbool{exam@plain}{\pagestyle{plain}}{\pagestyle{fancy}} +%% set page style at this time since users may change header/footer templates +\AtBeginDocument{\IfExamBoolTF{plain}{\pagestyle{plain}}{\pagestyle{fancy}}} %% --------------------------------------------------------------------------- %% Class option for shuffling questions: random @@ -454,7 +615,7 @@ seed .initial:n = 19061116 } -\ifbool{exam@random}{ +\IfExamBoolT{random}{ \RequirePackage{pgf} \RequirePackage{pgffor} \newcommand*\exam@set@seed{ @@ -465,7 +626,7 @@ \pgfmathsetseed{\rdxm@random@seed} \pgfmathrandominteger\rdxm@random@seed{1}{2147483647} } -}{} +} %% --------------------------------------------------------------------------- %% Command for exam groups: \exampart @@ -481,7 +642,7 @@ \SetExamValue{exampart}{number=\Roman} %% No displaying question number when there is only one question in the part -\newbool{exam@onlyonequestion}\boolfalse{exam@onlyonequestion} +\NewExamBool{onlyonequestion}\SetExamBoolFalse{onlyonequestion} \xdef\allquestions{} \xdef\lastquestion{} @@ -564,12 +725,12 @@ } \newcommand{\printquestions}{ - \ifbool{exam@random}{ + \IfExamBoolT{random}{ \rdxm@appto@questions \rdxm@shuffle@questions \setcounter{question}{0} \allquestions - }{} + } \xdef\allquestions{} \xdef\lastquestion{} } @@ -582,11 +743,13 @@ } :~\UseExamValue{exampart}{type} } - \space(\UseExamValue{exampart}{points}) + \IfExamValueEmptyF{exampart}{points}{ + \space(\UseExamValue{exampart}{points}) + } } \SelectExamTemplate{exampart}{normal} -\newcommand{\exampart}[2]{ +\NewDocumentCommand\exampart{+m+O{}}{ \printquestions \setcounter{totalquestions}{\value{totalquestions}+\value{question}} \setcounter{question}{0} @@ -598,9 +761,9 @@ \endgroup \par\nopagebreak \if\relax\detokenize{#1}\relax % #1 is empty - \booltrue{exam@onlyonequestion} + \SetExamBoolTrue{onlyonequestion} \else - \boolfalse{exam@onlyonequestion} + \SetExamBoolFalse{onlyonequestion} \vspace{1em} \fi % \@afterheading sets \@nobreaktrue, which will prevent page breaks before lists; @@ -649,8 +812,8 @@ } \DeclareExamTemplate{questionbegin}{normal}{ - \ifbool{exam@resetnumber}{ - \ifbool{exam@onlyonequestion}{ + \IfExamBoolTF{resetnumber}{ + \IfExamBoolTF{onlyonequestion}{ \renewcommand{\hangtext}{\qquad} }{ \renewcommand{\hangtext}{\textbf{\textsf{\textcolor{question~number}{\arabic{question}}.}}\;\,} @@ -702,7 +865,7 @@ \let \oldmedskip = \medskip \let \oldbigskip = \bigskip -\ifbool{exam@random}{ +\IfExamBoolTF{random}{ \newcommand\rdxm@appto@questions{ \xappto\allquestions{\expandonce\lastquestion} } @@ -740,7 +903,7 @@ } \newcommand{\rdxm@stop@random}{ - \ifbool{exam@random}{ + \IfExamBoolT{random}{ \renewenvironment{question}{\questionreal}{\endquestionreal} \renewenvironment{solution}{\solutionreal}{\endsolutionreal} \let \newpage = \oldnewpage @@ -748,13 +911,13 @@ \let \smallskip = \oldsmallskip \let \medskip = \oldmedskip \let \bigskip = \oldbigskip - }{} + } } \def\CommentCutFile{\jobname.cut} \AtBeginDocument{ - \ifbool{exam@answer}{}{\excludecomment{solution}} + \IfExamBoolF{answer}{\excludecomment{solution}} } %% --------------------------------------------------------------------------- @@ -848,26 +1011,32 @@ %% Command for multiple-choice questions: \pickin and \pickout %% --------------------------------------------------------------------------- -\newcommand{\answer}[1]{\ifbool{exam@answer}{#1}{\phantom{#1}}} - -\newcommand*{\cdotfill}{\leavevmode\xleaders\hbox to 0.5em{\hss$\cdot$\hss}\hfill\kern0pt\relax} +\newcommand{\answer}[1]{\IfExamBoolTF{answer}{#1}{\phantom{#1}}} \newcommand*{\tick@box}[1]{[\makebox[1.5em]{\color{blue}\answer{#1}}]} \newcommand*{\tick@text@t}{$\checkmark$} \newcommand*{\tick@text@f}{{\large$\times$}} \newcommand*{\tick@text@T}{\sffamily T} \newcommand*{\tick@text@F}{\sffamily F} -\newcommand*{\tickin}[1]{\tick@box{\csname tick@text@#1\endcsname}} -\newcommand*{\tickout}[1]{\unskip\nobreak\cdotfill\tick@box{\csname tick@text@#1\endcsname}} -\newcommand*{\ulinefill}[1]{\xleaders\hbox{\underline{\vphantom{#1}\kern1pt}}\hfill\kern0pt} +\NewDocumentCommand\tickin{m}{ + \tick@box{\csname tick@text@#1\endcsname} +} +\NewDocumentCommand\tickout{m}{ + \unskip\nobreak\ExamFillCdot\tick@box{\csname tick@text@#1\endcsname} +} + \newcommand*{\minwidthbox}[2]{\makebox[{\ifdim#1<\width\width\else#1\fi}]{#2}} -\newcommand*{\fillout}[1]{\allowbreak\hbox{}\nobreak\ulinefill{#1}\underline{\color{blue}\answer{#1}}\ulinefill{#1}} -\newcommand*{\fillin}[1]{\underline{\hspace{1em}\color{blue}\minwidthbox{2em}{\answer{#1}}\hspace{1em}}} +\NewDocumentCommand\fillout{m}{ + \allowbreak\hbox{}\nobreak\ExamFillUlineText{\color{blue}\answer{#1}} +} +\NewDocumentCommand\fillin{m}{ + \underline{\hspace{1em}\color{blue}\minwidthbox{2em}{\answer{#1}}\hspace{1em}} +} \newcommand*\pickoutreal[1]{ - \unskip\nobreak\cdotfill(\makebox[1.5em]{\color{blue}\answer{#1}}) + \unskip\nobreak\ExamFillCdot(\makebox[1.5em]{\color{blue}\answer{#1}}) } \newcommand*\pickinreal[1]{ \unskip\nobreak @@ -889,7 +1058,7 @@ \newcommand\rdxm@shuffle@abcd[1]{\csuse{rdxm@shuffle@\@rdxm@choice@random @#1}} \newcommand*\pickout[1]{ - \ifbool{exam@random}{ + \IfExamBoolTF{random}{ \exam@set@seed \pgfmathrandominteger\@rdxm@choice@random{1}{3} %\@rdxm@choice@random @@ -900,10 +1069,10 @@ } \newcommand*\pickoutfixed[1]{ \pickoutreal{#1} - \boolfalse{exam@random} + \SetExamBoolFalse{random} } \newcommand*\pickin[1]{ - \ifbool{exam@random}{ + \IfExamBoolTF{random}{ \exam@set@seed \pgfmathrandominteger\@rdxm@choice@random{1}{3} %\@rdxm@choice@random @@ -914,7 +1083,7 @@ } \newcommand*\pickinfixed[1]{ \pickinreal{#1} - \boolfalse{exam@random} + \SetExamBoolFalse{random} } %% --------------------------------------------------------------------------- @@ -1003,24 +1172,24 @@ \fi } -\ifbool{exam@random}{ +\IfExamBoolT{random}{ \csdef{rdxm@swap@items@1}#1#2#3#4{\item#3\item#4\item#1\item#2} \csdef{rdxm@swap@items@2}#1#2#3#4{\item#2\item#1\item#4\item#3} \csdef{rdxm@swap@items@3}#1#2#3#4{\item#4\item#3\item#2\item#1} \long\def\rdxm@swap@items#1\item#2\item#3\item#4\item#5\@rdxm@stop@mark{ #1\csuse{rdxm@swap@items@\@rdxm@choice@random}{#2}{#3}{#4}{#5} } -}{} +} \NewDocumentEnvironment{abcd}{+b}{ - \ifbool{exam@random}{ + \IfExamBoolTF{random}{ \begin{abcdreal}\rdxm@swap@items#1\@rdxm@stop@mark\end{abcdreal} }{ \begin{abcdreal}#1\end{abcdreal} } }{} \NewDocumentEnvironment{abcd*}{+b}{ - \ifbool{exam@random}{ + \IfExamBoolTF{random}{ \begin{abcd*real}\rdxm@swap@items#1\@rdxm@stop@mark\end{abcd*real} }{ \begin{abcd*real}#1\end{abcd*real} @@ -1041,7 +1210,7 @@ %% --------------------------------------------------------------------------- \AtBeginDocument{ - \ifbool{exam@freealign}{\RequirePackage{freealign}}{} + \IfExamBoolT{freealign}{\RequirePackage{freealign}} } %% --------------------------------------------------------------------------- @@ -1075,7 +1244,7 @@ %% --------------------------------------------------------------------------- \AtBeginDocument{ - \ifbool{exam@medmath}{\RequirePackage{medmath}}{} + \IfExamBoolT{medmath}{\RequirePackage{medmath}} } %% --------------------------------------------------------------------------- @@ -1089,27 +1258,6 @@ \setlength{\belowdisplayshortskip}{2pt} } -\setlength\arraycolsep{4pt} - -\newrobustcmd\rdxm@moremath@diagbox{ - \RequirePackage{diagbox} - %% Fix problem in using \diagbox in array environment - \newrobustcmd{\diagboxtwo}[3][]{ - \ifbool{mmode}{ - \hbox{\let\tabcolsep=\arraycolsep\diagbox[##1]{$##2$}{$##3$}} - }{ - \diagbox[##1]{##2}{##3} - } - } - \newrobustcmd{\diagboxthree}[4][]{ - \ifbool{mmode}{ - \hbox{\let\tabcolsep=\arraycolsep\diagbox[##1]{$##2$}{$##3$}{$##4$}} - }{ - \diagbox[##1]{##2}{##3}{##4} - } - } -} - \newrobustcmd\rdxm@moremath@limits{ \AtBeginDocument{ \let\rdxm@saved@lim=\lim \def\lim{\rdxm@saved@lim\limits} @@ -1245,8 +1393,7 @@ \def\T{\mathrm{T}\kern-.5pt} } -\ifbool{exam@moremath}{ - \rdxm@moremath@diagbox +\IfExamBoolT{moremath}{ \rdxm@moremath@limits \rdxm@moremath@differential \rdxm@moremath@widebar @@ -1254,7 +1401,7 @@ \rdxm@moremath@widefrac \rdxm@moremath@whitearrow \rdxm@moremath@miscellaneous -}{} +} %% --------------------------------------------------------------------------- %% Load local user config file @@ -1266,23 +1413,17 @@ %% Support for Chinese Language %% --------------------------------------------------------------------------- +\IfExamLanguageEqT{chinese}{\SetExamBoolTrue{ctex}} + \newrobustcmd\rdxm@chinese@ctex{ %% 四号 小四号 五号 小五号 %% 14bp 12bp 10.5bp 9bp %% 实际上,在旧版本 ctex 中只能用 cs4size 和 c5size 选项 %% 而新版本 ctex 中,可以利用 zihao 选项指定各种中文字号 \PassOptionsToPackage{CJKnumber}{xeCJK} - \RequirePackage[cs4size,UTF8,noindent,heading]{ctex} - \ifbool{exam@plain}{\pagestyle{plain}}{\pagestyle{fancy}} + \RequirePackage[cs4size,UTF8,noindent]{ctex} %% 在旧版本 xeCJK 中,必须用 CJKnumber 选项载入 CJKnumb 包,后面才载入会报错 %% 但在新版本 xeCJK 中 CJKnumber 选项已经被废弃,需要在后面自行载入它 - %% 在 xeCJK 中已经禁止载入 CJK,但是在新版本 ctex 宏包中却失效了 - %% 我们假装 CJK 已经载入,再载入 CJKnumb,避免出现 \CJKglue 重复定义的问题 - %% 注意用 PDFLaTeX 编译时需要用到 CJK,所以只在未定义时才作修改 - \ifdefined\CJKglue - \@namedef{ver@CJK.sty}{} - %\@namedef{opt@CJK.sty}{} - \fi \RequirePackage{CJKnumb} %% 新版本 xeCJK 已经废弃并禁用 CJKfntef,改用 xeCJKfntef 取代,我们需要载入后者 %% 注意要保证能在较旧的 TeX 系统中编译,我们只能用 \ifXeTeX 而不能用 \ifxetex @@ -1299,7 +1440,7 @@ \xeCJKsetcharclass{"2460}{"24FF}{1} % 带圈数字字母,括号数字字母,带点数字等 }{} } -\ifbool{exam@ctex}{\rdxm@chinese@ctex}{} +\IfExamBoolT{ctex}{\rdxm@chinese@ctex} \newrobustcmd\rdxm@chinese@sourcehan{ \setCJKmainfont[BoldFont=Source~Han~Sans~SC]{Source~Han~Serif~SC} @@ -1309,11 +1450,11 @@ %\setCJKsansfont{思源黑体} } \AtBeginDocument{ - \ifbool{exam@sourcehan}{ + \IfExamBoolT{sourcehan}{ \ifbool{XeTeX}{\rdxm@chinese@sourcehan}{ \ifbool{LuaTeX}{\rdxm@chinese@sourcehan}{} } - }{} + } } %% 这里不能用 \ifbool,因为涉及到 catcode 的改变 @@ -1348,7 +1489,7 @@ ,question-Question = 题 ,solution-Solution = 解 } -\ifbool{exam@ctex}{\SelectExamTranslation{chinese}}{} +\IfExamBoolT{ctex}{\SelectExamTranslation{chinese}} %% --------------------------------------------------------------------------- %% Stop ignoring spaces in the code diff --git a/macros/latex/contrib/randexam/randexam.pdf b/macros/latex/contrib/randexam/randexam.pdf Binary files differindex 307234cc1c..68c0e5925d 100644 --- a/macros/latex/contrib/randexam/randexam.pdf +++ b/macros/latex/contrib/randexam/randexam.pdf diff --git a/macros/latex/contrib/randexam/randexam.tex b/macros/latex/contrib/randexam/randexam.tex index 382375dc11..74e57318df 100644 --- a/macros/latex/contrib/randexam/randexam.tex +++ b/macros/latex/contrib/randexam/randexam.tex @@ -3,7 +3,7 @@ \documentclass[12pt,plain,math=most]{randexam} \geometry{b5paper,margin=2cm} -\newcommand*{\myversion}{2024D} +\newcommand*{\myversion}{2024E} \newcommand*{\mydate}{\the\year-\mylpad\month-\mylpad\day} \newcommand*{\mylpad}[1]{\ifnum#1<10 0\the#1\else\the#1\fi} @@ -30,8 +30,6 @@ \usepackage{tabularx} \usepackage{booktabs} -\newcommand{\fillbox}[1]{\ulinefill{#1}\underline{#1}\ulinefill{#1}} - \usepackage{fancyvrb} \DefineVerbatimEnvironment{code}{Verbatim}{% @@ -56,10 +54,10 @@ \noindent\Large \begin{tabularx}{\linewidth}{|X|} \hline - Title: \fillbox{\color{blue3}The randexam class for LaTeX}\\ - Author: \fillbox{Jianrui Lyu (tolvjr@163.com)}\\ - Version: \fillbox{\myversion{} (\mydate)}\\ - Code: \fillbox{\url{https://github.com/lvjr/randexam}}\\ + Title: \ExamFillUlineText{\color{blue3}The randexam class for LaTeX}\\ + Author: \ExamFillUlineText{Jianrui Lyu (tolvjr@163.com)}\\ + Version: \ExamFillUlineText{\myversion{} (\mydate)}\\ + Code: \ExamFillUlineText{\url{https://github.com/lvjr/randexam}}\\ \hline \end{tabularx}% } @@ -110,11 +108,11 @@ multiple \mycmd{\exampart}, and an optional \mycmd{\examdata} commands: \begin{code} \examtitle{name=Math Final Exam,date=2018-06-28,version=A} ...... -\exampart{Fill in the blanks.}{3 points for each.} +\exampart{Fill in the blanks.}[3 points for each.] ...... -\exampart{Select one answer.}{3 points for each.} +\exampart{Select one answer.}[3 points for each.] ...... -\exampart{Work out math calculations.}{8 points for each.} +\exampart{Work out math calculations.}[8 points for each.] ...... \examdata{Some data may be used in the exam} ...... @@ -138,11 +136,11 @@ will be modified from \myval{A} to \myval{B}. The questions in an exam could be separated into several parts: \begin{code} -\exampart{Fill in the blanks.}{3 points for each.} +\exampart{Fill in the blanks.}[3 points for each.] ...... -\exampart{Select one answer.}{3 points for each.} +\exampart{Select one answer.}[3 points for each.] ...... -\exampart{Work out math calculations.}{8 points for each.} +\exampart{Work out math calculations.}[8 points for each.] ...... \end{code} @@ -163,7 +161,7 @@ or the exam variants will be incorrect. \subsection{True-or-false questions} \begin{code} -\exampart{True-or-false questions}{3 points for each.} +\exampart{True-or-false questions}[3 points for each.] \begin{question} The first true-or-false question. \tickout{T} @@ -192,7 +190,7 @@ so as to make \mypkg{randexam} hide them in generating blank exam papers. \subsection{Fill-in-the-blank questions} \begin{code} -\exampart{Fill in the blanks.}{3 points for each.} +\exampart{Fill in the blanks.}[3 points for each.] \begin{question} The first fill-in-the-blank question \fillout{answer}. @@ -220,7 +218,7 @@ so as to make \mypkg{randexam} hide them in generating blank exam papers. \subsection{Multiple-choice questions} \begin{code} -\exampart{Select one answer.}{3 points for each.} +\exampart{Select one answer.}[3 points for each.] \begin{question} The first multiple-choice questions \pickout{A}. @@ -278,7 +276,7 @@ according to the lengths of the choices. For subjective questions, you could put answers inside \myenv{solution} environment. \begin{code} -\exampart{Work out math calculations.}{8 points for each.} +\exampart{Work out math calculations.}[8 points for each.] \begin{question} The first math calculation question. @@ -318,7 +316,7 @@ Answer to the second question. You can write other types of questions. For example: \begin{code} -\exampart{Some question type}{4 points for each.} +\exampart{Some question type}[4 points for each.] \begin{question} First question text. \answer{Answer text.} @@ -522,7 +520,8 @@ All options provided by \mypkg{randexam} class are listed in the following table \myopt{math=most} & $\Leftrightarrow$ \myopt{mathdesign,freealign,medmath} \\ \myopt{math=all} & $\Leftrightarrow$ \myopt{mathdesign,freealign,medmath,moremath} \\ \midrule - \myopt{chinese} & select Chinese language and load \mypkg{ctex} package \\ + \myopt{language} & set language and use corresponding translations \\ + %\myopt{chinese} & select Chinese language and load \mypkg{ctex} package \\ \bottomrule \end{tabularx} @@ -651,6 +650,27 @@ After this, you could load current translation of some keywords with \mycmd{\Use This command is useful in defining new templates for the exam (see Subsection \ref{subsect:template}). +\subsection{Checking current language} + +There are commands \mycmd{\IfExamLanguageEqT}, +\mycmd{\IfExamLanguageEqF}, and \mycmd{\IfExamLanguageEqTF}, +with which you can execute code based on current language. + +\subsection{Checking boolean flags} + +There are several commands for creating, setting, or checking boolean flags: + +\begin{tabularx}{\linewidth}{@{}lX@{}} +\toprule + \mycmd{\NewExamBool} & create a new boolean flag \\ + \mycmd{\SetExamBoolTrue} & set the boolean flag to true \\ + \mycmd{\SetExamBoolFalse} & set the boolean flag to false \\ + \mycmd{\IfExamBoolT} & run code if the boolean flag is true \\ + \mycmd{\IfExamBoolF} & run code if the boolean flag is false \\ + \mycmd{\IfExamBoolTF} & run true-state code or false-state code \\ +\bottomrule +\end{tabularx} + \subsection{Saving and reading key values} With \mycmd{\SetExamValue} and \mycmd{\UseExamValue} you could save and read @@ -667,9 +687,14 @@ the value of a key, respectively. \hrule \vspace{0.5em} -The \mypkg{randexam} class also provides commands \mycmd{\IfExamValueExistT}, -\mycmd{\IfExamValueExistF}, and \mycmd{\IfExamValueExistTF}, -with which you can do conditional typesetting. +The class also provides commands for conditional typesetting. + +\begin{tabularx}{\linewidth}{@{}XXX@{}} +\toprule +\mycmd{\IfExamValueExistT} & \mycmd{\IfExamValueExistF} & \mycmd{\IfExamValueExistTF} \\ +\mycmd{\IfExamValueEmptyT} & \mycmd{\IfExamValueEmptyF} & \mycmd{\IfExamValueEmptyTF} \\ +\bottomrule +\end{tabularx} \begin{code} \IfExamValueExistTF{somemodule}{somekey}{True}{False} @@ -763,4 +788,77 @@ are listed in the following table: \end{tabularx}\par \endgroup +\subsection{Filling space with contents} + +In defining exam templates, we may need the following filling commands. + +\begin{tabularx}{\linewidth}{@{}lX@{}} +\toprule + \mycmd{\ExamFillCdot} & fill space with centered dots \\ + \mycmd{\ExamFillUline} & fill space with an underline \\ + \mycmd{\ExamFillUlineText} & fill space with underlined text \\ + \mycmd{\ExamFillUlinePhantom} & fill space with underlined phantom text \\ +\bottomrule +\end{tabularx} + +\begin{code} +Hello\ExamFillCdot World\par +Hello\ExamFillUline World\par +Hello\ExamFillUlineText{Text}World\par +Hello\ExamFillUlinePhantom{\Huge Text}World\par +\end{code} + +Hello\ExamFillCdot World\par +Hello\ExamFillUline World\par +Hello\ExamFillUlineText{Text}World\par +Hello\ExamFillUlinePhantom{\Huge Text}World\par + +\subsection{Headers and Footers} + +To customize headers and footers of the exam paper, +we could modify the following \myval{fancy} templates. + +\begin{code} +\DeclareExamTemplate{headleft}{fancy}{ + \UseExamValue{examtitle}{name} +} +\DeclareExamTemplate{headcenter}{fancy}{} +\DeclareExamTemplate{headright}{fancy}{ + \IfExamBoolTF{answer}{ + \UseExamTranslation{headfoot-Solutions} + }{ + \UseExamTranslation{headfoot-Name}:\hspace{12em} + } +} +\DeclareExamTemplate{footleft}{fancy}{ + \UseExamValue{examtitle}{date} +} +\DeclareExamTemplate{footcenter}{fancy}{ + \UseExamTranslation{headfoot-Page} \thepage\space + \UseExamTranslation{headfoot-of} \zpageref{LastPage} +} +\DeclareExamTemplate{footright}{fancy}{ + \UseExamTranslation{headfoot-Version} + \UseExamValue{examtitle}{version} +} +\end{code} + +Actually, \mypkg{randexam} class uses \mypkg{fancyhdr} package +to customize headers and footers. + +\subsection{Themes of exam papers} + +With \mycmd{\DeclareExamTheme} command you can collect some templates into a theme, +which could be activated later with \mycmd{\SelectExamTheme} command. + +\begin{code} +\DeclareExamTheme{mytheme}{ + \SelectExamTemplate{examtitle}{mytheme} + \SelectExamTemplate{exampart}{mytheme} + \SelectExamTemplate{examdata}{mytheme} +} +...... +\SelectExamTheme{mytheme} +\end{code} + \end{document} diff --git a/macros/latex/contrib/sjtutex/README.md b/macros/latex/contrib/sjtutex/README.md new file mode 100644 index 0000000000..7935863283 --- /dev/null +++ b/macros/latex/contrib/sjtutex/README.md @@ -0,0 +1,31 @@ +# SJTUTeX + +## 简介 + +SJTUTeX 旨在建立一个简单易用的上海交通大学文档类集,包括学位论文文档类 `sjtuthesis`,以及普通文档类 `sjtuarticle` 和 `sjtureport`。 + +在使用该文档类集之前,请仔细阅读文档 `sjtutex.pdf`。 + +本项目也是 [SJTUThesis](https://github.com/sjtug/SJTUThesis) 项目使用的文档类集,如果遇到使用问题,请前往 [Discussions](https://github.com/sjtug/SJTUThesis/discussions) 提问或提交 [Issues](https://github.com/sjtug/SJTUThesis/issues);如果对文档类有改进建议,也欢迎提交 [Pull Requests](https://github.com/sjtug/SJTUTeX/pulls)。 + +## 软件许可证 + +[交大视觉形象系统](https://vi.sjtu.edu.cn)的相关图像资源版权归上海交通大学所有。其他部分使用 [LaTeX Project Public License](http://www.latex-project.org/lppl.txt) 授权。 + +--- + +# SJTUTeX + +## Description + +SJTUTeX aims to establish a simple and easy-to-use collection of document classes for Shanghai Jiao Tong University, including the thesis document class `sjtuthesis`, as well as the regular document classes `sjtuarticle` and `sjtureport`. + +Before using this collection of document classes, please read the document `sjtutex.pdf` carefully. + +This project is also used by the [SJTUThesis](https://github.com/sjtug/SJTUThesis) project. If you encounter any usage problems, please go to [Discussions](https://github.com/sjtug/SJTUThesis/discussions) to ask questions or open [Issues](https://github.com/sjtug/SJTUThesis/issues); if you have any suggestions for improving the document class, you could also submit [Pull Requests](https://github.com/sjtug/SJTUTeX/pulls). + +## License + +This work may be distributed and/or modified under the +conditions of the [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), either version 1.3 +of this license or (at your option) any later version. diff --git a/macros/latex/contrib/sjtutex/sjtu-vi-badge-red.pdf b/macros/latex/contrib/sjtutex/sjtu-vi-badge-red.pdf Binary files differnew file mode 100644 index 0000000000..7b34ecf219 --- /dev/null +++ b/macros/latex/contrib/sjtutex/sjtu-vi-badge-red.pdf diff --git a/macros/latex/contrib/sjtutex/sjtu-vi-badge-small-red.pdf b/macros/latex/contrib/sjtutex/sjtu-vi-badge-small-red.pdf Binary files differnew file mode 100644 index 0000000000..53901f695b --- /dev/null +++ b/macros/latex/contrib/sjtutex/sjtu-vi-badge-small-red.pdf diff --git a/macros/latex/contrib/sjtutex/sjtu-vi-logo-red.pdf b/macros/latex/contrib/sjtutex/sjtu-vi-logo-red.pdf Binary files differnew file mode 100644 index 0000000000..08a405be04 --- /dev/null +++ b/macros/latex/contrib/sjtutex/sjtu-vi-logo-red.pdf diff --git a/macros/latex/contrib/sjtutex/sjtu-vi-logo-small-red.pdf b/macros/latex/contrib/sjtutex/sjtu-vi-logo-small-red.pdf Binary files differnew file mode 100644 index 0000000000..a1ec93ed9c --- /dev/null +++ b/macros/latex/contrib/sjtutex/sjtu-vi-logo-small-red.pdf diff --git a/macros/latex/contrib/sjtutex/sjtu-vi-name-red.pdf b/macros/latex/contrib/sjtutex/sjtu-vi-name-red.pdf Binary files differnew file mode 100644 index 0000000000..26a249e41b --- /dev/null +++ b/macros/latex/contrib/sjtutex/sjtu-vi-name-red.pdf diff --git a/macros/latex/contrib/sjtutex/sjtutex.dtx b/macros/latex/contrib/sjtutex/sjtutex.dtx new file mode 100644 index 0000000000..4e340a821f --- /dev/null +++ b/macros/latex/contrib/sjtutex/sjtutex.dtx @@ -0,0 +1,6137 @@ +% \iffalse meta-comment +% +% Copyright (C) SJTUG +% 2018--2024 Weijian Wu <alexarawu@outlook.com> +% 2022--2024 Zilong Li <logcreative@outlook.com> +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3c of this license or (at your option) any later +% version. The latest version of this license is in: +% +% http://www.latex-project.org/lppl.txt +% +% and version 1.3 or later is part of all distributions of +% LaTeX version 2005/12/01 or later. +% +%<*internal> +\iffalse +%</internal> +% +%<*internal> +\fi +\begingroup + \def\NameOfLaTeXe{LaTeX2e} +\expandafter\endgroup\ifx\NameOfLaTeXe\fmtname\else +\csname fi\endcsname +%</internal> +% +%<*install> +\input ctxdocstrip.tex +\keepsilent +\askforoverwritefalse + +\preamble + + Copyright (C) SJTUG + 2018--2024 Weijian Wu <alexarawu@outlook.com> + 2022--2024 Zilong Li <logcreative@outlook.com> + + This work may be distributed and/or modified under the + conditions of the LaTeX Project Public License, either + version 1.3c of this license or (at your option) any later + version. The latest version of this license is in: + + http://www.latex-project.org/lppl.txt + + and version 1.3 or later is part of all distributions of + LaTeX version 2005/12/01 or later. + +\endpreamble + +\generate{ + \usedir{tex/latex/sjtutex} + \file{sjtuthesis.cls} {\from{\jobname.dtx}{class,thesis}} + \file{sjtureport.cls} {\from{\jobname.dtx}{class,report}} + \file{sjtuarticle.cls} {\from{\jobname.dtx}{class,article}} + \file{sjtu-lang-thesis-zh.def} {\from{\jobname.dtx}{lang,thesis,zh}} + \file{sjtu-lang-thesis-en.def} {\from{\jobname.dtx}{lang,thesis,en}} + \file{sjtu-lang-thesis-de.def} {\from{\jobname.dtx}{lang,thesis,de}} + \file{sjtu-lang-thesis-ja.def} {\from{\jobname.dtx}{lang,thesis,ja}} + \file{sjtu-lang-generic-zh.def} {\from{\jobname.dtx}{lang,generic,zh}} + \file{sjtu-lang-generic-en.def} {\from{\jobname.dtx}{lang,generic,en}} + \file{sjtu-lang-generic-de.def} {\from{\jobname.dtx}{lang,generic,de}} + \file{sjtu-lang-generic-ja.def} {\from{\jobname.dtx}{lang,generic,ja}} + \file{sjtu-name-thesis-zh.def} {\from{\jobname.dtx}{name,thesis,zh}} + \file{sjtu-name-thesis-en.def} {\from{\jobname.dtx}{name,thesis,en}} + \file{sjtu-name-thesis-de.def} {\from{\jobname.dtx}{name,thesis,de}} + \file{sjtu-name-thesis-ja.def} {\from{\jobname.dtx}{name,thesis,ja}} + \file{sjtu-name-generic-zh.def} {\from{\jobname.dtx}{name,generic,zh}} + \file{sjtu-name-generic-en.def} {\from{\jobname.dtx}{name,generic,en}} + \file{sjtu-name-generic-de.def} {\from{\jobname.dtx}{name,generic,de}} + \file{sjtu-name-generic-ja.def} {\from{\jobname.dtx}{name,generic,ja}} + \file{sjtu-scheme-zh.def} {\from{\jobname.dtx}{scheme,zh}} + \file{sjtu-scheme-en.def} {\from{\jobname.dtx}{scheme,en}} + \file{sjtu-scheme-de.def} {\from{\jobname.dtx}{scheme,de}} + \file{sjtu-scheme-ja.def} {\from{\jobname.dtx}{scheme,ja}} + \file{sjtu-text-font-newtx.def} {\from{\jobname.dtx}{font,text,newtx}} + \file{sjtu-text-font-newpx.def} {\from{\jobname.dtx}{font,text,newpx}} + \file{sjtu-text-font-lm.def} {\from{\jobname.dtx}{font,text,lm}} + \file{sjtu-text-font-libertinus.def}{\from{\jobname.dtx}{font,text,libertinus}} + \file{sjtu-text-font-stixtwo.def} {\from{\jobname.dtx}{font,text,stixtwo}} + \file{sjtu-text-font-xits.def} {\from{\jobname.dtx}{font,text,xits}} + \file{sjtu-text-font-newcm.def} {\from{\jobname.dtx}{font,text,newcm}} + \file{sjtu-text-font-cambria.def} {\from{\jobname.dtx}{font,text,cambria}} + \file{sjtu-text-font-times.def} {\from{\jobname.dtx}{font,text,times}} + \file{sjtu-math-font-newtx.def} {\from{\jobname.dtx}{font,math,newtx}} + \file{sjtu-math-font-newpx.def} {\from{\jobname.dtx}{font,math,newpx}} + \file{sjtu-math-font-lm.def} {\from{\jobname.dtx}{font,math,lm}} + \file{sjtu-math-font-libertinus.def}{\from{\jobname.dtx}{font,math,libertinus}} + \file{sjtu-math-font-stixtwo.def} {\from{\jobname.dtx}{font,math,stixtwo}} + \file{sjtu-math-font-xits.def} {\from{\jobname.dtx}{font,math,xits}} + \file{sjtu-math-font-newcm.def} {\from{\jobname.dtx}{font,math,newcm}} + \file{sjtu-math-font-cambria.def} {\from{\jobname.dtx}{font,math,cambria}} + \file{sjtu-math-font-times.def} {\from{\jobname.dtx}{font,math,times}} + \file{sjtu-cjk-font-windows.def} {\from{\jobname.dtx}{font,cjk,windows,und}} + \file{sjtu-cjk-font-windows-zh.def} {\from{\jobname.dtx}{font,cjk,windows,zh}} + \file{sjtu-cjk-font-windows-ja.def} {\from{\jobname.dtx}{font,cjk,windows,ja}} + \file{sjtu-cjk-font-mac.def} {\from{\jobname.dtx}{font,cjk,mac,und}} + \file{sjtu-cjk-font-mac-zh.def} {\from{\jobname.dtx}{font,cjk,mac,zh}} + \file{sjtu-cjk-font-mac-ja.def} {\from{\jobname.dtx}{font,cjk,mac,ja}} + \file{sjtu-cjk-font-ubuntu.def} {\from{\jobname.dtx}{font,cjk,ubuntu,und}} + \file{sjtu-cjk-font-ubuntu-zh.def} {\from{\jobname.dtx}{font,cjk,ubuntu,zh}} + \file{sjtu-cjk-font-ubuntu-ja.def} {\from{\jobname.dtx}{font,cjk,ubuntu,ja}} + \file{sjtu-cjk-font-adobe.def} {\from{\jobname.dtx}{font,cjk,adobe,und}} + \file{sjtu-cjk-font-adobe-zh.def} {\from{\jobname.dtx}{font,cjk,adobe,zh}} + \file{sjtu-cjk-font-adobe-ja.def} {\from{\jobname.dtx}{font,cjk,adobe,ja}} + \file{sjtu-cjk-font-fandol.def} {\from{\jobname.dtx}{font,cjk,fandol,und}} + \file{sjtu-cjk-font-fandol-zh.def} {\from{\jobname.dtx}{font,cjk,fandol,zh}} + \file{sjtu-cjk-font-fandol-ja.def} {\from{\jobname.dtx}{font,cjk,fandol,ja}} + \file{sjtu-cjk-font-founder.def} {\from{\jobname.dtx}{font,cjk,founder,und}} + \file{sjtu-cjk-font-founder-zh.def} {\from{\jobname.dtx}{font,cjk,founder,zh}} + \file{sjtu-cjk-font-founder-ja.def} {\from{\jobname.dtx}{font,cjk,founder,ja}} +%</install> +%<*internal> + \usedir{source/latex/sjtutex} + \file{\jobname.ins} {\from{\jobname.dtx}{install}} +%</internal> +%<*install> +} + +\obeyspaces +\Msg{*************************************************************} +\Msg{* *} +\Msg{* To finish the installation you have to move the following *} +\Msg{* files into a directory searched by TeX: *} +\Msg{* *} +\Msg{* The recommended directory is TDS:tex/latex/sjtutex *} +\Msg{* *} +\Msg{* sjtuthesis.cls *} +\Msg{* sjtureport.cls *} +\Msg{* sjtuarticle.cls *} +\Msg{* sjtu-lang-generic-de.def *} +\Msg{* sjtu-lang-generic-en.def *} +\Msg{* sjtu-lang-generic-ja.def *} +\Msg{* sjtu-lang-generic-zh.def *} +\Msg{* sjtu-lang-thesis-de.def *} +\Msg{* sjtu-lang-thesis-en.def *} +\Msg{* sjtu-lang-thesis-ja.def *} +\Msg{* sjtu-lang-thesis-zh.def *} +\Msg{* sjtu-name-generic-de.def *} +\Msg{* sjtu-name-generic-en.def *} +\Msg{* sjtu-name-generic-ja.def *} +\Msg{* sjtu-name-generic-zh.def *} +\Msg{* sjtu-name-thesis-de.def *} +\Msg{* sjtu-name-thesis-en.def *} +\Msg{* sjtu-name-thesis-ja.def *} +\Msg{* sjtu-name-thesis-zh.def *} +\Msg{* sjtu-scheme-de.def *} +\Msg{* sjtu-scheme-en.def *} +\Msg{* sjtu-scheme-ja.def *} +\Msg{* sjtu-scheme-zh.def *} +\Msg{* sjtu-text-font-cambria.def *} +\Msg{* sjtu-text-font-libertinus.def *} +\Msg{* sjtu-text-font-lm.def *} +\Msg{* sjtu-text-font-newcm.def *} +\Msg{* sjtu-text-font-newpx.def *} +\Msg{* sjtu-text-font-newtx.def *} +\Msg{* sjtu-text-font-stixtwo.def *} +\Msg{* sjtu-text-font-times.def *} +\Msg{* sjtu-text-font-xits.def *} +\Msg{* sjtu-math-font-cambria.def *} +\Msg{* sjtu-math-font-libertinus.def *} +\Msg{* sjtu-math-font-lm.def *} +\Msg{* sjtu-math-font-newcm.def *} +\Msg{* sjtu-math-font-newpx.def *} +\Msg{* sjtu-math-font-newtx.def *} +\Msg{* sjtu-math-font-stixtwo.def *} +\Msg{* sjtu-math-font-times.def *} +\Msg{* sjtu-math-font-xits.def *} +\Msg{* sjtu-cjk-font-adobe-ja.def *} +\Msg{* sjtu-cjk-font-adobe-zh.def *} +\Msg{* sjtu-cjk-font-adobe.def *} +\Msg{* sjtu-cjk-font-fandol-ja.def *} +\Msg{* sjtu-cjk-font-fandol-zh.def *} +\Msg{* sjtu-cjk-font-fandol.def *} +\Msg{* sjtu-cjk-font-founder-ja.def *} +\Msg{* sjtu-cjk-font-founder-zh.def *} +\Msg{* sjtu-cjk-font-founder.def *} +\Msg{* sjtu-cjk-font-mac-ja.def *} +\Msg{* sjtu-cjk-font-mac-zh.def *} +\Msg{* sjtu-cjk-font-mac.def *} +\Msg{* sjtu-cjk-font-ubuntu-ja.def *} +\Msg{* sjtu-cjk-font-ubuntu-zh.def *} +\Msg{* sjtu-cjk-font-ubuntu.def *} +\Msg{* sjtu-cjk-font-windows-ja.def *} +\Msg{* sjtu-cjk-font-windows-zh.def *} +\Msg{* sjtu-cjk-font-windows.def *} +\Msg{* sjtu-vi-badge-red.pdf *} +\Msg{* sjtu-vi-badge-small-red.pdf *} +\Msg{* sjtu-vi-logo-red.pdf *} +\Msg{* sjtu-vi-logo-small-red.pdf *} +\Msg{* sjtu-vi-name-red.pdf *} +\Msg{* *} +\Msg{* To produce the documentation, run the file sjtutex.dtx *} +\Msg{* through XeLaTeX. *} +\Msg{* *} +\Msg{* Happy TeXing! *} +\Msg{* *} +\Msg{*************************************************************} + +\endbatchfile +%</install> +% +%<*internal> +\fi +%</internal> +% +%<*class> +\NeedsTeXFormat{LaTeX2e}[2020/10/01] +\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} +\IfFormatAtLeastTF{2020/10/01}{} + {\PackageError{sjtutex} + {Your LaTeX format is outdated!\MessageBreak\MessageBreak + Release `2020/10/01' or newer is required to\MessageBreak + compile this document.\MessageBreak\MessageBreak + Please update your TeX distribution}{}} +%</class> +%<*!(driver|install)> +%<+!driver>\GetIdInfo$Id: sjtutex.dtx b468d42 2024-02-18 19:15:02 +0800 Alexara Wu <alexarawu@outlook.com> $ +%<class&thesis> {Thesis document class for Shanghai Jiao Tong University (SJTUTeX)} +%<class&thesis>\ProvidesExplClass{sjtuthesis} +%<class&report> {Report document class for Shanghai Jiao Tong University (SJTUTeX)} +%<class&report>\ProvidesExplClass{sjtureport} +%<class&article> {Article document class for Shanghai Jiao Tong University (SJTUTeX)} +%<class&article>\ProvidesExplClass{sjtuarticle} +%<lang&thesis&zh> {Chinese specific definition for thesis (SJTUTeX)} +%<lang&thesis&zh>\ProvidesExplFile{sjtu-lang-thesis-zh.def} +%<lang&thesis&en> {English specific definition for thesis (SJTUTeX)} +%<lang&thesis&en>\ProvidesExplFile{sjtu-lang-thesis-en.def} +%<lang&thesis&de> {German specific definition for thesis (SJTUTeX)} +%<lang&thesis&de>\ProvidesExplFile{sjtu-lang-thesis-de.def} +%<lang&thesis&ja> {Japanese specific definition for thesis (SJTUTeX)} +%<lang&thesis&ja>\ProvidesExplFile{sjtu-lang-thesis-ja.def} +%<lang&generic&zh> {Chinese specific definition for generic (SJTUTeX)} +%<lang&generic&zh>\ProvidesExplFile{sjtu-lang-generic-zh.def} +%<lang&generic&en> {English specific definition for generic (SJTUTeX)} +%<lang&generic&en>\ProvidesExplFile{sjtu-lang-generic-en.def} +%<lang&generic&de> {German specific definition for generic (SJTUTeX)} +%<lang&generic&de>\ProvidesExplFile{sjtu-lang-generic-de.def} +%<lang&generic&ja> {Japanese specific definition for generic (SJTUTeX)} +%<lang&generic&ja>\ProvidesExplFile{sjtu-lang-generic-ja.def} +%<name&thesis&zh> {Chinese name config for thesis (SJTUTeX)} +%<name&thesis&zh>\ProvidesExplFile{sjtu-name-thesis-zh.def} +%<name&thesis&en> {English name config for thesis (SJTUTeX)} +%<name&thesis&en>\ProvidesExplFile{sjtu-name-thesis-en.def} +%<name&thesis&de> {German name config for thesis (SJTUTeX)} +%<name&thesis&de>\ProvidesExplFile{sjtu-name-thesis-de.def} +%<name&thesis&ja> {Japanese name config for thesis (SJTUTeX)} +%<name&thesis&ja>\ProvidesExplFile{sjtu-name-thesis-ja.def} +%<name&generic&zh> {Chinese name config for generic (SJTUTeX)} +%<name&generic&zh>\ProvidesExplFile{sjtu-name-generic-zh.def} +%<name&generic&en> {English name config for generic (SJTUTeX)} +%<name&generic&en>\ProvidesExplFile{sjtu-name-generic-en.def} +%<name&generic&de> {German name config for generic (SJTUTeX)} +%<name&generic&de>\ProvidesExplFile{sjtu-name-generic-de.def} +%<name&generic&ja> {Japanese name config for generic (SJTUTeX)} +%<name&generic&ja>\ProvidesExplFile{sjtu-name-generic-ja.def} +%<scheme&zh> {Chinese scheme (SJTUTeX)} +%<scheme&zh>\ProvidesExplFile{sjtu-scheme-zh.def} +%<scheme&en> {English scheme (SJTUTeX)} +%<scheme&en>\ProvidesExplFile{sjtu-scheme-en.def} +%<scheme&de> {German scheme (SJTUTeX)} +%<scheme&de>\ProvidesExplFile{sjtu-scheme-de.def} +%<scheme&ja> {Japanese scheme (SJTUTeX)} +%<scheme&ja>\ProvidesExplFile{sjtu-scheme-ja.def} +%<font&text&newtx> {New TX text fonts definition (SJTUTeX)} +%<font&text&newtx>\ProvidesExplFile{sjtu-text-font-newtx.def} +%<font&text&newpx> {New PX text fonts definition (SJTUTeX)} +%<font&text&newpx>\ProvidesExplFile{sjtu-text-font-newpx.def} +%<font&text&stixtwo> {STIX Two text fonts definition (SJTUTeX)} +%<font&text&stixtwo>\ProvidesExplFile{sjtu-text-font-stixtwo.def} +%<font&text&xits> {XITS text fonts definition (SJTUTeX)} +%<font&text&xits>\ProvidesExplFile{sjtu-text-font-xits.def} +%<font&text&lm> {Latin Modern text fonts definition (SJTUTeX)} +%<font&text&lm>\ProvidesExplFile{sjtu-text-font-lm.def} +%<font&text&libertinus> {Libertinus text fonts definition (SJTUTeX)} +%<font&text&libertinus>\ProvidesExplFile{sjtu-text-font-libertinus.def} +%<font&text&newcm> {New Computer Modern text fonts definition (SJTUTeX)} +%<font&text&newcm>\ProvidesExplFile{sjtu-text-font-newcm.def} +%<font&text&cambria> {Cambria text fonts definition (SJTUTeX)} +%<font&text&cambria>\ProvidesExplFile{sjtu-text-font-cambria.def} +%<font&text×> {Times text fonts definition (SJTUTeX)} +%<font&text×>\ProvidesExplFile{sjtu-text-font-times.def} +%<font&math&newtx> {New TX math fonts definition (SJTUTeX)} +%<font&math&newtx>\ProvidesExplFile{sjtu-math-font-newtx.def} +%<font&math&newpx> {New PX math fonts definition (SJTUTeX)} +%<font&math&newpx>\ProvidesExplFile{sjtu-math-font-newpx.def} +%<font&math&stixtwo> {STIX Two math fonts definition (SJTUTeX)} +%<font&math&stixtwo>\ProvidesExplFile{sjtu-math-font-stixtwo.def} +%<font&math&xits> {XITS math fonts definition (SJTUTeX)} +%<font&math&xits>\ProvidesExplFile{sjtu-math-font-xits.def} +%<font&math&lm> {Latin Modern math fonts definition (SJTUTeX)} +%<font&math&lm>\ProvidesExplFile{sjtu-math-font-lm.def} +%<font&math&libertinus> {Libertinus math fonts definition (SJTUTeX)} +%<font&math&libertinus>\ProvidesExplFile{sjtu-math-font-libertinus.def} +%<font&math&newcm> {New Computer Modern math fonts definition (SJTUTeX)} +%<font&math&newcm>\ProvidesExplFile{sjtu-math-font-newcm.def} +%<font&math&cambria> {Cambria math fonts definition (SJTUTeX)} +%<font&math&cambria>\ProvidesExplFile{sjtu-math-font-cambria.def} +%<font&math×> {Times math fonts definition (SJTUTeX)} +%<font&math×>\ProvidesExplFile{sjtu-math-font-times.def} +%<font&cjk&windows&und> {Windows CJK fonts definition (SJTUTeX)} +%<font&cjk&windows&und>\ProvidesExplFile{sjtu-cjk-font-windows.def} +%<font&cjk&windows&zh> {Windows CJK fonts definition for Chinese (SJTUTeX)} +%<font&cjk&windows&zh>\ProvidesExplFile{sjtu-cjk-font-windows-zh.def} +%<font&cjk&windows&ja> {Windows CJK fonts definition for Japanese (SJTUTeX)} +%<font&cjk&windows&ja>\ProvidesExplFile{sjtu-cjk-font-windows-ja.def} +%<font&cjk&mac&und> {macOS CJK fonts definition (SJTUTeX)} +%<font&cjk&mac&und>\ProvidesExplFile{sjtu-cjk-font-mac.def} +%<font&cjk&mac&zh> {macOS CJK fonts definition for Chinese (SJTUTeX)} +%<font&cjk&mac&zh>\ProvidesExplFile{sjtu-cjk-font-mac-zh.def} +%<font&cjk&mac&ja> {macOS CJK fonts definition for Japanese (SJTUTeX)} +%<font&cjk&mac&ja>\ProvidesExplFile{sjtu-cjk-font-mac-ja.def} +%<font&cjk&ubuntu&und> {Ubuntu CJK fonts definition (SJTUTeX)} +%<font&cjk&ubuntu&und>\ProvidesExplFile{sjtu-cjk-font-ubuntu.def} +%<font&cjk&ubuntu&zh> {Ubuntu CJK fonts definition for Chinese (SJTUTeX)} +%<font&cjk&ubuntu&zh>\ProvidesExplFile{sjtu-cjk-font-ubuntu-zh.def} +%<font&cjk&ubuntu&ja> {Ubuntu CJK fonts definition for Japanese (SJTUTeX)} +%<font&cjk&ubuntu&ja>\ProvidesExplFile{sjtu-cjk-font-ubuntu-ja.def} +%<font&cjk&adobe&und> {Adobe CJK fonts definition (SJTUTeX)} +%<font&cjk&adobe&und>\ProvidesExplFile{sjtu-cjk-font-adobe.def} +%<font&cjk&adobe&zh> {Adobe CJK fonts definition for Chinese (SJTUTeX)} +%<font&cjk&adobe&zh>\ProvidesExplFile{sjtu-cjk-font-adobe-zh.def} +%<font&cjk&adobe&ja> {Adobe CJK fonts definition for Japanese (SJTUTeX)} +%<font&cjk&adobe&ja>\ProvidesExplFile{sjtu-cjk-font-adobe-ja.def} +%<font&cjk&fandol&und> {Fandol CJK fonts definition (SJTUTeX)} +%<font&cjk&fandol&und>\ProvidesExplFile{sjtu-cjk-font-fandol.def} +%<font&cjk&fandol&zh> {Fandol CJK fonts definition for Chinese (SJTUTeX)} +%<font&cjk&fandol&zh>\ProvidesExplFile{sjtu-cjk-font-fandol-zh.def} +%<font&cjk&fandol&ja> {Fandol CJK fonts definition for Japanese (SJTUTeX)} +%<font&cjk&fandol&ja>\ProvidesExplFile{sjtu-cjk-font-fandol-ja.def} +%<font&cjk&founder&und> {Founder CJK fonts definition (SJTUTeX)} +%<font&cjk&founder&und>\ProvidesExplFile{sjtu-cjk-font-founder.def} +%<font&cjk&founder&zh> {Founder CJK fonts definition for Chinese (SJTUTeX)} +%<font&cjk&founder&zh>\ProvidesExplFile{sjtu-cjk-font-founder-zh.def} +%<font&cjk&founder&ja> {Founder CJK fonts definition for Japanese (SJTUTeX)} +%<font&cjk&founder&ja>\ProvidesExplFile{sjtu-cjk-font-founder-ja.def} +%<!driver> {\ExplFileDate}{2.1}{\ExplFileDescription} +%</!(driver|install)> +% +%<*driver> +\PassOptionsToPackage{fontset=ubuntu}{ctex} +\documentclass{ctxdoc} +\newcommand{\sjtutex}{SJTU\TeX} +\expandafter\def\csname ver@\jobname.dtx\endcsname + {2024/02/18 v2.1 SJTUTeX} +\usepackage{float} +\usepackage{multirow} +\usepackage{longtable} +\usepackage{listings} +\AtEndOfClass{\sloppy} +\definecolor{sjtu-red}{RGB}{200,22,30} +\definecolor{sjtu-dark-red}{RGB}{167,32,56} +\definecolor{sjtu-amber}{RGB}{253,208,0} +\definecolor{sjtu-orange}{RGB}{240,131,0} +\definecolor{sjtu-blue}{RGB}{0,134,209} +\definecolor{sjtu-dark-blue}{RGB}{0,64,152} +\definecolor{sjtu-green}{RGB}{51,141,39} +\definecolor{sjtu-dark-green}{RGB}{0,81,78} +\lstdefinestyle{style@base}{^^A + basewidth = 0.5 em, + gobble = 2, + lineskip = 2 pt, + frame = l, + framerule = 1.2 pt, + framesep = 0 pt, + escapeinside = {(*}{*)}, + basicstyle = \small\ttfamily, + xleftmargin = 0.5 em, + xrightmargin = 0.5 em, + framexleftmargin = 0.5 em, + framexrightmargin = 0.5 em} +\lstdefinestyle{style@shell}{^^A + style = style@base, + rulecolor = \color{sjtu-dark-green}, + backgroundcolor = \color{sjtu-dark-green!2}, + language = bash, + alsoletter = {-}, + keywordstyle = \color{sjtu-green}, + emphstyle = \color{sjtu-amber}} +\lstdefinestyle{style@latex}{^^A + style = style@base, + rulecolor = \color{sjtu-dark-blue}, + backgroundcolor = \color{sjtu-dark-blue!2}, + language = [LaTeX]TeX, + alsoletter = {*, -}, + keywordstyle = \color{sjtu-dark-red!80}, + texcsstyle = *\color{sjtu-blue}, + emphstyle = [1]\color{sjtu-orange}, + emphstyle = [2]\color{sjtu-green}, + emphstyle = [3]\color{sjtu-dark-blue!80}} +\lstnewenvironment{shell}[1][]{^^A + \lstset{style=style@shell, #1}}{} +\lstnewenvironment{latex}[1][]{^^A + \lstset{style=style@latex, #1}}{} +\newcommand\TNA[1]{\textcolor{sjtu-blue}{\tn{#1}}} +\newcommand\TNB[1]{\textcolor{sjtu-dark-red!80}{\tn{#1}}} +\newcommand\OPT[1]{\textcolor{sjtu-dark-blue!80}{#1}} +\newcommand\OPS[1]{\textcolor{sjtu-green}{#1}} +\newcommand\ENV[1]{\textcolor{sjtu-orange}{#1}} +\newcommand\BEV[1]{\TNA{begin}\{\ENV{#1}\}} +\newcommand\EEV[1]{\TNA{end}\{\ENV{#1}\}} +\newcommand\note[1]{{^^A + \color{sjtu-dark-green}{\noindent\bfseries 说明:}~\emph{#1}}} +\newcommand\sjtutexrev[1]{^^A + \href{https://github.com/sjtug/SJTUTeX/commit/#1}{\texttt{sjtutex} rev. #1}} +\hypersetup{^^A + bookmarksnumbered = true, + bookmarksopen = true} +\makeatletter +\pdfstringdefDisableCommands{^^A + \let\color\@gobble} +\makeatother +\begin{document} + \DocInput{\jobname.dtx} + \IndexLayout + \PrintChanges + \PrintIndex +\end{document} +%</driver> +% \fi +% +% \changes{v2.0}{2021/09/10}{应用 \LaTeXiii{} 重构代码。} +% \changes{v2.0}{2022/12/27}{新增文档类 \cls{sjtuarticle} 和 \cls{sjtureport}。} +% +% \GetFileId{\jobname.dtx} +% +% \title{\bfseries\color{sjtu-red}\sjtutex{}: 上海交通大学文档类集} +% \author{SJTUG} +% \date{\filedate\quad\fileversion\thanks{\sjtutexrev{\ExplFileVersion}.}} +% +% \hypersetup{^^A +% pdfsubject = {上海交通大学文档类集使用说明}, +% pdfkeywords = {模板; 上海交通大学; 使用说明}} +% +% \maketitle +% +% \begin{abstract} +% 此宏包旨在建立一个简单易用的上海交通大学文档类集,包括学位论文文档类 +% \cls{sjtuthesis} 以及普通文档类 \cls{sjtuarticle} 和 \cls{sjtureport}。 +% \end{abstract} +% +% \def\abstractname{免责声明} +% \begin{abstract} +% \noindent +% \begin{enumerate} +% \item 本模板的发布遵守 \href{https://www.latex-project.org/lppl/lppl-1-3c.txt} +% {\LaTeX{} Project Public License (1.3c)},使用前请认真阅读协议内容。 +% \item 学位论文模板根据 \href{https://www.gs.sjtu.edu.cn/post/detail/Z3MxNDc=} +% {《上海交通大学博士、硕士学位论文撰写指南》} ,并参考 +% \href{https://bysj.jwc.sjtu.edu.cn/ShowNews.aspx?newsno=Yr2wg3ibJJhIZh0A52amXw....} +% {《上海交通大学本科生毕业设计(论文)撰写规范》} +% 编写而成。旨在供上海交通大学准毕业生撰 +% 写学位论文使用。 +% \item 学位论文模板仅为撰写指南的参考实现,不保证审查老师不提意见。任何由于使用本模板 +% 而引起的论文格式审查问题均与本模板作者无关。 +% \item 任何个人或组织以本模板为基础进行修改、扩展而生成的新的专用模板,请严格遵 +% 守 \LaTeX{} Project Public License 协议。由于违犯协议而引起的任何纠纷 +% 争端均与本模板作者无关。 +% \end{enumerate} +% \end{abstract} +% +% \tableofcontents +% +% \begin{documentation} +% +% \section{介绍} +% +% 最早的一版 \LaTeX{} 学位论文模板由一位热心的物理系同学制作,中文字符处理采用了当时最为流行的 +% CJK--\LaTeX{} 方案。在此基础上,weijianwen 根据交大研究生院对学位论文的要求,完成 +% 了一份基本可用的交大 \LaTeX{} 学位论文模板。由于 CJK--\LaTeX{} 方案不易使用, +% weijianwen 与 William Wang 开始着手把模板向 \XeTeX{} 引擎移植。之后 weijianwen +% 又断断续续做了一些完善模板的工作,在原有硕士学位论文模板的基础上完成了交大学士 +% 和博士学位论文模板。 +% +% 2012 年 5 月模板开始在 GitHub^^A +% \footnote{\url{https://github.com/weijianwen/SJTUThesis},项目转移后该链接已重定向。}^^A +% 上管理和更新,2018 年 1 月项目转移至 SJTUG 名 +% 下。2019 年 6 月 Alexara Wu 重构了整个宏包的代码,并使用 Doc\TeX{} 文档和 +% \textsc{DocStrip} 工具进行代码的管理,升级版本号为 1.0。2022 年 11 月,论文模板 +% 改版后,使用 \LaTeXiii{} 重构了代码,添加 \cls{sjtureport} 和 \cls{sjtuarticle} +% 文档类,升级版本号为 2.0。 +% +% 现在,\sjtutex{} 代码在 GitHub^^A +% \footnote{\url{https://github.com/sjtug/SJTUTeX}}^^A +% 上维护。 +% 原 \href{https://github.com/sjtug/SJTUThesis}{SJTUThesis} 仓库则作为学位论文示例文档,提供开箱即用的模板。 +% 学位论文模板用户可以在 \href{https://github.com/sjtug/SJTUThesis/discussions}{Discussions} +% 上提问使用问题,也可以在 \href{https://github.com/sjtug/SJTUThesis/issues}{Issues} +% 中进行 Bug 反馈与新功能提案。如果需要对文档类代码进行修改,欢迎前往 +% \href{https://github.com/sjtug/SJTUTeX}{\sjtutex} 仓库进行 Pull Request。 +% \sjtutex{} 模板的许多实现细节离不开 +% \href{https://github.com/sjtug/SJTUThesis/graphs/contributors} +% {热心同学们} 的贡献,在此感谢所有为模板贡献过代码的同学们,以及所有测试和使用 +% 模板的各位同学! +% +% \note{模板的作用在于减少论文写作过程中格式调整的时间,前提是遵守模板的用法,否 +% 则即便用了 \sjtutex{} 也难以保证输出的论文符合学校规范。} +% +% \section{简明教程} +% +% \subsection{安装 \TeX{} 发行版} +% +% 因为 \LaTeXiii{} 和相关宏包在不断更新,所以推荐使用最新的 \TeX{} 发行版。 +% \sjtutex{} 支持主流的 \TeX{} 发行版,包括 \TeX{} Live、\hologo{MiKTeX}、 +% Mac\TeX{},但不支持 \CTeX{} 套装。安装方法具体可以参考 +% \href{https://github.com/sjtug/SJTUThesis/wiki/TeX-发行版及其安装} +% {Wiki 页面《\TeX{} 发行版及其安装》}。 +% +% \sjtutex{} 最低支持至 2021 年发行的 \TeX{} 发行版,\pkg{ctex} 宏包版本应当在 +% v2.5 及以上。版本过低将无法正常编译。 +% +% \subsection{文件组成} +% +% 表~\ref{tab:files} 列出了 \sjtutex{} 的主要文件及其功能介绍。 +% +% \begin{table}[!hbt] +% \centering +% \begin{threeparttable} +% \caption{模板的文件组成} +% \label{tab:files} +% \begin{tabular}{l|l|p{4cm}} +% \toprule +% \strong{类别} & \strong{文件} & \strong{说明} \\ +% \midrule +% 文档类 & \file{sjtuthesis.cls} & 学位论文文档类 \\ +% & \file{sjtureport.cls} & 报告文档类 \\ +% & \file{sjtuarticle.cls} & 文稿文档类 \\ +% & \file{sjtu-name-*.def} & 文档类名称配置 \\ +% & \file{sjtu-lang-*.def} & 文档类语言配置 \\ +% & \file{sjtu-scheme-*.def} & 文档类语言方案 \\ +% \midrule +% 字体配置文件 & \file{sjtu-text-font-*.def} & 西文字体配置 \\ +% & \file{sjtu-math-font-*.def} & 数学字体配置 \\ +% & \file{sjtu-cjk-font-*.def} & CJK 字体配置 \\ +% \midrule +% 视觉形象系统\tnote{a} & \file{sjtu-vi-logo-*.pdf} & 校标图片 \\ +% & \file{sjtu-vi-badge-*.pdf} & 校徽图片 \\ +% & \file{sjtu-vi-name-*.pdf} & 校名图片 \\ +% +% \bottomrule +% \end{tabular} +% \begin{tablenotes} +% \item[a] \href{https://vi.sjtu.edu.cn}{交大视觉形象系统} +% 的相关图像资源版权归上海交通大学所有。 +% \end{tablenotes} +% \end{threeparttable} +% \end{table} +% +% \subsection{使用文档类} +% +% 共有 3 种文档类,\cls{sjtuthesis} 用于学位论文的排版,\cls{sjtureport} 用于课程大报告的排版, +% \cls{sjtuarticle} 用于课程小论文的排版。 +% +% 将文档保存在下载好的 \sjtutex{} 模板根目录下,文件以 \texttt{.tex} 后缀结尾。 +% 注意在使用文档类时,需要将涉及到的所有源文件使用 UTF-8 编码保存。对于不同的文档类,使用方法 +% 略有不同,这里给出这三种文档类的最小使用示例。 +% +% 下面这份 \TeX{} 文档展示了 \cls{sjtuthesis} 文档类的基本用法,一般需要指定中英文名称。 +% 该文档将包含中英文封面,页眉为文档主题及章节名称。 +% \begin{latex}[moretexcs={\sjtusetup,\maketitle,\tableofcontents*,\chapter}, +% morekeywords={\frontmatter,\mainmatter}, emph={[1]sjtuthesis,document}, +% emph={[2]info},emph={[3]type,zh,en,title,author}] +% \documentclass[type=master]{sjtuthesis} +% \sjtusetup{ +% info = { +% zh/title = {上海交通大学学位论文模板示例文档}, +% en/title = {A Sample Document for SJTU Thesis Template}, +% zh/author = {某某}, +% en/author = {Mo Mo}, +% } +% } +% \begin{document} +% \maketitle +% \frontmatter +% \tableofcontents* +% \mainmatter +% \chapter{欢迎} +% \section{欢迎使用 SJTUThesis} +% 你好,\LaTeX{}! +% \end{document} +% \end{latex} +% +% 下面这份 \TeX{} 文档展示了 \cls{sjtureport} 文档类的基本用法,建议使用标准命令定义中文名称。 +% 该文档将包含标题页,页眉为校标图片、文档主题及章节名称。 +% \begin{latex}[moretexcs={\subject,\keywords,\maketitle,\chapter}, +% emph={[1]sjtureport,document}] +% \documentclass{sjtureport} +% \title{上海交通大学报告模板示例文档} +% \author{某某} +% \subject{XX期末课程论文} +% \keywords{上海交大, 饮水思源, 爱国荣校} +% \begin{document} +% \maketitle +% \chapter{欢迎} +% \section{欢迎使用 SJTUReport} +% 你好,\LaTeX{}! +% \end{document} +% \end{latex} +% +% 下面这份 \TeX{} 文档展示了 \cls{sjtuarticle} 文档类的基本用法,建议使用标准命令定义中文名称, +% 不能够使用 \tn{chapter} 这一级。该文档包含标题栏,页眉为校标图片、文档主题及章节名称。 +% \begin{latex}[moretexcs={\maketitle}, emph={[1]sjtuarticle,document}] +% \documentclass{sjtuarticle} +% \title{示例文档} +% \author{某某} +% \begin{document} +% \maketitle +% \section{欢迎使用 SJTUArticle} +% 你好,\LaTeX{}! +% \end{document} +% \end{latex} +% +% \subsection{编译文档} +% +% 文档类推荐使用 \XeLaTeX{} 或 \LuaLaTeX{} 编译,同时也支持 \pdfTeX{} 引擎。为了 +% 生成正确的目录、脚注以及交叉引用,至少需要连续编译两次。 +% +% 在实际使用中,一般推荐使用自动生成工具 \pkg{latexmk} 编译文档。\pkg{latexmk} +% 命令可以自动进行多步编译,直到交叉引用都被解决。 +% 假设您的 \TeX{} 源文件名为 \file{main.tex}, +% 可在命令行中执行如下命令使用 \XeLaTeX{} 编译文档 +% \begin{shell}[morekeywords={latexmk},emph={-xelatex}] +% latexmk -xelatex main +% \end{shell} +% 也可通过修改 \file{latexmkrc} 配置文件来控制 \pkg{latexmk} 的行为, +% 具体可以参考 \pkg{latexmk} 文档。 +% +% \section{文档配置} +% +% 本模板中的选项、命令或环境可以分为以下三类: +% \begin{itemize} +% \item 名字后面带有 \rexptarget\rexpstar{} 的,表示只能在 \cls{sjtuthesis} 文档类中使用; +% \item 名字后面带有 \exptarget\expstar{} 的,表示只能在 \cls{sjtureport} 和 \cls{sjtuarticle} 文档类中使用; +% \item 名字后面不带有特殊符号的,一般表示在 \cls{sjtuthesis}、\cls{sjtureport} 和 \cls{sjtuarticle} 文档类中都可以使用,特殊情况另作说明。 +% \end{itemize} +% +% \subsection{文档类选项} +% +% 本节所指“文档类选项”是指需要在引入文档类的时候指定的选项: +% +% \begin{latex}[emph={[1]sjtuthesis}] +% \documentclass(*\oarg{文档类选项}*){sjtuthesis} +% \end{latex} +% +% 部分选项采用 \meta{key}|=|\meta{value} 的形式,需要使用逗号分隔各选项。 +% 当 \meta{value} 省略时,将采用默认值。在下文的说明中,将用\textbf{粗体}表示默认值。 +% +% \subsubsection{通用选项} +% +% \begin{function}[rEXP,updated=2022-12-03]{type} +% \begin{syntax} +% \OPT{type} = <bachelor|(master)|doctor> +% \end{syntax} +% 论文类型。三种选项分别代表学士学位论文、硕士学位论文、博士学位论文。 +% \end{function} +% +% \begin{function}[updated=2023-03-23]{lang} +% \begin{syntax} +% \OPT{lang} = <(zh)|en|de|ja> +% \end{syntax} +% 论文主要语言。可选中文、英文、德文或日文,该选项会改变文档中的一些标题的名字。 +% 下文中 \meta{lang} 可以指定为这些选项中的其中之一。 +% \end{function} +% +% \begin{function}{draft, final} +% 是否开启草稿模式。 +% \opt{draft} 开启草稿模式,所有的图片将不会被加载,超过边界的区域将会被涂上黑色色块。 +% \opt{final} 关闭草稿模式。 +% 默认为 \opt{final}。 +% \end{function} +% +% \begin{function}[rEXP]{review} +% 盲审模式。开启盲审模式将隐去作者姓名、导师姓名、班级、学号等个人信息, +% 删去版权使用授权书、原创性声明和致谢页。默认关闭。 +% \end{function} +% +% \subsubsection{页面设置} +% +% \begin{function}{oneside, twoside} +% 指明论文的单双面模式。 +% \opt{oneside} 为单面模式, +% \opt{twoside} 为双面模式。 +% \begin{itemize} +% \item 在 \cls{sjtuthesis} 文档类中,默认为 \opt{twoside}。 +% \item 在 \cls{sjtureport} 和 \cls{sjtuarticle} 文档类中,默认为 \opt{oneside}。 +% \end{itemize} +% \end{function} +% +% \begin{function}{openright, openany} +% 指明论文是否奇数页开章。 +% \opt{openright} 为从奇数页开始新章, +% \opt{openany} 为从任意页开始新章。 +% \begin{itemize} +% \item 在 \cls{sjtuthesis} 文档类中,默认为 \opt{openright}。 +% \item 在 \cls{sjtureport} 文档类中,默认为 \opt{openany}。 +% \item 在 \cls{sjtuarticle} 文档类中,该选项不可用。 +% \end{itemize} +% \end{function} +% +% \begin{function}[EXP,added=2022-12-23]{titlepage, notitlepage} +% 指明论文的标题形式。 +% \opt{titlepage} 为使用标题页。 +% \opt{notitlepage} 为使用标题块。 +% \begin{itemize} +% \item 在 \cls{sjtuthesis} 文档类中,该选项不可用,只能使用标题页。 +% \item 在 \cls{sjtureport} 文档类中,默认为 \opt{titlepage}。 +% \item 在 \cls{sjtuarticle} 文档类中,默认为 \opt{notitlepage}。 +% \end{itemize} +% \end{function} +% +% \subsubsection{字体选项} +% \label{sec:fontsetup} +% +% \begin{function}[updated=2022-12-18]{zihao} +% \begin{syntax} +% \OPT{zihao} = <(-4)|5> +% \end{syntax} +% 论文默认字号,可以设定为小四号或五号。 +% \begin{itemize} +% \item 在 \cls{sjtuthesis} 和 \cls{sjtureport} 文档类中默认为小四号; +% \item 在 \cls{sjtuarticle} 文档类中默认为五号。 +% \end{itemize} +% \end{function} +% +% \begin{function}[added=2023-10-24]{linespread} +% \begin{syntax} +% \OPT{linespread} = <数值> +% \end{syntax} +% 设置行距倍数。 +% \begin{itemize} +% \item 在 \cls{sjtuthesis} 文档类中默认不调整行距倍数; +% \item 在 \cls{sjtuarticle} 和 \cls{sjtureport} 文档类中默认为 1.3。 +% \end{itemize} +% \end{function} +% +% \begin{function}[added=2023-10-24]{baselineskip} +% \begin{syntax} +% \OPT{baselineskip} = <长度|false> +% \end{syntax} +% 正文基线间距。 +% \begin{itemize} +% \item 在 \cls{sjtuthesis} 文档类中,默认为 20 磅。 +% \item 在 \cls{sjtureport} 和 \cls{sjtuarticle} 文档类中,默认为 \opt{false}; +% 此时正文基线间距为字号的 1.2 倍。 +% \end{itemize} +% \end{function} +% +% \begin{function}{cjk-font} +% \begin{syntax} +% \OPT{cjk-font} = <(auto)|(fandol)|windows|mac|ubuntu|adobe|founder|none> +% \end{syntax} +% 指定 CJK 字体集。\sjtutex{} 预定义了一些 CJK 字体组合, +% 具体配置见表 \ref{tab:cjkfonts}。 +% 默认情况下会根据操作系统自动配置: +% Windows 系统默认使用 \opt{windows}, +% macOS 系统默认使用 \opt{mac}, +% Linux 系统默认使用 \opt{fandol}。 +% 找不到对应定义的 CJK 字体集时的回退选项为 \opt{fandol}。 +% +% \textbf{仅} \opt{windows} 和 \opt{founder} 字体集支持 \pdfLaTeX{} 直接生成 PDF。 +% 其他 CJK 字体集使用 \pdfTeX{} 引擎需要先通过 \LaTeX{} 生成 DVI, +% 然后再使用 DVIPDFM\textit{x} 转换为 PDF。 +% \end{function} +% +% \begin{table}[ht] +% \centering\small +% \setlength\leftskip{0pt plus 1 fil minus \marginparwidth} +% \begin{threeparttable} +% \caption{CJK 字体配置} +% \label{tab:cjkfonts} +% \tabcolsep=3pt +% \begin{tabular}{ccccccc} +% \toprule +% & \strong{宋体} & \strong{黑体} & \strong{仿宋} & \strong{楷体} & \strong{明朝体}\tnote{c} & \strong{哥特体}\tnote{c} \\ +% \midrule +% |fandol|\tnote{a} & Fandol 宋体 & Fandol 黑体 & Fandol 仿宋 & Fandol 楷体 & HaranoAjiMincho & HaranoAjiGothic \\ +% |windows| & (中易)宋体 & (中易)黑体 & (中易)仿宋 & (中易)楷体 & MS Mincho & MS Gothic \\ +% |mac| & (华文)宋体-简 & (华文)黑体-简 & 华文仿宋 & (华文)楷体-简 & Hiragino Mincho ProN & Hiragino Kaku Gothic ProN \\ +% |ubuntu| & Noto Serif CJK SC & Noto Sans CJK SC & --- & 文鼎 PL 简中楷 & Noto Serif CJK JP & Noto Sans CJK JP \\ +% |adobe| & Adobe 宋体 & Adobe 黑体 & Adobe 仿宋 & Adobe 楷体 & Kozuka Mincho Pr6N & Kozuka Gothic Pr6N \\ +% |founder|\tnote{b} & 方正书宋 & 方正黑体 & 方正仿宋 & 方正楷体 & IPAMincho & IPAGothic \\ +% \bottomrule +% \end{tabular} +% \begin{tablenotes} +% \item[a] 发行版中自带的 Fandol 中文字库容易出现缺字的情况; +% 我们建议 Linux 用户使用 \opt{ubuntu} 选项或自行配置合适的字体;参见 +% \href{https://github.com/sjtug/SJTUThesis/wiki/在线使用说明} +% {Wiki 页面《在线使用说明》}。 +% \item[b] 配置 \opt{founder} 选项使用方正简繁扩展版(即 GBK 版)字体。 +% \item[c] 日文模板才需要日文明朝体与哥特体;日文字体使用 \pkg{fontspec} +% 宏包设置,故日文模板不支持 \pdfTeX{} 引擎,请使用 \XeLaTeX{} 或 +% \LuaLaTeX{} 编译。 +% \end{tablenotes} +% \end{threeparttable} +% \end{table} +% +% \begin{function}{text-font} +% \begin{syntax} +% \OPT{text-font} = <(newtx)|times|stixtwo|xits|newpx|cambria|newcm|lm|libertinus|none> +% \end{syntax} +% 指定西文字体集。\sjtutex{} 预定义了一些西文字体组合, +% 具体配置见表 \ref{tab:latinfonts}。 +% 找不到定义的西文字体集时的回退选项为 \opt{newtx}。 +% \end{function} +% +% \begin{function}{math-font} +% \begin{syntax} +% \OPT{math-font} = <(auto)|(newtx)|times|stixtwo|xits|newpx|cambria|newcm|lm|libertinus|none> +% \end{syntax} +% 指定数学字体集。\sjtutex{} 预定义了一些数学字体组合, +% 具体配置见表 \ref{tab:latinfonts} 数学字体列。 +% 默认跟随西文字体 \opt{text-font} 的设置。 +% 找不到定义的数学字体集时的回退选项为 \opt{newtx}。 +% +% \opt{xits},\opt{newcm},\opt{cambria} 选项仅支持 \XeLaTeX/\LuaLaTeX{} 编译。 +% \end{function} +% +% \begin{table}[ht] +% \centering\small +% \begin{threeparttable} +% \caption{西文字体与数学字体配置} +% \label{tab:latinfonts} +% \begin{tabular}{ccccc} +% \toprule +% & \strong{正文字体} & \strong{无衬线字体} & \strong{等宽字体} & \strong{数学字体} \\ +% \midrule +% |newtx| & TG Termes X\tnote{a} & TG Heros & TG Cursor & newtx \\ +% \multirow{2}{*}{|times|} & Times New Roman\tnote{b} & Arial & Courier New & \multirow{2}{*}{mathptmx} \\ +% & Times\tnote{c} & Helvetica & Courier & \\ +% |stixtwo| & STIX Two Text & TG Heros & TG Cursor & STIX Two Math \\ +% |xits| & XITS & TG Heros & TG Cursor & XITS Math \\ +% |newpx| & TG Pagella X & TG Heros & TG Cursor & newpx \\ +% |cambria| & Cambria & Calibri & Consolas & Cambria Math \\ +% |newcm| & New CM\tnote{d} & New CM Sans & New CM Mono & New CM Math \\ +% |lm| & LM Roman\tnote{e} & LM Sans & LM Mono & LM Math \\ +% |libertinus| & Libertinus Serif & Libertinus Sans & LM Mono & Libertinus Math \\ +% \bottomrule +% \end{tabular} +% \begin{tablenotes} +% \item[a] “TG”是 TeX Gyre 的缩写。 +% \item[b] 本行中,Times New Roman、Arial 和 Courier New 是商业字体, +% 在 Windows 和 macOS 系统上均默认安装。 +% \item[c] 使用 \pdfTeX{} 引擎时,实际使用对应字体的 Type 1 开源版本。 +% \item[d] “CM”是 Computer Modern 的缩写。 +% \item[e] “LM”是 Latin Modern 的缩写。 +% \end{tablenotes} +% \end{threeparttable} +% \end{table} +% +% \begin{function}[added=2022-12-03,updated=2023-01-05]{math-style} +% \begin{syntax} +% \OPT{math-style} = <(ISO)|TeX> +% \end{syntax} +% 数学符号样式。该选项将影响 \opt{uppercase-greek}、\opt{integral}、 +% \opt{integral-limits} 选项。 +% 默认遵循 ISO 80000-2 标准设置,即斜体的大写希腊字母、直立的积分号 +% 以及积分号上下限置于上下方。 +% 用户也可以逐项修改数学样式。 +% \end{function} +% +% \begin{function}[added=2023-01-05]{uppercase-greek} +% \begin{syntax} +% \OPT{uppercase-greek} = <slanted|upright> +% \end{syntax} +% 大写希腊字母的正/斜体。 +% \end{function} +% +% \begin{function}[added=2023-01-05]{integral} +% \begin{syntax} +% \OPT{integral} = <slanted|upright> +% \end{syntax} +% 积分号的正/斜体。 +% \end{function} +% +% \begin{function}[added=2023-01-05]{integral-limits} +% \begin{syntax} +% \OPT{integral-limits} = <true|false> +% \end{syntax} +% 行间公式中积分号上下限的位置, +% \opt{true} 使得上下限在积分号上下方, +% \opt{false} 使得上下限在积分号右侧。 +% 该选项只影响行间公式,行内公式统一居右侧,不受影响。 +% \end{function} +% +% \subsection{论文信息设置} +% +% \begin{function}{\sjtusetup} +% \begin{syntax} +% \TNA{sjtusetup}\marg{键值列表} +% \end{syntax} +% 本模板提供了一系列选项,可由您自行配置。载入文档类之后,以下 +% 所有选项均可通过统一的命令 \tn{sjtusetup} 来设置。 +% \end{function} +% +% \tn{sjtusetup} 的参数是一组由(英文)逗号隔开的选项列表,列表中的选项通常是 +% \meta{key}|=|\meta{value} 的形式。对于同一项,后面的设置将会覆盖前面的设置。在 +% 下文的说明中,将用\textbf{粗体}表示默认值。\tn{sjtusetup} 支持不同类型以及多种 +% 层次的选项设定。键值列表中,“|=|”左右的空格不影响设置;但需注意,参数列表中不 +% 可以出现空行。 +% +% \begin{latex}[moretexcs={\sjtusetup}, emph={[2]info,style,name}, +% emph={[3]zh,en,title,author,float-num-sep,achv}] +% \sjtusetup{ +% info = { +% zh/title = {上海交通大学学位论文模板示例文档}, +% en/title = {A Sample Document for SJTU Thesis Template}, +% zh/author = {某某}, +% en/author = {Mo Mo}, +% }, +% style = { +% float-num-sep = {-}, +% }, +% name = { +% achv = {攻读学位期间完成的论文}, +% }, +% } +% \end{latex} +% +% \subsubsection{信息域} +% +% \begin{function}[updated=2023-03-14]{info} +% \begin{syntax} +% \OPS{info} = \marg{键值列表} +% \end{syntax} +% 该选项包含许多子项目,用于录入论文信息。具体内容见下。 +% \begin{itemize} +% \item 在 \cls{sjtuthesis} 文档类中,推荐使用带语言代码前缀 \meta{lang} +% (比如 \opt{zh} 或 \opt{en})的键来设定对应语言的论文信息,见第 +% \ref{sec:sjtuthesiskey} 节;省略语言前缀不带“*”的项目表示对应的中文 +% 字段、带“*”的项目表示对应的英文字段属于老用法,仍然兼容但请及时更新 +% 至新用法。 +% \item 在 \cls{sjtureport} 和 \cls{sjtuarticle} 文档类中,不需要使用语言代 +% 码前缀。此时推荐直接使用标准接口来设定这些信息,这些标准接口不属于键 +% 值列表,应当直接写在导言区内,见第 \ref{sec:sjtureportcmd} 节。 +% \end{itemize} +% \end{function} +% +% \paragraph{适用于 \cls{sjtuthesis} 文档类的键} +% \label{sec:sjtuthesiskey} +% +% \begin{function}[rEXP,updated=2023-03-14]{info/<lang>/title} +% \begin{syntax} +% \OPT{\meta{lang}}/\OPT{title} = \marg{标题} +% \end{syntax} +% 标题。 +% \end{function} +% +% \begin{function}[rEXP,updated=2023-03-14]{info/<lang>/display-title} +% \begin{syntax} +% \OPT{\meta{lang}}/\OPT{display-title} = \marg{标题页标题} +% \end{syntax} +% 标题页中的题目。默认为跟随对应语言的标题。 +% 如果标题过长,可以尝试使用“|\\|”手动断行。 +% \end{function} +% +% \begin{function}[rEXP,added=2022-12-17,updated=2023-03-14]{info/<lang>/subject} +% \begin{syntax} +% \OPT{\meta{lang}}/\OPT{subject} = \marg{主题} +% \end{syntax} +% 文档主题。一般显示在中文标题页校徽下方。 +% 默认值类似于 “上海交通大学学士学位论文” 或 “A Dissertation Submitted to +% Shanghai Jiao Tong University for the Degree of Bachelor”。 +% \end{function} +% +% \begin{function}[rEXP,updated=2023-03-14]{info/<lang>/keywords} +% \begin{syntax} +% \OPT{\meta{lang}}/\OPT{keywords} = \marg{中文关键字} +% \end{syntax} +% 关键字列表。各关键字之间需使用英文逗号隔开。 +% 为防止歧义,可以用分组括号“|{...}|”把各字段括起来。 +% \end{function} +% +% \begin{function}[rEXP,updated=2023-03-14]{info/<lang>/author} +% \begin{syntax} +% \OPT{\meta{lang}}/\OPT{author} = \marg{姓名} +% \end{syntax} +% 作者姓名。 +% \end{function} +% +% \begin{function}[rEXP]{info/id} +% \begin{syntax} +% \OPT{id} = \marg{学号} +% \end{syntax} +% 学号。该键不需要语言前缀。 +% \end{function} +% +% \begin{function}[rEXP,updated=2023-03-14]{info/<lang>/supervisor, +% info/<lang>/assoc-supervisor,info/<lang>/co-supervisor} +% \begin{syntax} +% \OPT{\meta{lang}}/\OPT{supervisor} = \marg{导师姓名} +% \OPT{\meta{lang}}/\OPT{assoc-supervisor} = \marg{副导师姓名} +% \OPT{\meta{lang}}/\OPT{co-supervisor} = \marg{联合导师姓名} +% \end{syntax} +% 导师、副导师、联合导师姓名。 +% \end{function} +% +% \begin{function}[rEXP,updated=2023-03-14]{info/<lang>/degree} +% \begin{syntax} +% \OPT{\meta{lang}}/\OPT{degree} = \marg{学位名称} +% \end{syntax} +% 申请学位中英文名称。 +% 包括申请的学位类别和级别,如“工学硕士”、“理学博士”等。 +% 学士论文无需标注。 +% \end{function} +% +% \begin{function}[rEXP,updated=2023-03-14]{info/<lang>/department} +% \begin{syntax} +% \OPT{\meta{lang}}/\OPT{department} = \marg{院系名称} +% \end{syntax} +% 院系名称。 +% \end{function} +% +% \begin{function}[rEXP,updated=2023-03-14]{info/<lang>/major} +% \begin{syntax} +% \OPT{\meta{lang}}/\OPT{major} = \marg{专业名称} +% \end{syntax} +% 专业名称。 +% \end{function} +% +% \begin{function}[rEXP,updated=2023-03-14]{info/<lang>/fund} +% \begin{syntax} +% \OPT{\meta{lang}}/\OPT{fund} = \marg{资助基金名称} +% \end{syntax} +% 资助基金列表。各资助基金名称之间需使用英文逗号隔开。 +% 为防止歧义,可以用分组括号“|{...}|”把各字段括起来。 +% \end{function} +% +% \begin{function}[rEXP,updated=2023-02-25]{info/date} +% \begin{syntax} +% \OPT{date} = \marg{ISO 日期} +% \end{syntax} +% 日期。默认值为文档编译日期。也可以自己指定,要求使用 ISO 格式, +% 即 |yyyy-mm-dd| 或 |yyyy-mm|,否则设定无效。该键语言前缀不是必须的。 +% \end{function} +% +% \begin{function}[rEXP,updated=2023-03-14]{info/<lang>/display-date} +% \begin{syntax} +% \OPT{\meta{lang}}/\OPT{display-date} = \marg{日期文字} +% \end{syntax} +% 显示日期,可以显示不同于标准日期格式的日期,日期文字将会被原样输出。 +% 设定该键时,将会覆盖 \opt{info/date} 键在对应语言下的设定。 +% \end{function} +% +% \paragraph{适用于 \cls{sjtureport} 和 \cls{sjtuarticle} 文档类的命令} +% \label{sec:sjtureportcmd} +% +% \begin{function}[EXP,added=2022-12-17,updated=2023-03-14]{\title} +% \begin{syntax} +% \TNA{title}\marg{标题} +% \end{syntax} +% 设置标题,覆盖 \opt{info/title} 键的值。 +% \end{function} +% +% \begin{function}[EXP,added=2022-12-17,updated=2023-03-14]{\author} +% \begin{syntax} +% \TNA{author}\marg{姓名} +% \end{syntax} +% 设置作者姓名,覆盖 \opt{info/author} 键的值。 +% \end{function} +% +% \begin{function}[EXP,added=2022-12-17,updated=2023-03-14]{\date} +% \begin{syntax} +% \TNA{date}\marg{日期} +% \end{syntax} +% 设置日期,覆盖 \opt{info/display-date} 键的值。 +% 日期会被原样显示。 +% \end{function} +% +% \begin{function}[EXP,added=2023-03-14]{\subject} +% \begin{syntax} +% \TNA{subject}\marg{主题} +% \end{syntax} +% 文档主题。覆盖 \opt{info/subject} 键的值。 +% \end{function} +% +% \begin{function}[EXP,added=2023-03-14]{\keywords} +% \begin{syntax} +% \TNA{keywords}\marg{关键词} +% \end{syntax} +% 文档关键词,使用英文逗号隔开不同的关键词。覆盖 \opt{info/keywords} 键的值。 +% \end{function} +% +% \subsubsection{样式域} +% +% \begin{function}{style} +% \begin{syntax} +% \OPS{style} = \marg{键值列表} +% \end{syntax} +% 该选项包含许多子项目,用于设置论文样式。具体内容见下。 +% \end{function} +% +% \begin{function}[added=2024-01-10]{style/indent-first} +% \begin{syntax} +% \OPT{indent-first} = <(true)|false> +% \end{syntax} +% 章节标题后首段是否缩进。 +% \end{function} +% +% \begin{function}[added=2023-11-30]{style/equation-font} +% \begin{syntax} +% \OPT{equation-font} = \marg{字体设置} +% \end{syntax} +% 行间数学公式的字体设置,该选项主要用于调整行间公式的行距, +% 不建议修改字号字形。 +% \cls{sjtuthesis} 中默认数学公式的行距为字号的 1.2 倍。 +% \end{function} +% +% \begin{function}[added=2022-12-03,updated=2022-12-27]{style/float-font} +% \begin{syntax} +% \OPT{float-font} = \marg{字体设置} +% \end{syntax} +% 图、表等浮动体的额外字体设置。 +% 默认为 |\zihao{5}|,五号字。 +% \end{function} +% +% \begin{function}[added=2022-12-20]{style/caption-font} +% \begin{syntax} +% \OPT{caption-font} = \marg{字体设置} +% \end{syntax} +% 题注字体。 +% 默认为 |\zihao{5}\bfseries|,粗体五号字。 +% \end{function} +% +% \begin{function}[added=2022-12-20]{style/subcaption-font} +% \begin{syntax} +% \OPT{subcaption-font} = \marg{字体设置} +% \end{syntax} +% 子图题注字体。 +% 默认为 |\zihao{5}\normalfont|,正常字重五号字。 +% \end{function} +% +% \begin{function}[added=2023-03-28]{style/fnmark-style} +% \begin{syntax} +% \OPT{fnmark-style} = <plain|circled> +% \end{syntax} +% 脚注数字编号样式。 +% \opt{plain} 表示使用普通数字编号; +% \opt{circled} 表示使用带圈数字编号。 +% 在 \opt{zh} 和 \opt{ja} 语言设置中,默认为 \opt{circled}; +% 在 \opt{en} 和 \opt{de} 语言设置中,默认为 \opt{plain}。 +% +% 使用带圈数字编号时,由于超过 50 的带圈数字没有对应的 Unicode 码位, +% 所以每页脚注最好不要超过 50 个。 +% 带圈数字默认使用 CJK 字体。通常情况下默认字体不一定包含所有带圈数字的字符, +% 此时可以设置 \opt{fnmark-font} 选项给带圈数字设置合适的字体。 +% \end{function} +% +% \begin{function}[added=2022-12-03,updated=2023-03-28]{style/fnmark-font} +% \begin{syntax} +% \OPT{fnmark-font} = <haranoaji|\marg{字体设置}> +% \end{syntax} +% 脚注编号的额外字体设置。 +% 默认为空。 +% 可以使用预设 \opt{haranoaji},支持在 Unicode 引擎中使用 HaranoAjiMincho 字体 +% 中的带圈数字。 +% \end{function} +% +% \begin{function}[added=2023-12-02]{style/num-sep} +% \begin{syntax} +% \OPT{num-sep} = \marg{分隔符} +% \end{syntax} +% 图、表、公式以及定理编号中的分隔符。该选项将统一设定 \opt{float-num-sep}、 +% \opt{equation-num-sep}、\opt{theorem-num-sep} 选项。 +% 用户也可以逐项修改编号分隔符。 +% 默认为 \opt{.} 句点。 +% \end{function} +% +% \begin{function}[updated=2023-11-29]{style/float-num-sep} +% \begin{syntax} +% \OPT{float-num-sep} = \marg{分隔符} +% \end{syntax} +% 图、表等浮动体编号中的分隔符。 +% \end{function} +% +% \begin{function}[updated=2023-11-29]{style/equation-num-sep} +% \begin{syntax} +% \OPT{equation-num-sep} = \marg{分隔符} +% \end{syntax} +% 公式编号中的分隔符。 +% \end{function} +% +% \begin{function}[added=2023-12-02]{style/theorem-num-sep} +% \begin{syntax} +% \OPT{theorem-num-sep} = \marg{分隔符} +% \end{syntax} +% 定理编号中的分隔符。 +% \end{function} +% +% \begin{function}[added=2022-12-20,updated=2023-03-14]{style/header-uppercase} +% \begin{syntax} +% \OPT{header-uppercase} = <true|(false)> +% \end{syntax} +% 页眉英文字母是否大写。默认为 \opt{false}。 +% \end{function} +% +% \begin{function}[added=2022-12-20]{style/header-font} +% \begin{syntax} +% \OPT{header-font} = \marg{页眉字体} +% \end{syntax} +% 页眉字体。 +% \begin{itemize} +% \item 在 \cls{sjtuthesis} 文档类中,默认为 |\zihao{-5}|,小五号字。 +% \item 在 \cls{sjtureport} 和 \cls{sjtuarticle} 文档类中,默认为 |\zihao{-5}\sffamily|,小五号字黑体。 +% \end{itemize} +% \end{function} +% +% \begin{function}[added=2022-12-20]{style/footer-font} +% \begin{syntax} +% \OPT{footer-font} = \marg{页脚字体} +% \end{syntax} +% 页脚字体。默认为 |\zihao{-5}|,小五号字。 +% \end{function} +% +% \begin{function}[added=2022-12-03]{style/page-number} +% \begin{syntax} +% \OPT{page-number} = \marg{页码设置} +% \end{syntax} +% 设置页码的显示样式,其中 |#1| 代表当前页码。 +% 默认为 |{#1}|,即仅显示页码本身。 +% \end{function} +% +% \begin{function}[added=2023-11-30]{style/keywords-format} +% \begin{syntax} +% \OPT{keywords-format} = <(plain)|hang> +% \end{syntax} +% 设置关键词格式。默认为 \opt{plain} 无缩进的普通段落,另可选 \opt{hang} 悬挂格式。 +% \end{function} +% +% \subsubsection{名称域} +% +% \begin{function}{name} +% \begin{syntax} +% \OPS{name} = \marg{键值列表} +% \end{syntax} +% 选项包含许多子项目,用于设置论文中一些标题的名称。部分选项只能在 \cls{sjtuthesis} 中使用。 +% 具体内容见表 \ref{tab:names}。 +% \end{function} +% +% \begin{function}[updated=2023-03-18]{name/contents,name/listfigure,name/listtable, +% name/figure,name/table,name/abstract,name/index,name/appendix,name/proof,name/bib, +% name/figure*,name/table*,name/algorithm,name/listalgorithm, +% name/abbr,name/nom,name/ack,name/resume,name/digest,name/achv} +% \end{function} +% +% \begingroup +% \vspace{-48ex} +% \small \tabcolsep=3pt +% \begin{longtable}{l|p{7em}|>{\raggedright\arraybackslash}p{9em}|p{11em}|p{8em}} +% \caption{\opt{name} 选项的默认设置} \label{tab:names} \\ +% \toprule +% \strong{选项} & \strong{|lang = zh|} & \strong{|lang = en|} & \strong{|lang = de|} & \strong{|lang = ja|} \\ +% \midrule +% \endfirsthead +% \multicolumn{5}{r}{续表~\thetable} \\ +% \toprule +% \strong{选项} & \strong{|lang = zh|} & \strong{|lang = en|} & \strong{|lang = de|} & \strong{|lang = ja|} \\ +% \midrule +% \endhead +% \bottomrule +% \multicolumn{5}{r}{续下页} +% \endfoot +% \bottomrule +% \endlastfoot +% |contents| & 目录 & Contents & Inhaltsverzeichnis & 目次 \\ +% |listfigure| & 插图 & List of Figures & Abbildungsverzeichnis & 図目次 \\ +% |listtable| & 表格 & List of Tables & Tabellenverzeichnis & 表目次 \\ +% |figure| & 图 & Figure & Abbildung & 図 \\ +% |table| & 表 & Table & Tabelle & 表 \\ +% |abstract| \rexpstar & 摘要 & Abstract & Zusammenfassung & 概要 \\ +% |index| & 索引 & Index & Index & 索引 \\ +% |appendix| & 附录 & Appendix & Anhang & 付録 \\ +% |proof| & 证明 & Proof & Beweis & 证明 \\ +% |bib| & 参考文献 & Bibliography & Literaturverzeichnis & 参考文献 \\ +% \midrule +% |figure*| & Figure & 图 & Figure & Figure \\ +% |table*| & Table & 表 & Table & Table \\ +% |algorithm| & 算法 & Algorithm & Algorithmus & アルゴリズム \\ +% |listalgorithm| & 算法 & List of Algorithms & Algorithmenverzeichnis & アルゴリズム目次 \\ +% |abbr| \rexpstar & 缩略语对照表 & Abbreviation & Abkürzungsverzeichnis & 略語表 \\ +% |nom| \rexpstar & 主要符号对照表 & Nomenclature & Symbolverzeichnis & 記号表 \\ +% |ack| \rexpstar & 致谢 & Acknowledgements & Danksagungen & 謝辞 \\ +% |resume| \rexpstar & 个人简历 & Resume & Lebenslauf & 履歴書 \\ +% |digest| \rexpstar & 大摘要 & Digest & Kurzfassung & 要約 \\ +% |achv| \rexpstar & 学术论文和科研成果目录 & List of Research Achievements & Forschungsleistungen & 研究業績書 \\ +% \end{longtable} +% \endgroup +% +% \section{内容编写} +% +% \begin{function}{document} +% \begin{syntax} +% \BEV{document} +% \ \meta{文档内容} +% \EEV{document} +% \end{syntax} +% 在文档开始后进行内容编写,文档内容由 |document| 环境包裹。 +% \end{function} +% +% \subsection{标题页和声明页} +% +% \begin{function}[updated=2022-12-03]{\maketitle} +% \begin{syntax} +% \TNA{maketitle} +% \end{syntax} +% 生成标题。 +% \begin{itemize} +% \item 在 \cls{sjtuthesis} 文档类中,生成标题页。 +% \item 在 \cls{sjtureport} 和 \cls{sjtuarticle} 文档类中, +% \begin{itemize} +% \item 若处于 \opt{titlepage} 文档类选项中,生成标题页。\cls{sjtureport} 文档类默认。 +% \item 若处于 \opt{notitlepage} 文档类选项中,生成标题块。\cls{sjtuarticle} 文档类默认。 +% \end{itemize} +% \end{itemize} +% \end{function} +% +% \begin{function}[rEXP,updated=2022-12-20]{\copyrightpage} +% \begin{syntax} +% \TNA{copyrightpage} +% \TNA{copyrightpage}\oarg{授权书扫描件} +% \end{syntax} +% 生成空白版权使用授权书。 +% 接受一个可选参数用于插入版权使用授权书扫描件,使用可选参数时需要手动加载 \pkg{pdfpages} 宏包。 +% \end{function} +% +% \subsection{前文部分} +% +% \begin{function}[rEXP]{\frontmatter} +% \begin{syntax} +% \TNB{frontmatter} +% \end{syntax} +% 声明前文部分开始。 +% \end{function} +% +% \begin{function}[updated=2023-11-29]{abstract} +% \begin{syntax} +% \BEV{abstract}\oarg{lang} +% \ \meta{摘要} +% \EEV{abstract} +% \BEV{abstract} +% \ \meta{摘要} +% \EEV{abstract} +% \end{syntax} +% 摘要环境。会在结尾添加关键词。 +% \begin{itemize} +% \item \cls{sjtuthesis} 文档类中,可以设置可选参数指定摘要的语言, +% 默认为 \opt{zh}。 +% \item \cls{sjtuarticle} 和 \cls{sjtureport} 文档类中,不需要可选参数。 +% \end{itemize} +% \end{function} +% +% \begin{function}[rEXP,updated=2023-11-29]{abstract*} +% \cls{sjtuthesis} 文档类中使用带星号的 \env{abstract*} 环境不会出现在目录中。 +% \end{function} +% +% \begin{function}{\tableofcontents,\tableofcontents*,\listoffigures,\listoffigures*, +% \listoftables,\listoftables*,\listofalgorithms,\listofalgorithms*} +% 目录、插图、表格和算法等索引命令如表 \ref{tab:list} 所示,将其插入到期望的 +% 位置即可。带*的命令表示对应的索引表不会出现在目录中。 +% \begin{table}[H] +% \centering\small +% \begin{threeparttable} +% \caption{目录和索引表} +% \label{tab:list} +% \begin{tabular}{lp{4cm}lp{4cm}} +% \toprule +% \strong{用途} & \strong{命令} & \strong{用途} & \strong{命令} \\ +% \midrule +% 目录 & \tn{tableofcontents} & 插图索引 & \tn{listoffigures} \\ +% & \tn{tableofcontents*} & & \tn{listoffigures*} \\ +% \midrule +% 表格索引 & \tn{listoftables} & 算法索引\tnote{a} & \tn{listofalgorithms} \\ +% & \tn{listoftables*} & & \tn{listofalgorithms*} \\ +% \bottomrule +% \end{tabular} +% \begin{tablenotes} +% \item[a] 启用 \pkg{algorithm2e} 或 \pkg{algorithm} 后有效。 +% \end{tablenotes} +% \end{threeparttable} +% \end{table} +% \end{function} +% +% \subsection{正文部分} +% +% \begin{function}[rEXP]{\mainmatter} +% \begin{syntax} +% \TNB{mainmatter} +% \end{syntax} +% 声明正文部分开始。正文部分是论文的核心,您可以分章节撰写。 +% 如有需求,也可以采用多文件编译的方式。 +% \end{function} +% +% \begin{function}[updated=2022-12-03]{\footnote} +% \begin{syntax} +% \TNA{footnote}\oarg{脚注编号}\marg{脚注文字} +% \end{syntax} +% 插入脚注。其中脚注编号参数是可选的,一般不需要输入。 +% \end{function} +% +% \begin{function}{assumption,axiom,conjecture,corollary,definition,example, +% exercise,lemma,problem,proposition,theorem} +% \sjtutex{} 预定义了一系列数学环境。在启用 \pkg{ntheorem} 或 \pkg{amsthm} +% 宏包后有效,环境如表 \ref{tab:theorems} 所示。 +% \begin{table}[H] +% \centering +% \small +% \caption{预定义的数学环境} +% \label{tab:theorems} +% \begin{tabular}{*{7}{l}} +% \toprule +% \env{assumption} & \env{axiom} & \env{conjecture} & \env{corollary} & \env{definition} & \env{example} & \env{exercise} \\ +% 假设 & 公理 & 猜想 & 推论 & 定义 & 例 & 练习 \\ +% \midrule +% \env{lemma} & \env{problem} & \env{proof} & \env{proposition} & \env{remark} & \env{solution} & \env{theorem} \\ +% 引理 & 问题 & 证明 & 命题 & 注 & 解 & 定理 \\ +% \bottomrule +% \end{tabular} +% \end{table} +% \end{function} +% +% \begin{function}[added=2023-10-24]{\setbaselineskip} +% \begin{syntax} +% \TNA{setbaselineskip}\marg{长度} +% \end{syntax} +% 设置当前的基线间距,一般在字号命令之后使用。 +% \end{function} +% +% \begin{function}{\appendix} +% \begin{syntax} +% \TNA{appendix} +% \end{syntax} +% 附录由 \tn{appendix} 命令开启,然后像正文一样书写。 +% \end{function} +% +% \begin{function}[rEXP,updated=2022-03-02]{nomenclature,nomenclature*} +% \begin{syntax} +% \BEV{nomenclature}\oarg{标题} +% \ \meta{符号对照表} +% \EEV{nomenclature} +% \end{syntax} +% 符号对照表环境。带星号的版本不会出现在目录中。可以使用可选参数手动设置标题。 +% 符号对照表环境仅设置标题,内部实现可由用户自行决定。 +% 可以使用 \pkg{longtable},也可以使用 \pkg{nomencl} 宏包。 +% \end{function} +% +% \begin{function}[rEXP,updated=2022-03-02]{abbreviation,abbreviation*} +% \begin{syntax} +% \BEV{abbreviation}\oarg{标题} +% \ \meta{缩略语对照表} +% \EEV{abbreviation} +% \end{syntax} +% 缩略语对照表环境。带星号的版本不会出现在目录中。可以使用可选参数手动设置标题。 +% 缩略语对照表环境仅设置标题,内部实现可由用户自行决定。 +% \end{function} +% +% \subsection{后文部分} +% +% \begin{function}[rEXP]{\backmatter} +% \begin{syntax} +% \TNB{backmatter} +% \end{syntax} +% 声明后文部分开始。 后文部分包含致谢等。 +% \end{function} +% +% \begin{function}[rEXP,updated=2022-02-24]{acknowledgements} +% \begin{syntax} +% \BEV{acknowledgements}\oarg{标题} +% \ \meta{致谢内容} +% \EEV{acknowledgements} +% \end{syntax} +% 致谢环境。盲审模式下致谢将被隐去。可以使用可选参数手动设置标题。 +% \end{function} +% +% \begin{function}[rEXP,updated=2022-02-24]{achievements} +% \begin{syntax} +% \BEV{achievements}\oarg{标题} +% \ \meta{获得的科研成果} +% \EEV{achievements} +% \end{syntax} +% 科研成果环境,可以使用可选参数手动设置标题。内部请配合使用下面的附录用文献列表环境 +% \env{bibliolist} 和 \env{bibliolist*}。你可以在该环境中使用带星号的节次命令 +% 以分隔不同的类型的成果(比如学术论文、专利等);你也可以使用多个 \env{achievements} +% 环境,配合不同的可选参数作为标题,展示不同类型的成果。 +% \end{function} +% +% \begin{function}[rEXP,updated=2022-03-23]{bibliolist,bibliolist*} +% \begin{syntax} +% \BEV{bibliolist}\marg{最长条目编号} +% \ \TNA{item} \meta{文献条目} +% \EEV{bibliolist} +% \BEV{bibliolist*}\marg{最长条目编号} +% \ \TNA{item} \meta{文献条目(隐去姓名)} +% \EEV{bibliolist*} +% \end{syntax} +% 附录用文献环境,只允许在 \env{achievements} 环境中使用。 +% 需要指定最长条目的编号作为参数,比如 \opt{99}; +% 如果将该强制参数被指定为空,将不显示编号,每条以悬挂缩进做区分。 +% 环境内部使用 \tn{item} 来分隔各条目,在同一个 \env{achievements} 环境内、不同的 +% \env{bibliolist} 或 \env{bibliolist*} 环境中编号连续递增、不会间断。 +% 普通模式下显示 \env{bibliolist} 中的内容,盲审模式下显示 \env{bibliolist*} 中的内容。 +% \end{function} +% +% \begin{function}[rEXP,updated=2022-02-24]{resume} +% \begin{syntax} +% \BEV{resume}\oarg{标题} +% \ \meta{简历内容} +% \EEV{resume} +% \end{syntax} +% 简历环境。盲审模式下简历将被隐去。可以使用可选参数手动设置标题。 +% \end{function} +% +% \begin{function}[rEXP]{digest} +% \begin{syntax} +% \BEV{digest}\oarg{lang} +% \ \meta{大摘要} +% \EEV{digest} +% \end{syntax} +% 学士论文大摘要,使用可选参数设定语言,默认为 \opt{en}。 +% \end{function} +% +% \section{宏包依赖情况} +% +% 使用不同编译方式、指定不同选项,会导致宏包依赖情况有所不同。 +% 具体如下: +% \begin{itemize} +% \item 在任何情况下,文档类都会\emph{显式}调用以下宏包 +% (或文档类): +% \begin{itemize} +% \item \cls{ctexbook}、\cls{ctexrep} 和 \cls{ctexart}, +% 提供中文排版的通用框架。属于 \CTeX{} 宏集 \cite{CTeX}。 +% \item \pkg{mathtools},对 \LaTeX{} 的数学排版功能进行了全面扩展。 +% 是 \pkg{amsmath} 的扩充。 +% \item \pkg{geometry},用于调整页面尺寸。 +% \item \pkg{fancyhdr},处理页眉页脚。 +% \item \pkg{tocloft},设置目录格式。 +% \item \pkg{caption}、\cls{bicaption} 和 \cls{subcaption},用于设置题注。 +% \item \pkg{xcolor},提供彩色支持。 +% \item \pkg{graphicx},提供图形插入的接口。 +% \item \pkg{enumitem},设置列表环境格式。 +% \end{itemize} +% \item \cls{sjtuthesis} 会调用 \pkg{xtemplate} 和 \pkg{array},用于辅助 +% 标题页等特殊页面的排版。 +% \item 部分西文与数学字体预设会调用相关的字体宏包,具体调用情况请参见对应的 +% 字体预设文件。 +% \item 部分数字字体预设会调用 \pkg{unicode-math} 处理 Unicode 编码的 +% OpenType 数学字体。在未启用 \pkg{unicode-math} 的情况下,会调用 \pkg{bm} +% 来选择粗体数学符号。 +% \end{itemize} +% +% 这里只列出了本模板直接调用的宏包。这些宏包自身的调用情况, +% 此处不再具体展开。如有需要,请参阅相关文档。 +% +% \begin{thebibliography}{99} +% +% \addcontentsline{toc}{section}{\refname} +% +% \newcommand\urlprefix{\newline\hspace*{\fill}} +% \let\OldUrl=\url +% \renewcommand\url[2][]{{\small\textit{#1}~\OldUrl{#2}}} +% \newcommand\CTANurl[2][]{{^^A +% \small\textit{#1}~\href{https://mirror.ctan.org/#2}{\texttt{CTAN://#2}}}} +% +% \subsection*{图书} +% +% \bibitem{Knuth1986} +% \textsc{Knuth D E}. +% \newblock \textit{The \TeX book: Computers \& Typesetting, volume A}\allowbreak[M]. +% \newblock Boston: Addison--Wesley Publishing Company, 1986. +% \urlprefix \CTANurl[源代码^^A +% \footnote{此代码只可作为学习之用。未经 Knuth 本人同意,您不应当编译此文档。}:]^^A +% {systems/knuth/dist/tex/texbook.tex} +% +% \bibitem{LiuHY2013} +% 刘海洋. +% \newblock \textit{\LaTeX{} 入门} [M]. +% \newblock 北京: 电子工业出版社, 2013 +% +% \subsection*{标准、规范} +% +% \bibitem{gb-t-7713.1-2006} +% 国务院学位委员会办公室, 全国信息与文献标准化技术委员会. +% \newblock \textit{学位论文编写规则: GB/T 7713.1--2006}\allowbreak[S]. +% \newblock 北京: 中国标准出版社, 2007 +% +% \bibitem{cy-t-35-2001} +% 全国信息与文献标准化技术委员会第七分委员会, 中华人民共和国新闻出版总署. +% \newblock \textit{科技文献的章节编号方法: CY/T 35--2001}\allowbreak[S]. +% \newblock [S.l. : s.n.], 2001. +% +% \bibitem{SJTUGS2023} +% 上海交通大学研究生院. +% \newblock \textit{上海交通大学博士、硕士学位论文撰写指南}\allowbreak[EB/OL]. +% \newblock (2023-11-03)[2023-12-04]. +% \urlprefix\url{https://www.gs.sjtu.edu.cn/post/detail/Z3MxNDc=} +% +% \subsection*{宏包、模版} +% +% \bibitem{source2e} +% \textsc{Braams J}, \textsc{Carlisle D}, \textsc{Jeffrey A}, et~al. +% \newblock \textit{The \LaTeXe{} Sources}\allowbreak[CP/OL]. +% \newblock (2023-11-01). +% \urlprefix\url{https://ctan.org/pkg/latex} +% \urlprefix\CTANurl[源代码:]{macros/latex/base/source2e.pdf} +% +% \bibitem{interface3} +% \textsc{The \LaTeX{} Project}. +% \newblock \textit{The \LaTeXiii{} Interfaces}\allowbreak[EB/OL]. +% \newblock (2023-11-09). +% \urlprefix\url{https://ctan.org/pkg/l3kernel} +% \urlprefix\CTANurl[文档:]{macros/latex/l3kernel/interface3.pdf} +% +% \bibitem{CTeX} +% \textsc{CTEX.ORG}. +% \newblock \textit{\CTeX{} 宏集手册}\allowbreak[EB/OL]. +% \newblock version 2.5.10, +% \newblock (2022-07-14). +% \urlprefix\url{https://ctan.org/pkg/ctex} +% \urlprefix\CTANurl[文档及源代码:]{language/chinese/ctex/ctex.pdf} +% +% \bibitem{fduthesis} +% 曾祥东. +% \newblock \textit{fduthesis: 复旦大学论文模板}\allowbreak[EB/OL]. +% \newblock version 0.9a, +% \newblock (2023-05-27). +% \urlprefix\url{https://ctan.org/pkg/fduthesis} +% \urlprefix\CTANurl[文档及源代码:]{macros/latex/contrib/fduthesis/fduthesis-code.pdf} +% +% \bibitem{thuthesis} +% 清华大学 TUNA 协会. +% \newblock \textit{\textsc{ThuThesis}:清华大学学位论文模板}\allowbreak[EB/OL]. +% \newblock version 7.4.0, +% \newblock (2023-05-15). +% \urlprefix\url{https://ctan.org/pkg/thuthesis} +% \urlprefix\CTANurl[文档及源代码:]{macros/latex/contrib/thuthesis/thuthesis.pdf} +% +% \end{thebibliography} +% +% \end{documentation} +% +% \begin{implementation} +% +% \clearpage +% \section{代码实现} +% +% \changes{v2.1}{2023/12/05}{同步 \LaTeX{} 2020/10/01,无需显式调用 +% \pkg{expl3} 和 \pkg{xparse} 宏包。} +% 本模板使用 \LaTeXiii{} 语法编写,依赖 \pkg{expl3} 环境, +% 并需调用 \pkg{l3packages} 中的相关宏包。 +% +% \begin{macrocode} +%<@@=sjtu> +% \end{macrocode} +% +% \subsection{内部变量} +% +% \begin{variable}{\l_@@_tmp_bool,\l_@@_tmp_clist,\l_@@_tmp_dim, +% \l_@@_tmp_skip,\l_@@_tmp_box} +% 临时变量。 +% \begin{macrocode} +%<*class> +%<thesis>\bool_new:N \l_@@_tmp_bool +%<thesis>\clist_new:N \l_@@_tmp_clist +\dim_new:N \l_@@_tmp_dim +\skip_new:N \l_@@_tmp_skip +\box_new:N \l_@@_tmp_box +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\g_@@_thesis_type_int} +% 论文类型。 +% \begin{macrocode} +%<thesis>\int_new:N \g_@@_thesis_type_int +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\g_@@_lang_tl,\g_@@_lang_clist, +% \c_@@_lang_de_tl,\c_@@_lang_ja_tl } +% 论文语言。 +% \begin{macrocode} +\tl_new:N \g_@@_lang_tl +%<thesis>\clist_set:Nn \g_@@_lang_clist { zh, en } +\tl_const:Nn \c_@@_lang_de_tl { de } +\tl_const:Nn \c_@@_lang_ja_tl { ja } +% \end{macrocode} +% \end{variable} +% +% \begin{variable} +% {\g_@@_zihao_tl,\g_@@_font_size_int,\g_@@_font_size_dim, +% \g_@@_baseline_skip_dim,\g_@@_fixed_baselineskip_bool,\g_@@_line_spread_fp} +% 字号大小与行距。 +% \begin{macrocode} +\tl_new:N \g_@@_zihao_tl +\int_new:N \g_@@_font_size_int +\dim_new:N \g_@@_font_size_dim +\dim_new:N \g_@@_baseline_skip_dim +\bool_new:N \g_@@_fixed_baselineskip_bool +\fp_new:N \g_@@_line_spread_fp +% \end{macrocode} +% \end{variable} +% +% \begin{variable} +% {\g_@@_text_font_tl,\g_@@_math_font_tl,\g_@@_cjk_font_tl} +% 字体配置。 +% \begin{macrocode} +\tl_new:N \g_@@_text_font_tl +\tl_new:N \g_@@_math_font_tl +\tl_new:N \g_@@_cjk_font_tl +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\g_@@_slanted_uppercase_greek_bool} +% 大写希腊字母的正/斜体。 +% \begin{macrocode} +\bool_new:N \g_@@_slanted_uppercase_greek_bool +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\g_@@_upright_integral_bool} +% 积分号的正/斜体。 +% \begin{macrocode} +\bool_new:N \g_@@_upright_integral_bool +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\g_@@_integral_limits_bool} +% 积分号上下限的位置。 +% \begin{macrocode} +\bool_new:N \g_@@_integral_limits_bool +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\g_@@_math_font_options_clist} +% 传入数学字体宏包的选项列表。 +% \begin{macrocode} +\clist_new:N \g_@@_math_font_options_clist +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\g_@@_review_bool} +% 盲审模式。 +% \begin{macrocode} +%<thesis>\bool_new:N \g_@@_review_bool +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\g_@@_options_to_ctex_class_clist} +% 保存由 \pkg{sjtutex} 传入 \pkg{ctex} 文档类的选项列表。 +% 默认 \pkg{ctex} 文档类的选项: +% 使用 UTF8 编码,不调整基础类的版式以及不载入 \pkg{ctex} 字体预设配置。 +% \begin{macrocode} +\clist_set:Nn \g_@@_options_to_ctex_class_clist + { a4paper, UTF8, scheme = plain, fontset = none } +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\g_@@_options_to_packages_clist} +% 保存由传入其他宏包的选项列表。 +% \begin{macrocode} +\clist_new:N \g_@@_options_to_packages_clist +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\g_@@_twoside_bool} +% 是否开启双页模式。 +% \begin{macrocode} +\bool_new:N \g_@@_twoside_bool +%<thesis>\bool_set_true:N \g_@@_twoside_bool +%<!thesis>\bool_set_false:N \g_@@_twoside_bool +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\g_@@_openright_bool} +% 是否在奇数页开始新章。 +% \begin{macrocode} +%<!article>\bool_new:N \g_@@_openright_bool +%<thesis>\bool_set_true:N \g_@@_openright_bool +%<report>\bool_set_false:N \g_@@_openright_bool +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\g_@@_titlepage_bool} +% 是否生成标题页。 +% \begin{macrocode} +%<!thesis>\bool_new:N \g_@@_titlepage_bool +%<report>\bool_set_true:N \g_@@_titlepage_bool +%<article>\bool_set_false:N \g_@@_titlepage_bool +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\g_@@_draft_bool} +% 是否开启草稿模式。 +% \begin{macrocode} +\bool_new:N \g_@@_draft_bool +% \end{macrocode} +% \end{variable} +% +% \begin{macro}[int]{\@@_deprecated_option:n,\@@_set_deprecated_option:n} +% 对过时选项给出警告。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_deprecated_option:n + { \msg_warning:nnn { sjtutex } { deprecated-option } } +\cs_new_protected:Npn \@@_set_deprecated_option:n #1 + { + \@@_deprecated_option:n { Option~ `#1'~ is~ set. } + \keys_set:nn { sjtu / option } {#1} + } +\msg_new:nnn { sjtutex } { deprecated-option } + { Option~ `\l_keys_key_tl'~ is~ deprecated. \\ #1 } +% \end{macrocode} +% \end{macro} +% +% \subsection{选项处理} +% +% 定义 |sjtu/option| 键值类。 +% \begin{macrocode} +\keys_define:nn { sjtu / option } + { +% \end{macrocode} +% +% \changes{v2.0}{2022/10/25}{\cls{sjtuthesis} 类型选项移除 \opt{course}, +% 不再支持课程论文。} +% \begin{macro}{type} +% 论文类型。 +% \begin{macrocode} +%<*thesis> + type .choice: , + type .value_required:n = true , + type .choices:nn = + { bachelor, master, doctor } + { \int_gset_eq:NN \g_@@_thesis_type_int \l_keys_choice_int } , + type .initial:n = { master } , +%</thesis> +% \end{macrocode} +% \end{macro} +% +% \changes{v2.0}{2023/03/19}{语言选项新增 \opt{ja},添加日文模板。} +% \changes{v2.0}{2023/03/23}{语言选项新增 \opt{de},添加德文模板。} +% \begin{macro}{lang} +% 论文主要语言。 +% \begin{macrocode} + lang .choice: , + lang .value_required:n = true , + lang .choices:nn = + { zh, en, de, ja } + { + \tl_gset_eq:NN \g_@@_lang_tl \l_keys_choice_tl +%<*thesis> + \clist_if_in:NnF \g_@@_lang_clist {#1} + { \clist_gput_right:Nn \g_@@_lang_clist {#1} } +%</thesis> + } , + lang .initial:n = { zh } , +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{zihao} +% 字号大小。 +% \begin{macrocode} + zihao .choice: , + zihao .value_required:n = true , + zihao / 5 .code:n = + { + \tl_gset:Nn \g_@@_zihao_tl {#1} + \int_gset:Nn \g_@@_font_size_int { 1 } + \dim_gset:Nn \g_@@_font_size_dim { 10.5 bp } + } , + zihao / -4 .code:n = + { + \tl_gset:Nn \g_@@_zihao_tl {#1} + \int_gset:Nn \g_@@_font_size_int { 2 } + \dim_gset:Nn \g_@@_font_size_dim { 12 bp } + } , +%<!article> zihao .initial:n = { -4 } , +%<article> zihao .initial:n = { 5 } , +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{linespread} +% 行距倍数。 +% \begin{macrocode} + linespread .fp_gset:N = \g_@@_line_spread_fp , + linespread .initial:n = { \c_nan_fp } , + linespread .value_required:n = true , +% \end{macrocode} +% \end{macro} +% +% \changes{v2.0}{2022/12/03}{添加 \opt{lineskip} 文档类选项。} +% \changes{v2.1}{2023/10/24}{添加 \opt{baselineskip} 文档类选项, +% 替换原 \opt{lineskip} 选项。} +% \begin{macro}{baselineskip} +% 正文基线间距。 +% \begin{macrocode} + baselineskip .choice: , + baselineskip .value_required:n = true , + baselineskip / false .code:n = + { \bool_gset_false:N \g_@@_fixed_baselineskip_bool } , + baselineskip / unknown .code:n = + { + \bool_gset_true:N \g_@@_fixed_baselineskip_bool + \dim_gset:Nn \g_@@_baseline_skip_dim {#1} + } , +%<thesis> baselineskip .initial:n = { 20 bp } , +%<!thesis> baselineskip .initial:n = { false } , +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{text-font,math-font,cjk-font} +% 字体配置。 +% \begin{macrocode} + text-font .tl_gset:N = \g_@@_text_font_tl , + text-font .initial:n = { newtx } , + math-font .tl_gset:N = \g_@@_math_font_tl , + cjk-font .tl_gset:N = \g_@@_cjk_font_tl , +% \end{macrocode} +% \end{macro} +% +% \opt{fontset} 是过时选项。 +% \begin{macrocode} + fontset .code:n = { \@@_set_deprecated_option:n { cjk-font = #1 } } , +% \end{macrocode} +% +% \changes{v2.0}{2023/01/05}{添加 \opt{math-style} 文档类选项,默认值为 \opt{ISO}。} +% \begin{macro}{math-style} +% 数学符号样式。 +% \begin{macrocode} + math-style .choice: , + math-style .value_required:n = true, + math-style / TeX .code:n = + { + \bool_gset_false:N \g_@@_slanted_uppercase_greek_bool + \bool_gset_false:N \g_@@_upright_integral_bool + \bool_gset_false:N \g_@@_integral_limits_bool + } , + math-style / ISO .code:n = + { + \bool_gset_true:N \g_@@_slanted_uppercase_greek_bool + \bool_gset_true:N \g_@@_upright_integral_bool + \bool_gset_true:N \g_@@_integral_limits_bool + } , + math-style .initial:n = { ISO } , +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{uppercase-greek} +% 大写希腊字母的正/斜体。 +% \begin{macrocode} + uppercase-greek .choice: , + uppercase-greek .value_required:n = true , + uppercase-greek / slanted .code:n = + { \bool_gset_true:N \g_@@_slanted_uppercase_greek_bool } , + uppercase-greek / upright .code:n = + { \bool_gset_false:N \g_@@_slanted_uppercase_greek_bool } , +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{integral} +% 积分号的正/斜体。 +% \begin{macrocode} + integral .choice: , + integral .value_required:n = true , + integral / slanted .code:n = + { \bool_gset_false:N \g_@@_upright_integral_bool } , + integral / upright .code:n = + { \bool_gset_true:N \g_@@_upright_integral_bool } , +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{integral-limits} +% 积分号上下限的位置。 +% \begin{macrocode} + integral-limits .choice: , + integral-limits .value_required:n = true , + integral-limits / false .code:n = + { \bool_gset_false:N \g_@@_integral_limits_bool } , + integral-limits / true .code:n = + { \bool_gset_true:N \g_@@_integral_limits_bool } , +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{oneside,twoside} +% 单面或双面模式。 +% \begin{macrocode} + oneside .value_forbidden:n = true, + twoside .value_forbidden:n = true, + oneside .code:n = + { \bool_gset_false:N \g_@@_twoside_bool } , + twoside .code:n = + { \bool_gset_true:N \g_@@_twoside_bool } , +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{openany,openright} +% 是否奇数页开章。 +% \begin{macrocode} +%<*!article> + openany .value_forbidden:n = true, + openright .value_forbidden:n = true, + openany .code:n = + { \bool_gset_false:N \g_@@_openright_bool } , + openright .code:n = + { \bool_gset_true:N \g_@@_openright_bool } , +%</!article> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{titlepage,notitlepage} +% 是否生成标题页。 +% \begin{macrocode} +%<*!thesis> + titlepage .value_forbidden:n = true, + notitlepage .value_forbidden:n = true, + titlepage .code:n = + { \bool_gset_true:N \g_@@_titlepage_bool } , + notitlepage .code:n = + { \bool_gset_false:N \g_@@_titlepage_bool } , +%</!thesis> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{draft,final} +% 是否开启草稿模式。 +% \begin{macrocode} + draft .value_forbidden:n = true, + final .value_forbidden:n = true, + draft .code:n = + { \bool_gset_true:N \g_@@_draft_bool } , + final .code:n = + { \bool_gset_false:N \g_@@_draft_bool } , +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{review} +% 盲审模式。 +% \begin{macrocode} +%<thesis> review .bool_gset:N = \g_@@_review_bool , +%<thesis> review .initial:n = false , +% \end{macrocode} +% \end{macro} +% +% 处理未知选项。 +% \begin{macrocode} + unknown .code:n = { \msg_error:nn { sjtutex } { unknown-option } } + } +\msg_new:nnn { sjtutex } { unknown-option } + { Class~ option~ "\l_keys_key_tl"~ is~ unknown. } +% \end{macrocode} +% +% 将文档类选项传给 |sjtu/option|。 +% \begin{macrocode} +\cs_if_exist:NTF \ProcessKeyOptions + { \ProcessKeyOptions [ sjtu / option ] } + { + \RequirePackage { l3keys2e } + \ProcessKeysOptions { sjtu / option } + } +% \end{macrocode} +% \cls{sjtureport} 和 \cls{sjtuarticle} 文档类默认使用 1.3 行距倍数。 +% \begin{macrocode} +%<*!thesis> +\bool_if:NF \g_@@_fixed_baselineskip_bool + { + \fp_if_nan:nT { \g_@@_line_spread_fp } + { \fp_set:Nn \g_@@_line_spread_fp { 1.3 } } + } +%</!thesis> +% \end{macrocode} +% +% 数字字体宏包选项。 +% \begin{macrocode} +\clist_set:Nx \g_@@_math_font_options_clist + { + \bool_if:NT \g_@@_slanted_uppercase_greek_bool + { slantedGreek } , + \bool_if:NT \g_@@_upright_integral_bool + { upint } + } +% \end{macrocode} +% +% 追加全局选项。 +% \begin{macrocode} +\clist_put_right:Nx \@classoptionslist + { + a4paper , + \tl_if_eq:NNT \g_@@_lang_tl \c_@@_lang_de_tl + { german, ngerman } , + \bool_if:NT \g_@@_integral_limits_bool + { intlimits } , + \g_@@_math_font_options_clist + } +% \end{macrocode} +% +% 设置传入 \pkg{ctex} 文档类的选项。 +% \begin{macrocode} +\clist_put_right:Nx \g_@@_options_to_ctex_class_clist + { + zihao = \g_@@_zihao_tl , + \fp_if_nan:nF { \g_@@_line_spread_fp } + { linespread = \fp_use:N \g_@@_line_spread_fp } , + \bool_if:NTF \g_@@_twoside_bool + { twoside } { oneside } , +%<!article> \bool_if:NTF \g_@@_openright_bool +%<!article> { openright } { openany } , +%<!thesis> \bool_if:NTF \g_@@_titlepage_bool +%<!thesis> { titlepage } { notitlepage } , + \bool_if:NTF \g_@@_draft_bool + { draft } { final } + } +% \end{macrocode} +% +% \subsection{载入宏包、文档类} +% +% 将选项传入 \pkg{ctex} 文档类。 +% \begin{macrocode} +\exp_args:No \PassOptionsToClass + { \g_@@_options_to_ctex_class_clist } +%<thesis> { ctexbook } +%<report> { ctexrep } +%<article> { ctexart } +% \end{macrocode} +% +% 传入各宏包选项。 +% \begin{macrocode} +\clist_set:Nx \g_@@_options_to_packages_clist + { + { no-math } { fontspec } , + { titles } { tocloft } , + { list = off } { bicaption } , + { warnings-off = + { + mathtools-overbracket, + mathtools-colon + } + } { unicode-math } , + { amsmath, thmmarks } { ntheorem } , +%<!article> { chapter } { algorithm } , +%<!article> { algochapter } { algorithm2e } , + { + \bool_if:NTF \g_@@_integral_limits_bool + { displaylimits } { nolimits } + } { cmupint } + } +\clist_map_inline:Nn \g_@@_options_to_packages_clist + { \PassOptionsToPackage #1 } +% \end{macrocode} +% +% 载入 \pkg{ctex} 文档类。 +% 在使用 \XeLaTeX{} 编译时,\pkg{ctex} 的底层将调用 \pkg{xeCJK} +% 宏包;而在使用 \LuaLaTeX{} 编译时,则将调用 \pkg{LuaTeX-ja} 宏包。 +% 两种情况下 \pkg{ctex} 均会调用 \pkg{fontspec} 宏包。 +% \begin{macrocode} +%<thesis>\LoadClass { ctexbook } +%<report>\LoadClass { ctexrep } +%<article>\LoadClass { ctexart } +% \end{macrocode} +% +% 载入各宏包。 +% \begin{macrocode} +\RequirePackage + { +%<thesis> xtemplate, +%<thesis> array, + mathtools, + geometry, + fancyhdr, + tocloft, + caption, + bicaption, + subcaption, + xcolor, + graphicx, + enumitem + } +% \end{macrocode} +% +% \subsection{内部定义} +% +% \subsubsection{内部函数} +% +% \begin{macro}[int]{\cs_gset:cpo,\tl_const:Nv, +% \clist_use:NV,\clist_use:cv, +% \exp_args:NNnv,\exp_last_unbraced:ce, +% \regex_match:neTF} +% \LaTeX3{} 函数变体。 +% \begin{macrocode} +\cs_generate_variant:Nn \cs_gset:Npn { cpo } +\cs_generate_variant:Nn \tl_const:Nn { Nv } +\cs_generate_variant:Nn \clist_use:Nn { NV, cv } +\exp_args_generate:n { Nnv } +\cs_generate_variant:Nn \exp_last_unbraced:Ne { ce } +\prg_generate_conditional_variant:Nnn \regex_match:nn { ne } { T, TF } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_engine_case:nn} +% 2 个参数依次为 \pdfTeX 和 \XeTeX/\LuaTeX。 +% \begin{macrocode} +\cs_new:Npx \@@_engine_case:nn #1#2 + { + \bool_lazy_or:nnTF + { \sys_if_engine_xetex_p: } + { \sys_if_engine_luatex_p: } + {#2} + { \sys_if_engine_pdftex:T {#1} } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_engine_case:nnn} +% 3 个参数依次为 \pdfTeX、 \XeTeX 和 \LuaTeX。 +% \begin{macrocode} +\cs_new:Npx \@@_engine_case:nnn #1#2#3 + { + \sys_if_engine_xetex:TF + {#2} + { + \sys_if_engine_luatex:TF + {#3} + { \sys_if_engine_pdftex:T {#1} } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_unicode_engine_case:nn} +% 2 个参数依次为 \XeTeX 和 \LuaTeX。 +% \begin{macrocode} +\cs_new:Npx \@@_unicode_engine_case:nn #1#2 + { + \sys_if_engine_xetex:TF + {#1} + { \sys_if_engine_luatex:T {#2} } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_unicode_char:n} +% \begin{macrocode} +\@@_engine_case:nn + { + \cs_new:Npn \@@_unicode_char:n #1 + { + \exp_not:N \Unicode + { \int_div_truncate:nn {#1} { 256 } } + { \int_mod:nn {#1} { 256 } } + } + } + { \cs_new:Npn \@@_unicode_char:n #1 { \tex_Uchar:D #1 \scan_stop: } } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_preto_cmd:Nn,\@@_appto_cmd:Nn} +% 补丁工具,来自 \pkg{ctexpatch} 宏包,在宏的原本定义前后增加钩子。 +% \begin{macrocode} +%<*!thesis> +\cs_new_protected:Npn \@@_preto_cmd:Nn #1#2 + { + \ctex_preto_cmd:NnnTF #1 { } {#2} + { } { \ctex_patch_failure:N #1 } + } +\cs_new_protected:Npn \@@_appto_cmd:Nn #1#2 + { + \ctex_appto_cmd:NnnTF #1 { } {#2} + { } { \ctex_patch_failure:N #1 } + } +%</!thesis> +% \end{macrocode} +% \end{macro} +% +% \changes{v2.0.2}{2023/03/31}{区分 \texttt{dim} 与 \texttt{skip} 类型变量。} +% \begin{macro}[int]{\@@_dim_set_to_wd:Nn,\@@_skip_add_to_wd:Nn} +% 操作长度变量的辅助函数。 +% \begin{macrocode} +%<*thesis> +\cs_new:Npn \@@_dim_set_to_wd:Nn #1#2 + { + \hbox_set:Nn \l_@@_tmp_box {#2} + \dim_set:Nn #1 { \box_wd:N \l_@@_tmp_box } + } +%</thesis> +\cs_new:Npn \@@_skip_add_to_wd:Nn #1#2 + { + \hbox_set:Nn \l_@@_tmp_box {#2} + \skip_add:Nn #1 { \box_wd:N \l_@@_tmp_box } + } +%<thesis>\cs_generate_variant:Nn \@@_dim_set_to_wd:Nn { Nv } +\cs_generate_variant:Nn \@@_skip_add_to_wd:Nn { cv } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_cs_provide_eq:NN} +% \begin{macrocode} +\cs_new:Npn \@@_cs_provide_eq:NN #1#2 + { \cs_if_exist:NF #1 { \cs_set_eq:NN #1 #2 } } +\cs_generate_variant:Nn \@@_cs_provide_eq:NN { cc } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_vspace:N,\@@_vspace:n, +% \@@_vspace_r:N,\@@_vspace_r:n} +% 类似 \LaTeXe{} 中的 \tn{vspace} 和 \tn{vspace*}。 +% \begin{macrocode} +%<*thesis> +\cs_new_protected:Npn \@@_vspace:N #1 + { + \skip_vertical:N #1 + \skip_vertical:N \c_zero_skip + } +\cs_new_protected:Npn \@@_vspace:n #1 + { + \skip_set:Nn \l_@@_tmp_skip {#1} + \@@_vspace:N \l_@@_tmp_skip + } +\cs_new_protected:Npn \@@_vspace_r:N #1 + { + \dim_set_eq:NN \l_@@_tmp_dim \prevdepth + \hrule height \c_zero_dim + \nobreak + \skip_vertical:N #1 + \skip_vertical:N \c_zero_skip + \dim_set_eq:NN \prevdepth \l_@@_tmp_dim + } +\cs_new_protected:Npn \@@_vspace_r:n #1 + { + \skip_set:Nn \l_@@_tmp_skip {#1} + \@@_vspace_r:N \l_@@_tmp_skip + } +%</thesis> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_define_name:nn,\@@_define_name:nv,\@@_define_name:nnn, +% \@@_define_name_from_clist:nnnn} +% 定义默认名称的辅助函数。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_define_name:nn #1#2 + { \tl_const:cn { c_@@_name_ #1 _tl } {#2} } +\cs_new_protected:Npn \@@_define_name:nnn #1#2#3 + { \tl_const:cn { c_@@_name_ #2 _ #1 _tl } {#3} } +%<*thesis> +\cs_new_protected:Npn \@@_define_name_from_clist:nnnn #1#2#3#4 + { \tl_const:cx { c_@@_name_ #2 _ #1 _tl } { \clist_item:nn {#4} {#3} } } +\cs_generate_variant:Nn \@@_define_name:nn { nv } +%</thesis> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_define_symbol:nn} +% 定义符号的辅助函数。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_define_symbol:nn #1#2 + { \tl_const:cx { c_@@_symbol_ #1 _tl } { \@@_unicode_char:n {#2} } } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_if_lang_valid:nTF} +% 验证语言选项的函数。 +% \begin{macrocode} +%<*thesis> +\cs_new_protected:Npn \@@_if_lang_valid:nTF #1 + { \clist_if_in:NnTF \g_@@_lang_clist {#1} } +\msg_new:nnn { sjtutex } { lang-validation } + { Invalid~ language~ argument~ `#1'! } +% \end{macrocode} +% \end{macro} +% +% \subsubsection{页面模板} +% +% 使用 \pkg{xtemplate} 构建页面模板,用于绘制标题页与版权页。 +% +% 页面部件模板。 +% \begin{macrocode} +\DeclareObjectType { sjtu } { 0 } +\DeclareTemplateInterface { sjtu } { component } { 0 } + { + format : tokenlist = \c_empty_tl , + content : tokenlist = \c_empty_tl , + bottom-skip : skip = \c_zero_skip , + align : choice { left, right, center, normal } = center + } +\DeclareTemplateCode { sjtu } { component } { 0 } + { + format = \l_@@_component_format_tl , + content = \l_@@_component_content_tl , + bottom-skip = \l_@@_component_bottom_skip , + align = + { + left = + \cs_set_eq:NN \l_@@_component_align: \raggedright , + right = + \cs_set_eq:NN \l_@@_component_align: \raggedleft , + center = + \cs_set_eq:NN \l_@@_component_align: \centering , + normal = + \cs_set_eq:NN \l_@@_component_align: \prg_do_nothing: + } + } + { + \AssignTemplateKeys + \group_begin: + \l_@@_component_align: + \l_@@_component_format_tl + \l_@@_component_content_tl + \par + \group_end: + \@@_vspace:N \l_@@_component_bottom_skip + } +% \end{macrocode} +% +% 页面模板。 +% \begin{macrocode} +\DeclareTemplateInterface { sjtu } { page } { 0 } + { + bookmark : boolean = false , + bookmark-text : tokenlist = \c_empty_tl , + style : tokenlist = empty , + format : tokenlist = \c_empty_tl , + prefix : tokenlist , + components : commalist , + top-skip : skip = \c_zero_skip , + bottom-skip : skip = \c_zero_skip + } +\DeclareTemplateCode { sjtu } { page } { 0 } + { + bookmark = \l_@@_page_bookmark_bool , + bookmark-text = \l_@@_page_bookmark_text_tl , + style = \l_@@_page_style_tl , + format = \l_@@_page_format_tl , + prefix = \l_@@_page_prefix_tl , + components = \l_@@_page_components_clist , + top-skip = \l_@@_page_top_skip , + bottom-skip = \l_@@_page_bottom_skip + } + { + \AssignTemplateKeys + \bool_if:NTF \g_@@_openright_bool + { \cleardoublepage } { \clearpage } + \bool_if:NT \l_@@_page_bookmark_bool + { \@@_pdf_bookmark:nn { 0 } { \l_@@_page_bookmark_text_tl } } + \exp_args:No \thispagestyle { \l_@@_page_style_tl } +% \end{macrocode} +% 移除页面顶部 \tn{vspace*} 的多余空白。 +% 见 \url{https://tex.stackexchange.com/questions/247513}。 +% \begin{macrocode} + \@@_vspace_r:N \l_@@_page_top_skip + \@@_vspace:n { - \tex_parskip:D } + \@@_vspace:n { - \tex_baselineskip:D } + \group_begin: + \l_@@_page_format_tl + \clist_map_inline:Nn \l_@@_page_components_clist + { \UseInstance { sjtu } { \l_@@_page_prefix_tl / ##1 } } + \group_end: + \@@_vspace:N \l_@@_page_bottom_skip + \clearpage + } +% \end{macrocode} +% +% 辅助函数。 +% \begin{macrocode} +\cs_new:Npn \@@_declare_component:nnn #1#2#3 + { \DeclareInstance { sjtu } {#1/#2} { component } {#3} } +\cs_new:Npn \@@_declare_page:nn #1#2 + { \DeclareInstance { sjtu } {#1} { page } {#2} } +%</thesis> +% \end{macrocode} +% +% \subsection{字号行距} +% +% \begin{macro}[int]{\@@_set_font_size:nnNn} +% \begin{macro}{\normalsize} +% 重定义 \tn{normalsize},设置正文的基线间距。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_set_font_size:nnNn #1#2#3#4 + { \cs_set_protected:Npn #3 { \@setfontsize #3 {#1} {#2} #4 } } +\tl_set:Nx \l_@@_font_size_tl + { + { \dim_to_decimal:n { \g_@@_font_size_dim } } + { \dim_to_decimal:n { \g_@@_baseline_skip_dim } } + } +\bool_if:NT \g_@@_fixed_baselineskip_bool + { + \int_case:nn { \g_@@_font_size_int } + { + { 1 } { + \exp_after:wN \@@_set_font_size:nnNn \l_@@_font_size_tl + \normalsize + { + \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI + } + } + { 2 } { + \exp_after:wN \@@_set_font_size:nnNn \l_@@_font_size_tl + \normalsize + { + \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI + } + } + } + \normalsize + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\setbaselineskip} +% 设置基线间距,在字号命令之后使用。 +% \begin{macrocode} +\NewDocumentCommand \setbaselineskip { m } + { \fontsize { \f@size } {#1} \selectfont } +% \end{macrocode} +% \end{macro} +% +% \subsection{字体配置} +% +% \begin{macro}[int]{\@@_fontset_error:nn} +% 字库不可用时给出紧急错误信息,停止读取定义文件。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_fontset_error:nn #1#2 + { \msg_error:nnnn { sjtutex } { font-unavailable } {#1} {#2} } +\msg_new:nnn { sjtutex } { font-unavailable } + { `#1-font~ =~ #2'~ is~ unavailable~ in~ current~ mode. } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_fontset_case:nn} +% 2 个参数依次为 \pdfTeX 和 \XeTeX/\LuaTeX。 +% \begin{macrocode} +\cs_new_eq:NN \@@_fontset_case:nn \@@_engine_case:nn +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_fontset_case:nnn} +% 3 个参数依次为 \pdfTeX(生成 PDF)、\pdfTeX(生成 DVI) 和 +% \XeTeX/\LuaTeX。 +% \begin{macrocode} +\cs_new:Npx \@@_fontset_case:nnn #1#2#3 + { + \@@_engine_case:nn + { \sys_if_output_pdf:TF {#1} {#2} } + {#3} + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_declare_math_symbol:nnNn} +% \begin{macrocode} +\cs_new_protected:Nn \@@_declare_math_symbol:nnNn + { + \cs_undefine:N #3 + \DeclareMathSymbol {#3} {#1} {#2} {#4} + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_set_slanted_greek:} +% \begin{macrocode} +\cs_new_protected:Nn \@@_set_slanted_greek: + { + \clist_const:Nn \c_@@_uppercase_greek_clist + { Gamma, Delta, Theta, Lambda, Xi, Pi, Sigma, Upsilon, Phi, Psi, Omega } + \clist_map_inline:Nn \c_@@_uppercase_greek_clist + { + \cs_set_eq:cc { up ##1 } { ##1 } + \cs_set_eq:cc { it ##1 } { var ##1 } + } + \bool_if:NT \g_@@_slanted_uppercase_greek_bool + { + \clist_map_inline:Nn \c_@@_uppercase_greek_clist + { \cs_set_eq:cc { ##1 } { it ##1 } } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_set_unimath_symbol:} +% \begin{macrocode} +\cs_new_protected:Nn \@@_set_unimath_symbol: + { + \clist_map_inline:nn + { + { increment } { upDelta } , + { QED } { blacksquare } + } + { \@@_cs_provide_eq:cc ##1 } + } +% \end{macrocode} +% \end{macro} +% +% 如果没有指定数学字体,则根据西文字体设置匹配的数字字体。 +% \begin{macrocode} +\tl_if_empty:NT \g_@@_math_font_tl + { \tl_gset_eq:NN \g_@@_math_font_tl \g_@@_text_font_tl } +% \end{macrocode} +% +% 根据操作系统判断默认 CJK 字体配置。 +% \begin{macrocode} +\tl_if_empty:NT \g_@@_cjk_font_tl + { + \sys_if_platform_windows:TF + { \tl_gset:Nn \g_@@_cjk_font_tl { windows } } + { + \ctex_if_platform_macos:TF + { \tl_gset:Nn \g_@@_cjk_font_tl { mac } } + { \tl_gset:Nn \g_@@_cjk_font_tl { fandol } } + } + } +% \end{macrocode} +% +% \begin{macro}[int]{\@@_load_font:nn,\@@_load_fontset:} +% 如果字体配置文件不存在,则载入默认值,并给出警告。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_load_font:nn #1#2 + { + \str_if_eq:eeF { \tl_use:c { g_@@_ #1 _font_tl } } { none } + { + \file_if_exist:nF + { sjtu- #1 -font- \tl_use:c { g_@@_ #1 _font_tl } .def } + { + \msg_warning:nnnn { sjtutex } { invalid-font } {#1} {#2} + \tl_gset:cn { g_@@_ #1 _font_tl } {#2} + } + \ctex_file_input:n + { sjtu- #1 -font- \tl_use:c { g_@@_ #1 _font_tl } .def } + } + } +\msg_new:nnn { sjtutex } { invalid-font } + { + Invalid~ value~ `#1-font~ =~ \tl_use:c { g_@@_ #1 _font_tl }~ '! \\\\ + Using~ `#2'~ instead. + } +\cs_new_protected:Nn \@@_load_fontset: + { + \clist_map_inline:nn + { + { math } { newtx }, + { text } { newtx }, + { cjk } { fandol } + } + { \@@_load_font:nn ##1 } + } +\@onlypreamble \@@_load_font:nn +\@onlypreamble \@@_load_fontset: +%</class> +% \end{macrocode} +% \end{macro} +% +% \subsubsection{西文与数学字体} +% +% \changes{v2.0.3}{2023/09/25}{新增 \opt{libertinus} 字体配置。} +% \begin{macrocode} +%<*font&(math|text)> +%<*stixtwo> +\@@_fontset_case:nn + { +%<*math> + \DeclareSizeFunction { sub } { \sub@sfcnt \@font@info } + \PassOptionsToPackage { notext } { stix2 } + \RequirePackage { stix2 } + \clist_map_inline:nn + { + \upalpha { "0B } , + \upbeta { "0C } , + \upgamma { "0D } , + \updelta { "0E } , + \upepsilon { "0F } , + \upzeta { "10 } , + \upeta { "11 } , + \uptheta { "12 } , + \upiota { "13 } , + \upkappa { "14 } , + \uplambda { "15 } , + \upmu { "16 } , + \upnu { "17 } , + \upxi { "18 } , + \uppi { "19 } , + \uprho { "1A } , + \upsigma { "1B } , + \uptau { "1C } , + \upupsilon { "1D } , + \upphi { "1E } , + \upchi { "1F } , + \uppsi { "20 } , + \upomega { "21 } , + \upvarepsilon { "22 } , + \upvartheta { "23 } , + \upvarpi { "24 } , + \upvarrho { "25 } , + \upvarsigma { "26 } , + \upvarphi { "27 } + } + { \@@_declare_math_symbol:nnNn { \stix@lcgc } { operators } #1 } + \@@_set_slanted_greek: +%</math> +%<*text> + \tl_set:Nn \encodingdefault { T1 } + \DeclareEncodingSubset { TS1 } { ? } { 0 } + \UndeclareTextCommand { \textpertenthousand } { T1 } + \DeclareTextSymbolDefault { \textpertenthousand } { TS1 } + \tl_set:Nn \rmdefault { stix2 } + \tl_set:Nn \qhv@scale { 0.94 } + \tl_set:Nn \sfdefault { qhv } + \tl_set:Nn \ttdefault { qcr } +%</text> + } + { +%<*math> + \RequirePackage { unicode-math } + \bool_if:NTF \g_@@_upright_integral_bool + { + \setmathfont { STIXTwoMath-Regular.otf } + [ StylisticSet = 8 ] + } + { \setmathfont { STIXTwoMath-Regular.otf } } + \setmathfont { STIXTwoMath-Regular.otf } + [ + range = { scr, bfscr }, + StylisticSet = 1 + ] +%</math> +%<math> \setmathrm +%<text> \setmainfont + { STIXTwoText } + [ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = *-Italic, + BoldItalicFont = *-BoldItalic + ] +%</stixtwo> +%<*xits> +\@@_fontset_case:nn +%<math> { \@@_fontset_error:nn { math } { xits } } +%<text> { \@@_fontset_error:nn { text } { xits } } + { +%<*math> + \RequirePackage { unicode-math } + \bool_if:NTF \g_@@_upright_integral_bool + { + \setmathfont { XITSMath-Regular } + [ + Extension = .otf, + BoldFont = XITSMath-Bold, + StylisticSet = 8 + ] + } + { + \setmathfont { XITSMath-Regular } + [ + Extension = .otf, + BoldFont = XITSMath-Bold, + ] + } + \setmathfont { XITSMath-Regular.otf } + [ + range = { cal, bfcal }, + StylisticSet = 1 + ] +%</math> +%<math> \setmathrm +%<text> \setmainfont + { XITS } + [ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = *-Italic, + BoldItalicFont = *-BoldItalic + ] +%</xits> +%<*newtx|newpx> +%<*math> +\tl_set_eq:NN \l_@@_save_encodingdefault_tl \encodingdefault +\tl_set_eq:NN \l_@@_save_rmdefault_tl \rmdefault +\tl_set_eq:NN \l_@@_save_sfdefault_tl \sfdefault +\tl_set_eq:NN \l_@@_save_ttdefault_tl \ttdefault +\tl_set:Nn \encodingdefault { OT1 } +%<newtx>\tl_set:Nn \rmdefault { ntxtlf } +%<newpx>\tl_set:Nn \rmdefault { zplTLF } +\tl_set:Nn \qhv@scale { 0.94 } +\tl_set:Nn \sfdefault { qhv } +\tl_set:Nn \ttdefault { qcr } +%<newtx>\RequirePackage { newtxmath } +%<newpx>\RequirePackage { newpxmath } +\tl_set_eq:NN \encodingdefault \l_@@_save_encodingdefault_tl +\tl_set_eq:NN \rmdefault \l_@@_save_rmdefault_tl +\tl_set_eq:NN \sfdefault \l_@@_save_sfdefault_tl +\tl_set_eq:NN \ttdefault \l_@@_save_ttdefault_tl +\@@_set_unimath_symbol: +%</math> +%<*text> +\@@_fontset_case:nn + { + \tl_set:Nn \encodingdefault { T1 } +%<newtx> \RequirePackage { newtxtext } +%<newpx> \RequirePackage { newpxtext } + \tl_set:Nn \ttdefault { qcr } + } + { + \setmainfont +%<newtx> { TeXGyreTermesX } +%<newpx> { TeXGyrePagellaX } + [ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = *-Italic, + BoldItalicFont = *-BoldItalic + ] +%</text> +%</newtx|newpx> +%<*text&(newtx|newpx)|stixtwo|xits> +%<math> \setmathsf +%<text> \setsansfont + { texgyreheros } + [ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic, + Scale = 0.94, + ] +%<math> \setmathtt +%<text> \setmonofont + { texgyrecursor } + [ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic, + Ligatures = CommonOff + ] + } +%</text&(newtx|newpx)|stixtwo|xits> +%<*lm> +%<*text> +\@@_fontset_case:nn + { + \tl_set:Nn \encodingdefault { T1 } + \tl_set:Nn \rmdefault { lmr } + \tl_set:Nn \sfdefault { lmss } + \tl_set:Nn \ttdefault { lmtt } + } { } +%</text> +%<*math> +\RequirePackage { amssymb, upgreek } +\SetSymbolFont { operators } { normal } { OT1 } { lmr } { m } { n } +\SetSymbolFont { letters } { normal } { OML } { lmm } { m } { it } +\SetSymbolFont { symbols } { normal } { OMS } { lmsy } { m } { n } +\SetSymbolFont { largesymbols } { normal } { OMX } { lmex } { m } { n } +\SetSymbolFont { operators } { bold } { OT1 } { lmr } { bx } { n } +\SetSymbolFont { letters } { bold } { OML } { lmm } { b } { it } +\SetSymbolFont { symbols } { bold } { OMS } { lmsy } { b } { n } +\SetSymbolFont { largesymbols } { bold } { OMX } { lmex } { m } { n } +\SetMathAlphabet { \mathbf } { normal } { OT1 } { lmr } { bx } { n } +\SetMathAlphabet { \mathsf } { normal } { OT1 } { lmss } { m } { n } +\SetMathAlphabet { \mathit } { normal } { OT1 } { lmr } { m } { it } +\SetMathAlphabet { \mathtt } { normal } { OT1 } { lmtt } { m } { n } +\SetMathAlphabet { \mathbf } { bold } { OT1 } { lmr } { bx } { n } +\SetMathAlphabet { \mathsf } { bold } { OT1 } { lmss } { bx } { n } +\SetMathAlphabet { \mathit } { bold } { OT1 } { lmr } { bx } { it } +\SetMathAlphabet { \mathtt } { bold } { OT1 } { lmtt } { m } { n } +\bool_if:NT \g_@@_upright_integral_bool + { \RequirePackage { cmupint } } +\@@_set_slanted_greek: +\@@_set_unimath_symbol: +%</math> +%</lm> +%<*libertinus> +\@@_fontset_case:nn + { +%<*text> + \tl_set:Nn \encodingdefault { T1 } + \tl_set:Nn \rmdefault { LibertinusSerif-TLF } + \tl_set:Nn \sfdefault { LibertinusSans-TLF } + \tl_set:Nn \ttdefault { lmtt } +%</text> +%<*math> + \exp_args:No \PassOptionsToPackage + { \g_@@_math_font_options_clist } { libertinust1math } + \RequirePackage { libertinust1math } +%</math> + } + { +%<*math> + \RequirePackage { unicode-math } + \bool_if:NTF \g_@@_upright_integral_bool + { \setmathfont { LibertinusMath-Regular.otf } } + { + \setmathfont { LibertinusMath-Regular.otf } + [ StylisticSet = 8 ] + } + \setmathfont { latinmodern-math.otf } [ range = \checkmark ] +%</math> +%<math> \setmathrm +%<text> \setmainfont + { LibertinusSerif } + [ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = *-Italic, + BoldItalicFont = *-BoldItalic, + SlantedFont = *-Regular, + BoldSlantedFont = *-Bold, + SlantedFeatures = { FakeSlant = 0.2 }, + BoldSlantedFeatures = { FakeSlant = 0.2 } + ] +%<math> \setmathsf +%<text> \setsansfont + { LibertinusSans } + [ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = *-Italic, + BoldItalicFont = *-Italic, + BoldItalicFeatures = { FakeBold = 3 }, + SlantedFont = *-Regular, + BoldSlantedFont = *-Bold, + SlantedFeatures = { FakeSlant = 0.2 }, + BoldSlantedFeatures = { FakeSlant = 0.2 } + ] + } +%</libertinus> +%<*times> +%<*math> +\PassOptionsToPackage { Symbol } { upgreek } +\RequirePackage { amssymb, upgreek } +\tl_set_eq:NN \l_@@_save_rmdefault_tl \rmdefault + \RequirePackage { mathptmx } +\tl_set_eq:NN \rmdefault \l_@@_save_rmdefault_tl +\tl_set:Nn \Hv@scale { 0.94 } +\DeclareMathAlphabet { \mathsf } { OT1 } { phv } { m } { n } +\DeclareMathAlphabet { \mathtt } { OT1 } { pcr } { m } { n } +\SetMathAlphabet { \mathsf } { bold } { OT1 } { phv } { b } { n } +\SetMathAlphabet { \mathtt } { bold } { OT1 } { pcr } { b } { n } +\DeclareSymbolFont { SJTU@ptm } { OML } { ptmcm } { m } { it } +\@@_declare_math_symbol:nnNn { \mathord } { SJTU@ptm } \upvarsigma { "26 } +\bool_if:NT \g_@@_upright_integral_bool + { \RequirePackage { cmupint } } +\@@_set_unimath_symbol: +%</math> +%<*text> +\@@_fontset_case:nn + { + \tl_set:Nn \encodingdefault { T1 } + \tl_set:Nn \rmdefault { ptm } + \tl_set:Nn \Hv@scale { 0.94 } + \tl_set:Nn \sfdefault { phv } + \tl_set:Nn \ttdefault { pcr } + } + { + \setmainfont { Times~New~Roman } [ Ligatures = Rare ] + \setsansfont { Arial } [ Scale = 0.94 ] + \setmonofont { Courier~New } + } +%</text> +%</times> +%<*newcm> +\@@_fontset_case:nn +%<math> { \@@_fontset_error:nn { math } { newcm } } +%<text> { \@@_fontset_error:nn { text } { newcm } } + { +%<*math> + \RequirePackage { unicode-math } + \bool_if:NTF \g_@@_upright_integral_bool + { + \setmathfont { NewCMMath-Book.otf } + [ StylisticSet = 2 ] + } + { \setmathfont { NewCMMath-Book.otf } } + \setmathfont { NewCMMath-Book.otf } + [ + range = { scr, bfscr }, + StylisticSet = 1 + ] +%</math> +%<math> \setmathrm +%<text> \setmainfont + { NewCM10 } + [ + Extension = .otf, + SizeFeatures = + { + { + Size = -9, + Font = NewCM08-Book, + ItalicFont = NewCM08-BookItalic, + SlantedFont = NewCM08-Book, + }, + { Size = 9- } + }, + UprightFont = *-Book, + BoldFont = *-Bold, + ItalicFont = *-BookItalic, + BoldItalicFont = *-BoldItalic, + SlantedFont = *-Book, + BoldSlantedFont = *-Bold, + SlantedFeatures = { FakeSlant = 0.25 }, + BoldSlantedFeatures = { FakeSlant = 0.25 } + ] +%<math> \setmathsf +%<text> \setsansfont + { NewCMSans10 } + [ + Extension = .otf, + SizeFeatures = + { + { + Size = -9, + Font = NewCMSans08-Book, + ItalicFont = NewCMSans08-BookOblique, + }, + { Size = 9- } + }, + UprightFont = *-Book, + BoldFont = *-Bold, + ItalicFont = *-BookOblique, + BoldItalicFont = *-BoldOblique + ] +%<math> \setmathtt +%<text> \setmonofont + { NewCMMono10 } + [ + Extension = .otf, + UprightFont = *-Book, + BoldFont = *-Bold, + ItalicFont = *-BookItalic, + BoldItalicFont = *-BoldOblique, + SlantedFont = *-Book, + SlantedFeatures = { FakeSlant = 0.25 }, + BoldSlantedFont = *-Bold, + BoldSlantedFeatures = { FakeSlant = 0.25 } + ] + } +%</newcm> +%<*cambria> +\@@_fontset_case:nn +%<math> { \@@_fontset_error:nn { math } { cambria } } +%<text> { \@@_fontset_error:nn { text } { cambria } } + { +%<*math> + \RequirePackage { unicode-math } + \setmathfont { Cambria~Math } + \setmathrm { Cambria } + \setmathsf { Calibri } + \setmathtt { Consolas } [ Scale = 0.95 ] +%</math> +%<*text> + \setmainfont { Cambria } + \setsansfont { Calibri } + \setmonofont { Consolas } [ Scale = 0.95 ] +%</text> + } +%</cambria> +%</font&(math|text)> +% \end{macrocode} +% +% \pkg{unicode-math} 宏包设置。 +% \begin{macrocode} +%<*class> +\ctex_at_end_package:nn { unicode-math } + { + \DeclareDocumentCommand \bm { m } + { { \symbf {#1} } } + \DeclareDocumentCommand \boldsymbol { m } + { { \symbf {#1} } } + \bool_if:NTF \g_@@_slanted_uppercase_greek_bool + { \keys_set:nn { unicode-math } { math-style = ISO } } + { \keys_set:nn { unicode-math } { math-style = TeX } } + \bool_if:NTF \g_@@_integral_limits_bool + { \removenolimits } { \addnolimits } + { + \int\iint\iiint\iiiint\oint\oiint\oiiint + \intclockwise\varointclockwise\ointctrclockwise\sumint + \intbar\intBar\fint\cirfnint\awint\rppolint + \scpolint\npolint\pointint\sqint\intlarhk\intx + \intcap\intcup\upint\lowint + } + } +% \end{macrocode} +% +% 若未使用 \pkg{unicode-math} 配置数学字体,则自动调用 \pkg{bm}。 +% \begin{macrocode} +\ctex_at_end_preamble:n + { + \@ifpackageloaded { unicode-math } + { } { \RequirePackage { bm } } + } +%</class> +% \end{macrocode} +% +% \subsubsection{CJK 字体} +% +% 在字体未提供对应粗体的情况下,允许使用伪粗。 +% \begin{macrocode} +%<*font&cjk> +%<*windows> +%<*und> +\tl_if_eq:NNTF \g_@@_lang_tl \c_@@_lang_ja_tl + { \ctex_file_input:n { sjtu-cjk-font-windows-ja.def } } + { \ctex_file_input:n { sjtu-cjk-font-windows-zh.def } } +%</und> +%<*zh|ja> +\@@_fontset_case:nn +%<*zh> + { + \ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhfs } { windows } + \ctex_punct_set:n { windows } + \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } + \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } + \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } + } +%</zh> +%<ja> { \@@_fontset_error:nn { cjk } { windows } } + { +%<*zh> + \setCJKmainfont { SimSun } + [ AutoFakeBold = 3 , ItalicFont = KaiTi ] + \setCJKsansfont { SimHei } [ AutoFakeBold = 3 ] + \setCJKmonofont { FangSong } +%</zh> +%<*ja> + \setCJKmainfont { MS~Mincho } [ AutoFakeBold = 3 ] + \setCJKsansfont { MS~Gothic } [ AutoFakeBold = 3 ] + \setCJKmonofont { MS~Mincho } + \setCJKfamilyfont { jamin } { MS~Mincho } [ AutoFakeBold = 3 ] + \setCJKfamilyfont { jagoth } { MS~Gothic } [ AutoFakeBold = 3 ] +%</ja> + \setCJKfamilyfont { zhsong } { SimSun } + [ AutoFakeBold = 3 , ItalicFont = KaiTi ] + \setCJKfamilyfont { zhhei } { SimHei } [ AutoFakeBold = 3 ] + \setCJKfamilyfont { zhkai } { KaiTi } + \setCJKfamilyfont { zhfs } { FangSong } + } +%</zh|ja> +%</windows> +%<*mac> +%<*und> +\tl_if_eq:NNTF \g_@@_lang_tl \c_@@_lang_ja_tl + { \ctex_file_input:n { sjtu-cjk-font-mac-ja.def } } + { \ctex_file_input:n { sjtu-cjk-font-mac-zh.def } } +%</und> +%<*zh|ja> +%<zh>\@@_fontset_case:nnn +%<ja>\@@_fontset_case:nn + { \@@_fontset_error:nn { cjk } { mac } } +%<*zh> + { + \ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhfs } { mac } + \ctex_punct_set:n { mac } + \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } + \ctex_punct_map_family:nn { \CJKsfdefault } { zhpf } + \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhpf } + \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } + } +%</zh> + { +%<*zh> + \setCJKmainfont { Songti~SC } + [ + UprightFont = *~Light , + BoldFont = *~Bold , + ItalicFont = Kaiti~SC~Regular , + BoldItalicFont = Kaiti~SC~Bold + ] + \setCJKsansfont { Heiti~SC } + [ + UprightFont = *~Medium , + AutoFakeBold = 3 + ] + \setCJKmonofont { STFangsong } +%</zh> +%<*ja> + \setCJKmainfont { HiraMinProN } + [ + UprightFont = *-W3 , + BoldFont = *-W6 + ] + \setCJKsansfont { HiraKakuProN } + [ + UprightFont = *-W3 , + BoldFont = *-W6 + ] + \setCJKmonofont { HiraMinProN-W3 } + \setCJKfamilyfont { jamin } { HiraMinProN } + [ + UprightFont = *-W3 , + BoldFont = *-W6 + ] + \setCJKfamilyfont { jagoth } { HiraKakuProN } + [ + UprightFont = *-W3 , + BoldFont = *-W6 + ] +%</ja> + \setCJKfamilyfont { zhsong } { Songti~SC } + [ + UprightFont = *~Light , + BoldFont = *~Bold , + ItalicFont = Kaiti~SC~Regular , + BoldItalicFont = Kaiti~SC~Bold + ] + \setCJKfamilyfont { zhhei } { Heiti~SC } + [ + UprightFont = *~Medium , + AutoFakeBold = 3 + ] + \setCJKfamilyfont { zhfs } { STFangsong } + \setCJKfamilyfont { zhkai } { Kaiti~SC } + [ + UprightFont = *~Regular , + BoldFont = *~Bold + ] + } +%</zh|ja> +%</mac> +%<*ubuntu> +%<*und> +\tl_if_eq:NNTF \g_@@_lang_tl \c_@@_lang_ja_tl + { \ctex_file_input:n { sjtu-cjk-font-ubuntu-ja.def } } + { \ctex_file_input:n { sjtu-cjk-font-ubuntu-zh.def } } +%</und> +%<*zh|ja> +%<zh>\@@_fontset_case:nnn +%<ja>\@@_fontset_case:nn + { \@@_fontset_error:nn { cjk } { ubuntu } } +%<*zh> + { + \ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhsong } { ubuntu } + \ctex_punct_set:n { ubuntu } + \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } + \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } + \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } + } +%</zh> + { +%<*zh> + \setCJKmainfont { Noto~Serif~CJK~SC } + [ + UprightFont = *~Light , + BoldFont = *~Bold , + ItalicFont = AR~PL~KaitiM~GB + ] + \setCJKsansfont { Noto~Sans~CJK~SC } + [ + UprightFont = *~Medium , + BoldFont = *~Bold + ] + \setCJKmonofont { Noto~Serif~CJK~SC } + [ + UprightFont = *~Light , + BoldFont = *~Bold + ] +%</zh> +%<*ja> + \setCJKmainfont { Noto~Serif~CJK~JP } + [ + UprightFont = *~Light , + BoldFont = *~Bold + ] + \setCJKsansfont { Noto~Sans~CJK~JP } + [ + UprightFont = *~Medium , + BoldFont = *~Bold + ] + \setCJKmonofont { Noto~Serif~CJK~JP } + [ + UprightFont = *~Light , + BoldFont = *~Bold + ] + \setCJKfamilyfont { jamin } { Noto~Serif~CJK~JP } + [ + UprightFont = *~Light , + BoldFont = *~Bold + ] + \setCJKfamilyfont { jagoth } { Noto~Sans~CJK~JP } + [ + UprightFont = *~Medium , + BoldFont = *~Bold + ] +%</ja> + \setCJKfamilyfont { zhsong } { Noto~Serif~CJK~SC } + [ + UprightFont = *~Light , + BoldFont = *~Bold , + ItalicFont = AR~PL~KaitiM~GB + ] + \setCJKfamilyfont { zhhei } { Noto~Sans~CJK~SC } + [ + UprightFont = *~Medium , + BoldFont = *~Bold + ] + \setCJKfamilyfont { zhfs } { Noto~Sans~Mono~CJK~JP } + \setCJKfamilyfont { zhkai } { AR~PL~KaitiM~GB } + } +%</zh|ja> +%</ubuntu> +%<*adobe> +%<*und> +\tl_if_eq:NNTF \g_@@_lang_tl \c_@@_lang_ja_tl + { \ctex_file_input:n { sjtu-cjk-font-adobe-ja.def } } + { \ctex_file_input:n { sjtu-cjk-font-adobe-zh.def } } +%</und> +%<*zh|ja> +%<zh>\@@_fontset_case:nnn +%<ja>\@@_fontset_case:nn + { \@@_fontset_error:nn { cjk } { adobe } } +%<*zh> + { + \ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhfs } { adobe } + \ctex_punct_set:n { adobe } + \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } + \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } + \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } + } +%</zh> + { +%<*zh> + \setCJKmainfont { AdobeSongStd-Light } + [ AutoFakeBold = 3 , ItalicFont = AdobeKaitiStd-Regular ] + \setCJKsansfont { AdobeHeitiStd-Regular } [ AutoFakeBold = 3 ] + \setCJKmonofont { AdobeFangsongStd-Regular } +%</zh> +%<*ja> + \setCJKmainfont { KozMinPr6N } + [ + UprightFont = *-Light , + BoldFont = *-Bold + ] + \setCJKsansfont { KozGoPr6N } + [ + UprightFont = *-Medium , + BoldFont = *-Bold + ] + \setCJKmonofont { KozMinPr6N-Light } + \setCJKfamilyfont { jamin } { KozMinPr6N } + [ + UprightFont = *-Light , + BoldFont = *-Bold + ] + \setCJKfamilyfont { jagoth } { KozGoPr6N } + [ + UprightFont = *-Medium , + BoldFont = *-Bold + ] +%</ja> + \setCJKfamilyfont { zhsong } { AdobeSongStd-Light } + [ AutoFakeBold = 3 , ItalicFont = AdobeKaitiStd-Regular ] + \setCJKfamilyfont { zhhei } { AdobeHeitiStd-Regular } [ AutoFakeBold = 3 ] + \setCJKfamilyfont { zhfs } { AdobeFangsongStd-Regular } + \setCJKfamilyfont { zhkai } { AdobeKaitiStd-Regular } + } +%</zh|ja> +%</adobe> +%<*fandol> +%<*und> +\tl_if_eq:NNTF \g_@@_lang_tl \c_@@_lang_ja_tl + { \ctex_file_input:n { sjtu-cjk-font-fandol-ja.def } } + { \ctex_file_input:n { sjtu-cjk-font-fandol-zh.def } } +%</und> +%<*zh|ja> +%<zh>\@@_fontset_case:nnn +%<ja>\@@_fontset_case:nn + { \@@_fontset_error:nn { cjk } { fandol } } +%<*zh> + { + \ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhfs } { fandol } + \ctex_punct_set:n { fandol } + \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } + \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } + \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } + } +%</zh> + { +%<*zh> + \setCJKmainfont { FandolSong } + [ + Extension = .otf , + UprightFont = *-Regular , + BoldFont = *-Bold , + ItalicFont = FandolKai-Regular + ] + \setCJKsansfont { FandolHei } + [ + Extension = .otf , + UprightFont = *-Regular , + BoldFont = *-Bold + ] + \setCJKmonofont { FandolFang } + [ + Extension = .otf , + UprightFont = *-Regular + ] +%</zh> +%<*ja> + \setCJKmainfont { HaranoAjiMincho } + [ + Extension = .otf , + UprightFont = *-Regular , + BoldFont = *-Bold + ] + \setCJKsansfont { HaranoAjiGothic } + [ + Extension = .otf , + UprightFont = *-Medium , + BoldFont = *-Bold + ] + \setCJKmonofont { HaranoAjiGothic } + [ + Extension = .otf , + UprightFont = *-Regular + ] + \setCJKfamilyfont { jamin } { HaranoAjiMincho } + [ + Extension = .otf , + UprightFont = *-Regular , + BoldFont = *-Bold + ] + \setCJKfamilyfont { jagoth } { HaranoAjiGothic } + [ + Extension = .otf , + UprightFont = *-Medium , + BoldFont = *-Bold + ] +%</ja> + \setCJKfamilyfont { zhsong } { FandolSong } + [ + Extension = .otf , + UprightFont = *-Regular , + BoldFont = *-Bold , + ItalicFont = FandolKai-Regular + ] + \setCJKfamilyfont { zhhei } { FandolHei } + [ + Extension = .otf , + UprightFont = *-Regular, + BoldFont = *-Bold + ] + \setCJKfamilyfont { zhfs } { FandolFang } + [ + Extension = .otf , + UprightFont = *-Regular + ] + \setCJKfamilyfont { zhkai } { FandolKai } + [ + Extension = .otf , + UprightFont = *-Regular + ] + } +%</zh|ja> +%</fandol> +%<*founder> +%<*und> +\tl_if_eq:NNTF \g_@@_lang_tl \c_@@_lang_ja_tl + { \ctex_file_input:n { sjtu-cjk-font-founder-ja.def } } + { \ctex_file_input:n { sjtu-cjk-font-founder-zh.def } } +%</und> +%<*zh|ja> +\@@_fontset_case:nn +%<*zh> + { + \ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhfs } { founder } + \ctex_punct_set:n { founder } + \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } + \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } + \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } + } +%</zh> +%<ja> { \@@_fontset_error:nn { cjk } { founder } } + { +%<*zh> + \setCJKmainfont { FZShuSong-Z01 } + [ AutoFakeBold = 3 , ItalicFont = FZKai-Z03 ] + \setCJKsansfont { FZHei-B01 } [ AutoFakeBold = 3 ] + \setCJKmonofont { FZFangSong-Z02 } +%</zh> +%<*ja> + \setCJKmainfont { ipam.ttf } [ AutoFakeBold = 3 ] + \setCJKsansfont { ipag.ttf } [ AutoFakeBold = 3 ] + \setCJKmonofont { ipag.ttf } + \setCJKfamilyfont { jamin } { ipam.ttf } [ AutoFakeBold = 3 ] + \setCJKfamilyfont { jagoth } { ipag.ttf } [ AutoFakeBold = 3 ] +%</ja> + \setCJKfamilyfont { zhsong } { FZShuSong-Z01 } + [ AutoFakeBold = 3 , ItalicFont = FZKai-Z03 ] + \setCJKfamilyfont { zhhei } { FZHei-B01 } [ AutoFakeBold = 3 ] + \setCJKfamilyfont { zhkai } { FZKai-Z03 } + \setCJKfamilyfont { zhfs } { FZFangSong-Z02 } + } +%</zh|ja> +%</founder> +%<*!und> +\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } +\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } +%<!ubuntu>\NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } +\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } +%<ja>\NewDocumentCommand \mincho { } { \CJKfamily { jamin } } +%<ja>\NewDocumentCommand \gothic { } { \CJKfamily { jagoth } } +%</!und> +%</font&cjk> +% \end{macrocode} +% +% \begin{macro}{\CJKrmfamily,\CJKsffamily,\CJKttfamily} +% 只改变 CJK 字体族的命令。 +% \begin{macrocode} +%<*class> +\NewDocumentCommand \CJKrmfamily { } { \CJKfamily { \CJKrmdefault } } +\NewDocumentCommand \CJKsffamily { } { \CJKfamily { \CJKsfdefault } } +\NewDocumentCommand \CJKttfamily { } { \CJKfamily { \CJKttdefault } } +% \end{macrocode} +% \end{macro} +% +% 带圈数字使用 CJK 字体。 +% \begin{macrocode} +\@@_unicode_engine_case:nn + { + \xeCJK_declare_char_class:nn { CJK } + { "24EA, "2460->"2473, "3251->"32BF, "25A1 } + } + { + \ltjdefcharrange { 99 } + { "24EA, "2460-"2473, "3251-"32BF, "25A1 } + \ltjsetparameter { jacharrange = { +99 } } + } +% \end{macrocode} +% +% \changes{v2.0.2}{2023/04/01}{延迟载入字体配置,修复 \pkg{unicode-math} +% 设置不生效的问题。} +% 载入字体配置。 +% \begin{macrocode} +\@@_load_fontset: +% \end{macrocode} +% +% \subsection{名称设置} +% +% 定义 |sjtu/name| 键值类。 +% +% 设置标准文档类中已定义的名称。 +% \begin{macrocode} +\keys_define:nn { sjtu / name } + { + contents .meta:nn = { ctex } { contentsname = {#1} } , + listfigure .meta:nn = { ctex } { listfigurename = {#1} } , + listtable .meta:nn = { ctex } { listtablename = {#1} } , + figure .meta:nn = { ctex } { figurename = {#1} } , + table .meta:nn = { ctex } { tablename = {#1} } , +%<!thesis> abstract .meta:nn = { ctex } { abstractname = {#1} } , + index .meta:nn = { ctex } { indexname = {#1} } , + appendix .meta:nn = { ctex } { appendixname = {#1} } , + proof .meta:nn = { ctex } { proofname = {#1} } , + bib .meta:nn = { ctex } { bibname = {#1} } , + part .tl_set:N = \partname , +%<!article> chapter .tl_set:N = \chaptername , +% \end{macrocode} +% +% \changes{v2.0}{2022/12/28}{简化 \opt{sjtu/name} 中键的名称:\opt{abbr}, +% \opt{nom}, \opt{ack}, \opt{achv}。} +% 标准文档类中未定义的名称。 +% \begin{macrocode} + figure* .tl_set:N = \SJTU@figurename@bi@second , + figure* .initial:n = { 图 } , + table* .tl_set:N = \SJTU@tablename@bi@second , + table* .initial:n = { 表 } , + algorithm .tl_set:N = \SJTU@algorithmname , + algorithm .initial:n = { Algorithm } , + listalgorithm .tl_set:N = \SJTU@listalgorithmname , + listalgorithm .initial:n = { List~of~Algorithms } , +%<*thesis> + abbr .tl_set:N = \SJTU@abbrname , + abbr .initial:n = { Abbreviations } , + nom .tl_set:N = \SJTU@nomname , + nom .initial:n = { Nomenclature } , + ack .tl_set:N = \SJTU@ackname , + ack .initial:n = { Acknowledgements } , + resume .tl_set:N = \SJTU@resumename , + resume .initial:n = { Resume } , + digest .tl_set:N = \SJTU@digestname , + digest .initial:n = { Digest } , + achv .tl_set:N = \SJTU@achvname , + achv .initial:n = { List~of~Research~Achievements }, +%</thesis> + } +%</class> +% \end{macrocode} +% +% \begin{macrocode} +%<*scheme> +%<*zh> +\keys_set_known:nn { sjtu / name } + { + contents = { 目 \protect \quad 录 } , + listfigure = { 插 \protect \quad 图 } , + listtable = { 表 \protect \quad 格 } , + figure = { 图 } , + table = { 表 } , + abstract = { 摘 \protect \quad 要 } , + index = { 索 \protect \quad 引 } , + appendix = { 附录 } , + proof = { 证明 } , + bib = { 参考文献 } , + figure* = { Figure } , + table* = { Table } , + algorithm = { 算法 } , + listalgorithm = { 算 \protect \quad 法 } , + abbr = { 缩略语对照表 } , + nom = { 符号对照表 } , + ack = { 致 \protect \quad 谢 } , + resume = { 个人简历 } , + digest = { 大摘要 } , + achv = { 学术论文和科研成果目录 } + } +%</zh> +% \end{macrocode} +% +% \begin{macrocode} +%<*de> +\keys_set_known:nn { sjtu / name } + { + contents = { Inhaltsverzeichnis } , + listfigure = { Abbildungsverzeichnis } , + listtable = { Tabellenverzeichnis } , + figure = { Abbildung } , + table = { Tabelle } , + abstract = { Zusammenfassung } , + index = { Index } , + appendix = { Anhang } , + proof = { Beweis } , + bib = { Literaturverzeichnis } , + part = { Teil } , + chapter = { Kapitel } , + figure* = { Figure } , + table* = { Table } , + algorithm = { Algorithmus } , + listalgorithm = { Algorithmenverzeichnis } , + abbr = { Abkürzungsverzeichnis } , + nom = { Symbolverzeichnis } , + ack = { Danksagungen } , + resume = { Lebenslauf } , + digest = { Kurzfassung } , + achv = { Forschungsleistungen } + } +%</de> +% \end{macrocode} +% +% \begin{macrocode} +%<*ja> +\keys_set_known:nn { sjtu / name } + { + contents = { 目 \protect \quad 次 } , + listfigure = { 図目次 } , + listtable = { 表目次 } , + figure = { 図 } , + table = { 表 } , + abstract = { 概 \protect \quad 要 } , + index = { 索 \protect \quad 引 } , + appendix = { 付録 } , + proof = { 证明 } , + bib = { 参考文献 } , + figure* = { Figure } , + table* = { Table } , + algorithm = { アルゴリズム } , + listalgorithm = { アルゴリズム目次 } , + abbr = { 略語表 } , + nom = { 記号表 } , + ack = { 謝 \protect \quad 辞 } , + resume = { 履歴書 } , + digest = { 要 \protect \quad 約 } , + achv = { 研究業績書 } + } +%</ja> +%</scheme> +% \end{macrocode} +% +% 载入名称配置。 +% \begin{macrocode} +%<*class> +%<*thesis> +\clist_map_inline:Nn \g_@@_lang_clist + { \file_input:n { sjtu-name-thesis- #1 .def } } +\clist_map_inline:nn + { title_page, declaration, abstract } + { \@@_define_name:nv {#1} { c_@@_name_ #1 _ \g_@@_lang_tl _tl } } +%</thesis> +%<!thesis>\file_input:n { sjtu-name-generic- \g_@@_lang_tl .def } +% \end{macrocode} +% +% \subsection{页面设置} +% +% 利用 \pkg{geometry} 宏包设置页面边距以及页眉高度。 +% \begin{macrocode} +\geometry + { + top = 3.5 cm, + bottom = 4.0 cm, + left = 2.5 cm, + right = 2.5 cm, +%<thesis> bindingoffset = 0.5 cm, + headheight = 1.5 cm, + headsep = 0.5 cm, + footskip = 1.0 cm + } +% \end{macrocode} +% +% \changes{v2.0.3}{2023/09/24}{学位论文页面纵向顶部对齐。} +% 学位论文页面纵向顶部对齐。 +% \begin{macrocode} +%<*thesis> +\AtEndOfClass { \raggedbottom } +%</thesis> +% \end{macrocode} +% +% \subsection{页眉页脚} +% +% \pkg{ctex} 宏包使用 \opt{heading} 选项后,会把页面格式设置为 |headings|。 +% 因此必须在 \pkg{ctex} 调用之后重新设置 \tn{pagestyle} 为 |fancy|。 +% \begin{macrocode} +\pagestyle { fancy } +% \end{macrocode} +% +% 清除所有页眉页脚。 +% \begin{macrocode} +\fancyhf { } +% \end{macrocode} +% +% \begin{macro}{style/header-font,style/footer-font} +% 设置页眉页脚字体。 +% \begin{macrocode} +\keys_define:nn { sjtu / style } + { + header-font .tl_set:N = \l_@@_style_header_font_tl , +%<thesis> header-font .initial:n = \zihao { -5 } \setbaselineskip { 12 bp } , +%<!thesis> header-font .initial:n = \zihao { -5 } \sffamily , + footer-font .tl_set:N = \l_@@_style_footer_font_tl , +%<thesis> footer-font .initial:n = \zihao { -5 } \setbaselineskip { 12 bp } +%<!thesis> footer-font .initial:n = \zihao { -5 } + } +\fancyheadinit { \l_@@_style_header_font_tl } +\fancyfootinit { \l_@@_style_footer_font_tl } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{style/header-uppercase} +% \begin{macro}[int]{\@@_nouppercase:n} +% 页眉西文是否大写。 +% \begin{macrocode} +\keys_define:nn { sjtu / style } + { + header-uppercase .choice: , + header-uppercase / true .code:n = + { \cs_set_eq:NN \@@_nouppercase:n \use:n } , + header-uppercase / false .code:n = + { \cs_set:Nn \@@_nouppercase:n { \nouppercase {##1} } } , + header-uppercase .default:n = { true } , + header-uppercase .initial:n = { false } + } +\cs_generate_variant:Nn \@@_nouppercase:n { V } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{style/page-number} +% \begin{macro}[int]{\@@_page:n} +% 页脚页码格式。 +% \begin{macrocode} +\cs_new:Nn \@@_thepage: { \thepage } +\keys_define:nn { sjtu / style } + { + page-number .cs_set:Np = \@@_page:n #1 , + page-number .initial:n = { {#1} } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% 设置页眉内容。 +% \begin{macrocode} +\tl_set:Nn \l_@@_header_tl + { +%<*thesis> + { + \@@_set_cjk_default_zh: \normalfont + \l_@@_info_subject_zh_tl + } +%</thesis> +%<*!thesis> + \includegraphics [ height = 1.2 cm ] + { sjtu-vi-logo-small-red.pdf } +%</!thesis> + } +%<thesis>\tl_set:Nn \l_@@_leftmark_tl { \leftmark } +%<!thesis>\tl_set:Nn \l_@@_leftmark_tl { \l_@@_info_subject_tl } +\tl_set:Nn \l_@@_rightmark_tl { \leftmark } +% \end{macrocode} +% +% 设置页眉页脚。 +% \begin{macrocode} +\bool_if:NTF \g_@@_twoside_bool + { + \fancyhead [ LO, RE ] { \l_@@_header_tl } + \fancyhead [ LE ] { \@@_nouppercase:V \l_@@_leftmark_tl } + \fancyhead [ RO ] { \@@_nouppercase:V \l_@@_rightmark_tl } + } + { + \fancyhead [ L ] { \l_@@_header_tl } + \fancyhead [ R ] { \@@_nouppercase:V \l_@@_rightmark_tl } + } +\fancyfoot [ C ] { \@@_page:n { \@@_thepage: } } +% \end{macrocode} +% +% \begin{macro}{\headrule} +% \cls{sjtuthesis} 的页眉线。 +% \begin{macrocode} +%<*thesis> +\cs_set:Npn \headrule + { + \hrule height 2.25 pt width \headwidth + \skip_vertical:n { 0.75 pt } + \hrule height 0.75 pt width \headwidth + \skip_vertical:n { -3.75 pt } + } +%</thesis> +% \end{macrocode} +% \end{macro} +% +% 重定义 |plain| 样式。 +% \begin{macrocode} +%<*!thesis> +\bool_if:NTF \g_@@_twoside_bool + { + \fancypagestyle { plain } + { + \fancyhead [ LE, RO ] { } + \tl_set:Nn \headrulewidth { 0 pt } + } + } + { + \fancypagestyle { plain } + { + \fancyhead [ R ] { } + \tl_set:Nn \headrulewidth { 0 pt } + } + } +%</!thesis> +% \end{macrocode} +% +% |SJTU@null| 样式,不对当前页面样式做任何修改。 +% \begin{macrocode} +\cs_new_eq:NN \ps@SJTU@null \prg_do_nothing: +% \end{macrocode} +% +% \begin{macro}{\cleardoublepage} +% 空白页清空页眉页脚。 +% \begin{macrocode} +\RenewDocumentCommand \cleardoublepage { } + { + \clearpage + \bool_if:NT \g_@@_twoside_bool + { + \int_if_odd:nF \c@page + { \hbox:n { } \thispagestyle { empty } \newpage } + } + } +% \end{macrocode} +% \end{macro} +% +% \subsection{页码设置} +% +% 文档初始页码编码设置。 +% \begin{macrocode} +%<thesis>\pagenumbering { Alph } +% \end{macrocode} +% +% \begin{macro}{\frontmatter} +% 前置部分使用大写罗马数字编码。 +% \begin{macrocode} +%<*thesis> +\RenewDocumentCommand \frontmatter { } + { + \cleardoublepage + \@mainmatterfalse + \pagenumbering { Roman } + } +%</thesis> +% \end{macrocode} +% \end{macro} +% +% \subsection{章节标题结构} +% +% 设置章节标题样式。 +% \begin{macrocode} +%<*!article> +\ctex_set:nn { chapter } + { + pagestyle = SJTU@null , + fixskip = true , +%<*thesis> + beforeskip = 27 bp , + afterskip = 27 bp , + format = \zihao { 3 } \setbaselineskip{ 20 bp } \bfseries + \CJKsffamily \centering , +%</thesis> +%<*report> + beforeskip = 30 pt , + afterskip = 24 pt , + format = \Large \bfseries \CJKsffamily \centering , +%</report> + nameformat = , + titleformat = , + lofskip = \c_zero_skip , + lotskip = \c_zero_skip , + aftername = \quad + } +%</!article> +%</class> +%<*scheme&(zh|ja)> +\keys_set_known:nn { ctex / chapter } + { name = { 第 \space , \space 章 } } +%</scheme&(zh|ja)> +%<*class> +\ctex_set:nn { section } +%<*thesis> + { + beforeskip = 24 bp , + afterskip = 6 bp , + format = \zihao { 4 } \setbaselineskip { 18 bp } \bfseries + \CJKsffamily + } +%</thesis> +%<!thesis> { format = \large \bfseries \CJKsffamily } +\ctex_set:nn { subsection } +%<*thesis> + { + beforeskip = 12 bp , + afterskip = 6 bp , + format = \zihao { -4 } \setbaselineskip { 16 bp } \bfseries + \CJKsffamily + } +%</thesis> +%<!thesis> { format = \normalsize \bfseries \CJKsffamily } +\ctex_set:nn { subsubsection } +%<*thesis> + { + beforeskip = 6 bp , + afterskip = 6 bp , + format = \zihao { -4 } \setbaselineskip { 16 bp } \normalfont + } +%</thesis> +%<!thesis> { format = \normalsize \normalfont } +\ctex_set:n { secnumdepth = 3 } +% \end{macrocode} +% +% \changes{v2.1}{2024/01/10}{新增 \opt{style/indent-first} 选项。} +% \begin{macro}{style/indent-first} +% 章节标题后首段是否缩进。 +% \begin{macrocode} +\keys_define:nn { sjtu / style } + { + indent-first .choice: , + indent-first .choices:nn = + { true, false } + { + \clist_map_inline:nn + { +%<article> part, +%<!article> chapter, + section, subsection, subsubsection, + paragraph, subparagraph + } + { \ctex_set:nn {####1} { afterindent = #1 } } + } , + indent-first .default:n = { true } , + indent-first .initial:n = { true } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\SJTU@head,\@@_head_aux_s:nn,\@@_head_aux_s:nx, +% \@@_pdf_bookmark:nn,\@@_phantom_section:} +% 定义一个灵活的章节标题命令专门处理不同的需求。 +% \begin{macrocode} +\NewDocumentCommand \SJTU@head { s O{#3} m O{#2} } + { +%<!article> \CTEX@chapter@break + \IfBooleanTF {#1} + { \tl_if_empty:nF {#4} { \@@_pdf_bookmark:nn { 0 } {#4} } } + { + \@@_phantom_section: +%<!article> \addcontentsline { toc } { chapter } {#4} +%<article> \addcontentsline { toc } { section } {#4} + } + \cs_set_eq:NN \@@_orig_ctex_gettitle:n \CTEX@gettitle + \cs_set:Npn \CTEX@gettitle ##1 { \@@_orig_ctex_gettitle:n {#2} } +%<!article> \chapter* {#3} +%<article> \section* {#3} + \cs_set_eq:NN \CTEX@gettitle \@@_orig_ctex_gettitle:n + \@mkboth { \MakeUppercase {#2} } { \MakeUppercase {#2} } + } +%<*thesis> +\cs_new:Npn \@@_head_aux_s:nn #1#2 + { \SJTU@head* [#1] {#2} } +\cs_generate_variant:Nn \@@_head_aux_s:nn { nx } +%</thesis> +\cs_new_eq:NN \@@_pdf_bookmark:nn \use_none:nn +\cs_new_eq:NN \@@_phantom_section: \prg_do_nothing: +%</class> +% \end{macrocode} +% \end{macro} +% +% \subsection{段落} +% +% 设置全文首行缩进。 +% \begin{macrocode} +%<*scheme> +\ctex_if_autoindent_touched:F +%<zh> { \ctex_set:n { autoindent = true } } +%<en|de> { \ctex_set:n { autoindent = 1.5 em } } +%<ja> { \ctex_set:n { autoindent = 1 } } +% \end{macrocode} +% +% \begin{macro}{\verse,\quotation} +% 修改诗歌和引用环境的缩进。 +% \begin{macrocode} +%<zh|ja>\ctex_patch_cmd:Nnn \verse { -1.5em } { -2 \ccwd } +%<zh|ja>\ctex_patch_cmd:Nnn \verse { 1.5em } { 2 \ccwd } +\ctex_patch_cmd:Nnn \quotation { 1.5em } { \parindent } +%</scheme> +% \end{macrocode} +% \end{macro} +% +% 使用 \pkg{enumitem} 调整默认列表环境的间距。 +% \begin{macrocode} +%<*class> +\setlist { nosep } +% \end{macrocode} +% +% \subsection{数学公式} +% +% \changes{v2.1}{2023/11/30}{新增 \opt{style/equation-font} 选项。} +% \begin{macro}{style/equation-font} +% 设置行间数学公式的字体。 +% \begin{macrocode} +\keys_define:nn { sjtu / style } + { + equation-font .tl_set:N = \SJTU@style@equation@font , +%<thesis> equation-font .initial:x = \exp_not:N \linespread { } +%<thesis> \exp_not:N \zihao { \g_@@_zihao_tl } +%<!thesis> equation-font .initial:V = \c_empty_tl + } +\clist_map_inline:nn + { + array, matrix, pmatrix, bmatrix, Bmatrix, vmatrix, Vmatrix, + matrix*, pmatrix*, bmatrix*, Bmatrix*, vmatrix*, Vmatrix*, + cases, cases*, dcases, dcases*, rcases, rcases*, drcases, drcases*, + aligned, alignedat, gathered, multlined, lgathered, rgathered + } + { \AtBeginEnvironment {#1} { \SJTU@style@equation@font } } +\clist_map_inline:nn + { \start@gather, \start@align, \start@multline } + { + \ctex_patch_cmd:Nnn #1 + { \collect@body } + { + \SJTU@style@equation@font + \collect@body + } + } +\ctex_patch_cmd:Nnn \gather@split + { \spread@equation } + { + \SJTU@style@equation@font + \spread@equation + } +% \end{macrocode} +% \end{macro} +% +% \subsection{浮动体} +% +% 下面这组命令使浮动对象的缺省值稍微宽松一点,从而防止幅度对象占据过多的 +% 文本页面,也可以防止在很大空白的浮动页上放置很小的图形。 +% \begin{macrocode} +\tl_set:Nn \textfraction { 0.15 } +\tl_set:Nn \topfraction { 0.85 } +\tl_set:Nn \bottomfraction { 0.65 } +\tl_set:Nn \floatpagefraction { 0.60 } +% \end{macrocode} +% +% \begin{macro}{style/float-font} +% 设置浮动体内的字体。 +% \begin{macrocode} +\keys_define:nn { sjtu / style } + { + float-font .tl_set:N = \SJTU@style@float@font , +%<thesis> float-font .initial:n = \zihao { 5 } \setbaselineskip { 14 bp } +%<!thesis> float-font .initial:n = \zihao { 5 } + } +\ctex_patch_cmd:Nnn \@floatboxreset + { \normalsize } { \SJTU@style@float@font } +% \end{macrocode} +% \end{macro} +% +% \changes{v2.1}{2023/11/29}{更新题注格式。} +% \begin{macro}{style/caption-font,style/subcaption-font} +% 题注格式。 +% \begin{macrocode} +\keys_define:nn { sjtu / style } + { +% \end{macrocode} +% +% \pkg{bicaption} 中双语标题之间的间距受 \pkg{caption} 字体定义 \opt{normalsize} +% 的影响,这里我们直接重定义 \opt{normalsize}。 +% \begin{macrocode} + caption-font .code:n = + { \DeclareCaptionFont { normalsize } {#1} } , +% \end{macrocode} +% +% \begin{macrocode} +%<thesis> caption-font .initial:n = \zihao { 5 } \setbaselineskip { 14 bp } +%<thesis> \bfseries , +%<!thesis> caption-font .initial:n = \zihao { 5 } \bfseries , + subcaption-font .code:n = + { \DeclareCaptionFont { SJTU@sub@font } {#1} } , +%<thesis> subcaption-font .initial:n = \zihao { 5 } \setbaselineskip { 14 bp } +%<thesis> \normalfont +%<!thesis> subcaption-font .initial:n = \zihao { 5 } \normalfont + } +\captionsetup + { + bi-slc = off , + labelsep = quad , +%<thesis> skip = 6 bp + } +\captionsetup [ sub ] + { + bi-slc = on , + font = SJTU@sub@font , + format = hang + } +% \end{macrocode} +% \end{macro} +% +% 双语题注。 +% \begin{macrocode} +\DeclareCaptionOption { bi-second-names } [ ] + { + \tl_set:Nn \figurename { \SJTU@figurename@bi@second } + \tl_set:Nn \tablename { \SJTU@tablename@bi@second } + } +\captionsetup [ bi-second ] { bi-second-names } +% \end{macrocode} +% +% \changes{v2.1}{2023/12/02}{新增 \opt{style/num-sep}、 +% \opt{style/theorem-num-sep} 选项。} +% \begin{macro}{style/num-sep,style/float-num-sep, +% style/equation-num-sep,style/theorem-num-sep} +% 图、表、公式以及定理编号中的分隔符。 +% \begin{macrocode} +\keys_define:nn { sjtu / style } + { + num-sep .code:n = + { + \tl_set:Nn \SJTU@style@fl@num@sep {#1} + \tl_set:Nn \SJTU@style@eq@num@sep {#1} + \tl_set:Nn \@thmcountersep {#1} + } , + num-sep .initial:n = { . } , + float-num-sep .tl_set:N = \SJTU@style@fl@num@sep , + equation-num-sep .tl_set:N = \SJTU@style@eq@num@sep , + theorem-num-sep .tl_set:N = \@thmcountersep + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\SJTU@counterwithin} +% \begin{macrocode} +\NewDocumentCommand \SJTU@counterwithin + { s O{ \SJTU@style@fl@num@sep } O{ \arabic } m m } + { + \@ifbothcounters {#4} {#5} + { + \@addtoreset {#4} {#5} + \IfBooleanF {#1} + { + \cs_gset:cpo { the #4 } + { \cs:w the #5 \cs_end: #2 #3 {#4} } + } + } + } +% \end{macrocode} +% \end{macro} +% +% 定义图、表、公式的编号格式。 +% \begin{macrocode} +%<*!article> +\SJTU@counterwithin { figure } { chapter } +\SJTU@counterwithin { table } { chapter } +\SJTU@counterwithin [ \SJTU@style@eq@num@sep ] { equation } { chapter } +%</!article> +% \end{macrocode} +% +% \begin{macro}[int]{\l_@@_counter_without_chapter_clist} +% 大摘要中不需要随章编号的各计数器。 +% \begin{macrocode} +%<*thesis> +\clist_set:Nn \l_@@_counter_without_chapter_clist + { section, figure, table, equation } +%</thesis> +% \end{macrocode} +% \end{macro} +% +% \subsection{脚注} +% +% \begin{macro}[int]{\@@_makefnmark_plain:,\@@_thefootnote_plain:, +% \@@_thempfootnote_plain:} +% 储存原始的脚注相关命令。 +% \begin{macrocode} +\cs_set_eq:NN \@@_makefnmark_plain: \@makefnmark +\cs_set_eq:NN \@@_thefootnote_plain: \thefootnote +\cs_set_eq:NN \@@_thempfootnote_plain: \thempfootnote +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_footnote_number:N} +% 通过 Unicode 码位调用带圈数字。 +% \begin{macrocode} +\cs_new:Npn \@@_footnote_number:N #1 + { + \int_compare:nNnTF {#1} < { 21 } + { \@@_unicode_char:n { \int_eval:n { "2460 - 1 + #1 } } } + { + \int_compare:nNnTF {#1} < { 36 } + { \@@_unicode_char:n { \int_eval:n { "3251 - 21 + #1 } } } + { + \int_compare:nNnTF {#1} < { 51 } + { \@@_unicode_char:n { \int_eval:n { "32B1 - 36 + #1 } } } + { \msg_warning:nn { sjtutex } { too-many-footnotes } } + } + } + } +\msg_new:nnn { sjtutex } { too-many-footnotes } + { Too~ many~ footnotes. } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_makefnmark_circled:} +% 重定义内部脚注文字命令,使用带圈数字编号时,脚注不使用上标。 +% 见 \url{https://www.zhihu.com/question/53030087}。 +% \begin{macrocode} +\cs_new:Nn \@@_makefnmark_circled: { \hbox:n { \@thefnmark } } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{style/fnmark-font} +% 脚注编号字体。 +% \begin{macrocode} +\keys_define:nn { sjtu / style } + { + fnmark-font .choice: , + fnmark-font / haranoaji .code:n = + { + \@@_engine_case:nn + { \tl_set_eq:NN \l_@@_style_fnmark_font_tl \c_empty_tl } + { + \tl_set:Nn \l_@@_style_fnmark_font_tl + { + \CJKfontspec { HaranoAjiMincho } + [ + Extension = .otf , + UprightFont = *-Regular , + BoldFont = *-Bold + ] + } + } + } , + fnmark-font / unknown .tl_set:N = \l_@@_style_fnmark_font_tl , + fnmark-font .initial:V = \c_empty_tl + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_thefootnote_circled:,\@@_thempfootnote_circled:} +% 使用带圈数字编号脚注。 +% \begin{macrocode} +\cs_new:Nn \@@_thefootnote_circled: + { { \l_@@_style_fnmark_font_tl \@@_footnote_number:N \c@footnote } } +\cs_new:Nn \@@_thempfootnote_circled: + { { \l_@@_style_fnmark_font_tl \@@_footnote_number:N \c@mpfootnote } } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{style/fnmark-style} +% 脚注编号样式。 +% \begin{macrocode} +\keys_define:nn { sjtu / style } + { + fnmark-style .choice: , + fnmark-style / plain .code:n = + { + \cs_set_eq:NN \@@_makefnmark: \@@_makefnmark_plain: + \cs_set_eq:NN \thefootnote \@@_thefootnote_plain: + \cs_set_eq:NN \thempfootnote \@@_thempfootnote_plain: + } , + fnmark-style / circled .code:n = + { + \cs_set_eq:NN \@@_makefnmark: \@@_makefnmark_circled: + \cs_set_eq:NN \thefootnote \@@_thefootnote_circled: + \cs_set_eq:NN \thempfootnote \@@_thempfootnote_circled: + } + } +%</class> +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%<*scheme> +\keys_set:nn { sjtu / style } +%<zh|ja> { fnmark-style = circled } +%<en|de> { fnmark-style = plain } +%</scheme> +% \end{macrocode} +% +% 在导言末尾修改 \tn{@makefntext},支持使用 \pkg{footmisc} 修改脚注格式。 +% \begin{macrocode} +%<*class> +\ctex_at_end_preamble:n { + \cs_set_eq:NN \@@_orig_make_fntext:n \@makefntext + \cs_set:Npn \@makefntext #1 + { + \group_begin: + \cs_set_eq:NN \@makefnmark \@@_makefnmark: + \@@_orig_make_fntext:n {#1} + \group_end: + } +} +% \end{macrocode} +% +% \subsection{信息录入} +% +% \changes{v2.0}{2022/12/17}{添加 \opt{display-date} 键。} +% \changes{v2.0}{2022/12/23}{使用 \opt{assoc-supervisor} 键表示副导师, +% 使用 \opt{co-supervisor} 键表示联合导师。} +% \changes{v2.0}{2022/12/23}{添加 \opt{subject} 键。} +% \changes{v2.0}{2023/03/17}{使用语言代码前缀区别不同语种的 \opt{sjtu/info} 键。} +% \begin{macro}[int]{\@@_info_keys_define:n} +% 定义 \cls{sjtuthesis} 不同语种 |sjtu/info| 键值类的辅助函数。 +% \begin{macrocode} +%<*thesis> +\cs_new:Npn \@@_info_keys_define:n #1 + { + \clist_map_inline:nn + { + title, display_title, subject, author, date, + supervisor, assoc_supervisor, department, + co_supervisor, major, degree + } + { \tl_new:c { l_@@_info_ ##1 _ #1 _tl } } + \clist_map_inline:nn + { keywords, fund } + { \clist_new:c { l_@@_info_ ##1 _ #1 _clist } } + \keys_define:nn { sjtu } + { info / #1 .meta:nn = { sjtu / info / #1 } {##1} } + \keys_define:nn { sjtu / info } + { #1 .meta:nn = { sjtu / info / #1 } {##1} } + \keys_define:nn { sjtu / info / #1 } + { + title .code:n = + { + \tl_set:cn { l_@@_info_title_ #1 _tl } {##1} + \tl_if_empty:cT { l_@@_info_display_title_ #1 _tl } + { \tl_set:cn { l_@@_info_display_title_ #1 _tl } {##1} } + } , + display-title .tl_set:c = l_@@_info_display_title_ #1 _tl , + subject .tl_set:c = l_@@_info_subject_ #1 _tl , + keywords .clist_set:c = l_@@_info_keywords_ #1 _clist , + author .tl_set:c = l_@@_info_author_ #1 _tl , + id .meta:nn = { sjtu / info } { id = {##1} } , + supervisor .tl_set:c = l_@@_info_supervisor_ #1 _tl , + assoc-supervisor .tl_set:c = l_@@_info_assoc_supervisor_ #1 _tl , + co-supervisor .tl_set:c = l_@@_info_co_supervisor_ #1 _tl , + degree .tl_set:c = l_@@_info_degree_ #1 _tl , + department .tl_set:c = l_@@_info_department_ #1 _tl , + major .tl_set:c = l_@@_info_major_ #1 _tl , + fund .clist_set:c = l_@@_info_fund_ #1 _clist , + date .meta:nn = { sjtu / info } { date = {##1} } , + display-date .tl_set:c = l_@@_info_date_ #1 _tl , + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{variable}{\l_@@_info_id_zh_tl} +% 单独处理学号。 +% \begin{macrocode} +\tl_new:N \l_@@_info_id_zh_tl +\keys_define:nn { sjtu / info } + { id .tl_set:N = \l_@@_info_id_zh_tl } +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\l_@@_info_supervisors_clist} +% 标题中需要显示的导师列表。 +% \begin{macrocode} +\clist_set:Nn \l_@@_info_supervisors_clist { supervisor } +% \end{macrocode} +% \end{variable} +% +% 盲审模式下隐藏作者、导师姓名等信息。 +% \begin{macrocode} +\ctex_at_end_preamble:n + { + \bool_if:NT \g_@@_review_bool + { + \clist_map_inline:Nn \g_@@_lang_clist + { + \clist_map_inline:nn + { author, supervisor, assoc_supervisor, co_supervisor } + { \tl_clear:c { l_@@_info_ ##1 _ #1 _tl } } + \clist_clear:c { l_@@_info_fund_ #1 _clist } + } + \tl_clear:N \l_@@_info_id_zh_tl + } + } +%</thesis> +%</class> +% \end{macrocode} +% +% \begin{macrocode} +%<lang&thesis&zh>\@@_info_keys_define:n { zh } +%<lang&thesis&en>\@@_info_keys_define:n { en } +%<lang&thesis&de>\@@_info_keys_define:n { de } +%<lang&thesis&ja>\@@_info_keys_define:n { ja } +% \end{macrocode} +% +% \begin{variable}{\l_@@_info_subject_tl,\l_@@_info_keywords_clist} +% \begin{macrocode} +%<*class&!thesis> +\tl_new:N \l_@@_info_subject_tl +\clist_new:N \l_@@_info_keywords_clist +\keys_define:nn { sjtu / info } + { + title .tl_set:N = \@title , + author .tl_set:N = \@author , + display-date .tl_set:N = \@date , + subject .tl_set:N = \l_@@_info_subject_tl , + keywords .clist_set:N = \l_@@_info_keywords_clist , + } +%</class&!thesis> +% \end{macrocode} +% \end{variable} +% +% \subsection{多语言支持} +% +% \changes{v2.0.3}{2023/04/08}{更新学位论文初始英文主题。} +% 初始化主题。 +% \begin{macrocode} +%<*lang> +%<*thesis> +%<zh>\keys_define:nn { sjtu / info / zh } +%<en>\keys_define:nn { sjtu / info / en } +%<de>\keys_define:nn { sjtu / info / de } +%<ja>\keys_define:nn { sjtu / info / ja } + { + subject .initial:x = + { +%<*zh> + \exp_not:V \c_@@_name_univ_zh_tl + \exp_not:V \c_@@_name_degree_level_zh_tl + \exp_not:V \c_@@_name_thesis_zh_tl +%</zh> +%<*en> + A~ Dissertation~ Submitted~ to \exp_not:N \\ + { \exp_not:V \c_@@_name_univ_en_tl }~ for~ + the~ Degree~ of~ { \exp_not:V \c_@@_name_degree_level_en_tl } +%</en> +%<*de> + Eine~ Dissertation~ Eingereicht~ an \exp_not:N \\ + der~ { \exp_not:V \c_@@_name_univ_de_tl }~ für~ + { \exp_not:V \c_@@_name_degree_level_de_tl } titel +%</de> +%<*ja> + \exp_not:V \c_@@_name_univ_ja_tl + \exp_not:V \c_@@_name_degree_level_ja_tl + \exp_not:V \c_@@_name_thesis_ja_tl +%</ja> + } + } +%</thesis> +% \end{macrocode} +% +% 将形如 |yyyy-mm-dd| 或 |yyyy-mm| 的 ISO 日期格式字符串转化为日期表示。 +% +% \begin{macro}[int]{\@@_date_aux_zh:nnn,\@@_date_aux_zh:w, +% \@@_date_aux_short_zh:nn,\@@_date_aux_short_zh:w} +% 中文日期。 +% \begin{macrocode} +%<*zh> +\cs_new:Npn \@@_date_aux_zh:nnn #1#2#3 + { + \int_to_arabic:n {#1} ~ { \exp_not:V \c_@@_name_year_zh_tl } ~ + \int_to_arabic:n {#2} ~ { \exp_not:V \c_@@_name_month_zh_tl } ~ + \int_to_arabic:n {#3} ~ { \exp_not:V \c_@@_name_day_zh_tl } + } +\cs_new:Npn \@@_date_aux_zh:w #1-#2-#3 \q_stop + { \@@_date_aux_zh:nnn {#1} {#2} {#3} } +\cs_new:Npn \@@_date_aux_short_zh:nn #1#2 + { + \int_to_arabic:n {#1} ~ { \exp_not:V \c_@@_name_year_zh_tl } ~ + \int_to_arabic:n {#2} ~ { \exp_not:V \c_@@_name_month_zh_tl } + } +\cs_new:Npn \@@_date_aux_short_zh:w #1-#2 \q_stop + { \@@_date_aux_short_zh:nn {#1} {#2} } +%</zh> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_ordinal_en:n} +% 上标形式的序数词。 +% \begin{macrocode} +%<*en> +\cs_new:Npn \@@_ordinal_en:n #1 + { + \int_to_arabic:n {#1} + \exp_not:N \textsuperscript + { + \int_case:nnF { \int_mod:nn {#1} { 100 } } + { + { 11 } { th } + { 12 } { th } + { 13 } { th } + } + { + \int_case:nnF { \int_mod:nn {#1} { 10 } } + { + { 1 } { st } + { 2 } { nd } + { 3 } { rd } + } + { th } + } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_date_aux_en:nnn,\@@_date_aux_en:w, +% \@@_date_aux_short_en:nn,\@@_date_aux_short_en:w} +% 英文日期。 +% \begin{macrocode} +\cs_new:Npn \@@_date_aux_en:nnn #1#2#3 + { + \clist_item:Nn \c_@@_name_month_en_clist {#2} ~ + \@@_ordinal_en:n {#3} ,~ + \int_to_arabic:n {#1} + } +\cs_new:Npn \@@_date_aux_en:w #1-#2-#3 \q_stop + { \@@_date_aux_en:nnn {#1} {#2} {#3} } +\cs_new:Npn \@@_date_aux_short_en:nn #1#2 + { + \clist_item:Nn \c_@@_name_month_en_clist {#2} ,~ + \int_to_arabic:n {#1} + } +\cs_new:Npn \@@_date_aux_short_en:w #1-#2 \q_stop + { \@@_date_aux_short_en:nn {#1} {#2} } +%</en> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_date_aux_de:nnn,\@@_date_aux_de:w, +% \@@_date_aux_short_de:nn,\@@_date_aux_short_de:w} +% 德文日期。 +% \begin{macrocode} +%<*de> +\cs_new:Npn \@@_date_aux_de:nnn #1#2#3 + { + \clist_item:Nn \c_@@_name_month_de_clist {#2} ~ + {#3} ,~ \int_to_arabic:n {#1} + } +\cs_new:Npn \@@_date_aux_de:w #1-#2-#3 \q_stop + { \@@_date_aux_de:nnn {#1} {#2} {#3} } +\cs_new:Npn \@@_date_aux_short_de:nn #1#2 + { + \clist_item:Nn \c_@@_name_month_de_clist {#2} ,~ + \int_to_arabic:n {#1} + } +\cs_new:Npn \@@_date_aux_short_de:w #1-#2 \q_stop + { \@@_date_aux_short_de:nn {#1} {#2} } +%</de> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_date_aux_ja:nnn,\@@_date_aux_ja:w, +% \@@_date_aux_short_ja:nn,\@@_date_aux_short_ja:w} +% 日文日期。 +% \begin{macrocode} +%<*ja> +\cs_new:Npn \@@_date_aux_ja:nnn #1#2#3 + { + \int_to_arabic:n {#1} ~ { \exp_not:V \c_@@_name_year_ja_tl } ~ + \int_to_arabic:n {#2} ~ { \exp_not:V \c_@@_name_month_ja_tl } ~ + \int_to_arabic:n {#3} ~ { \exp_not:V \c_@@_name_day_ja_tl } + } +\cs_new:Npn \@@_date_aux_ja:w #1-#2-#3 \q_stop + { \@@_date_aux_ja:nnn {#1} {#2} {#3} } +\cs_new:Npn \@@_date_aux_short_ja:nn #1#2 + { + \int_to_arabic:n {#1} ~ { \exp_not:V \c_@@_name_year_ja_tl } ~ + \int_to_arabic:n {#2} ~ { \exp_not:V \c_@@_name_month_ja_tl } + } +\cs_new:Npn \@@_date_aux_short_ja:w #1-#2 \q_stop + { \@@_date_aux_short_ja:nn {#1} {#2} } +%</ja> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@@_set_language_zh:,\@@_set_language_en:, +% \@@_set_language_de:,\@@_set_language_ja:, +% \@@_set_cjk_default_zh:,\@@_set_cjk_default_ja:} +% 设置语言格式辅助命令 +% \begin{macrocode} +%<*zh> +\cs_new:Nn \@@_set_cjk_default_zh: + { + \tl_set:Nn \CJKrmdefault { zhsong } + \tl_set:Nn \CJKsfdefault { zhhei } + \tl_set:Nn \CJKttdefault { zhfs } + } +\cs_new_protected:Nn \@@_set_language_zh: + { + \tl_set:Nn \languagename { chinese } + \ctex_set:n { autoindent = true } + \@@_set_cjk_default_zh: + \normalfont + } +%</zh> +%<*en|de> +%<en>\cs_new_protected:Nn \@@_set_language_en: +%<de>\cs_new_protected:Nn \@@_set_language_de: + { +%<en> \tl_set:Nn \languagename { english } +%<de> \tl_set:Nn \languagename { ngerman } + \ctex_set:n { autoindent = 1.5 em } + \normalfont + } +%</en|de> +%<*ja> +\cs_new:Nn \@@_set_cjk_default_ja: + { + \tl_set:Nn \CJKrmdefault { jamin } + \tl_set:Nn \CJKsfdefault { jagoth } + \tl_set:Nn \CJKttdefault { jagoth } + } +\cs_new_protected:Nn \@@_set_language_ja: + { + \tl_set:Nn \languagename { japanese } + \ctex_set:n { autoindent = 1 } + \@@_set_cjk_default_ja: + \normalfont + } +%</ja> +% \end{macrocode} +% \end{macro} +% +% 标题页页面样式,页脚添加资助基金信息。 +% \begin{macrocode} +%<*thesis> +%<zh>\cs_new:Npn \ps@SJTU@fund@zh +%<en>\cs_new:Npn \ps@SJTU@fund@en +%<de>\cs_new:Npn \ps@SJTU@fund@de +%<ja>\cs_new:Npn \ps@SJTU@fund@ja + { + \ps@empty + \cs_set:Npn \@oddfoot + { + \minipage [ t ] { \textwidth } + \centering \zihao { - 5 } +%<zh> \clist_use:Nn \l_@@_info_fund_zh_clist { \par } +%<en> \clist_use:Nn \l_@@_info_fund_en_clist { \par } +%<de> \clist_use:Nn \l_@@_info_fund_de_clist { \par } +%<ja> \clist_use:Nn \l_@@_info_fund_ja_clist { \par } + \endminipage + } + \cs_set_eq:NN \@evenfoot \@oddfoot + } +%</thesis> +%</lang> +% \end{macrocode} +% +% 初始化语言名称。 +% \begin{macrocode} +%<*scheme> +%<zh>\tl_set:Nn \languagename { chinese } +%<en>\tl_set:Nn \languagename { english } +%<de>\tl_set:Nn \languagename { ngerman } +%<ja>\tl_set:Nn \languagename { japanese } +%</scheme> +% \end{macrocode} +% +% 载入语言配置。 +% \begin{macrocode} +%<*class> +%<thesis>\clist_map_inline:Nn \g_@@_lang_clist +%<thesis> { \file_input:n { sjtu-lang-thesis- #1 .def } } +%<!thesis>\file_input:n { sjtu-lang-generic- \g_@@_lang_tl .def } +\file_input:n { sjtu-scheme- \g_@@_lang_tl .def } +% \end{macrocode} +% +% \begin{macro}{info/date} +% 初始化日期。 +% \begin{macrocode} +\keys_define:nn { sjtu / info } + { + date .code:n = + { + \regex_match:neTF { \d+-\d+-\d+ } {#1} + { +%<*thesis> + \clist_map_inline:Nn \g_@@_lang_clist + { + \tl_set:cx { l_@@_info_date_ ##1 _tl } + { \exp_last_unbraced:ce { @@_date_aux_ ##1 :w } #1 \q_stop } + } +%</thesis> +%<*!thesis> + \tl_set:Nx \@date + { + \exp_last_unbraced:ce + { @@_date_aux_ \g_@@_lang_tl :w } #1 \q_stop + } +%</!thesis> + } + { + \regex_match:neT { \d+-\d+ } {#1} + { +%<*thesis> + \clist_map_inline:Nn \g_@@_lang_clist + { + \tl_set:cx { l_@@_info_date_ ##1 _tl } + { \exp_last_unbraced:ce { @@_date_aux_short_ ##1 :w } #1 \q_stop } + } +%</thesis> +%<*!thesis> + \tl_set:Nx \@date + { + \exp_last_unbraced:ce + { @@_date_aux_short_ \g_@@_lang_tl :w } #1 \q_stop + } +%</!thesis> + } + } + } , + date .initial:x = + { + \int_to_arabic:n { \c_sys_year_int } - + \int_to_arabic:n { \c_sys_month_int } - + \int_to_arabic:n { \c_sys_day_int } + } + } +%<thesis>\tl_set:Nv \today { l_@@_info_date_ \g_@@_lang_tl _tl } +%<!thesis>\tl_set:NV \today \@date +% \end{macrocode} +% \end{macro} +% +% \subsection{标题页} +% +% \subsubsection{定义内部函数} +% +% 汉字分散对齐的环境。 +% \begin{macrocode} +%<*thesis> +\@@_engine_case:nnn + { + \NewDocumentEnvironment { SJTU@CJK@FTS } { m b } + { + \mode_leave_vertical: + \bool_set_false:N \l_@@_tmp_bool + \cs_set_eq:NN \SJTU@CJK@FTS@Symbol \CJKsymbol + \cs_set:Npn \CJKsymbol ##1 + { + \bool_if:NTF \l_@@_tmp_bool + { \hfil \SJTU@CJK@FTS@Symbol { ##1 } } + { + \SJTU@CJK@FTS@Symbol { ##1 } + \bool_set_true:N \l_@@_tmp_bool + } + } + \hbox_to_wd:nn {#1} {#2} + } { } + } + { + \NewDocumentEnvironment { SJTU@CJK@FTS } { m b } + { + \mode_leave_vertical: + \cs_set:Npn \CJKglue + { \skip_horizontal:n { \c_zero_dim plus 1 filll } } + \hbox_to_wd:nn {#1} {#2} + } { } + } + { + \NewDocumentEnvironment { SJTU@CJK@FTS } { m b } + { + \mode_leave_vertical: + \ltjsetparameter { kanjiskip = { \c_zero_dim plus 1 filll } } + \hbox_to_wd:nn {#1} {#2} + } { } + } +% \end{macrocode} +% +% 汉字分散对齐的表格列说明符。 +% \begin{macrocode} +\newcolumntype { \SJTU@CT@D } [ 1 ] + { >{ \begin { SJTU@CJK@FTS } {#1} } c <{ \end { SJTU@CJK@FTS } } } +% \end{macrocode} +% +% \changes{v2.1}{2023/11/30}{标题页信息栏改用表格实现。} +% \begin{macro}[int]{\@@_title_page_info_i:nnn,\@@_title_page_info_i:nxx, +% \@@_title_page_info_ii:n} +% 信息输出。 +% \begin{macrocode} +\cs_new:Npn \@@_title_page_info_i:nnn #1#2#3 + { + \clist_clear:N \l_@@_tmp_clist + \clist_map_inline:nn {#3} + { + \clist_put_right:Nx \l_@@_tmp_clist + { + \exp_not:o { \cs:w c_@@_name_ ##1 _ #1 _tl \cs_end: } + & + \exp_not:o { \cs:w l_@@_info_ ##1 _ #1 _tl \cs_end: } + } + } + \group_begin: + \tl_set:Nn \arraystretch { 1 } + \tabular {#2} + \clist_use:Nn \l_@@_tmp_clist { \\ } + \endtabular + \group_end: + } +\cs_new:Npn \@@_title_page_info_ii:n #1 + { + \tl_use:c { l_@@_info_department_ #1 _tl } + \skip_vertical:N \c_zero_skip + \tl_use:c { c_@@_name_univ_ #1 _tl } + \skip_vertical:N \c_zero_skip + \tl_use:c { c_@@_name_address_ #1 _tl } + \skip_vertical:N \c_zero_skip + \tl_use:c { l_@@_info_date_ #1 _tl } + } +\cs_generate_variant:Nn \@@_title_page_info_i:nnn { nxx } +%</thesis> +%</class> +% \end{macrocode} +% \end{macro} +% +% \subsubsection{构建标题页} +% +% \changes{v2.0}{2022/12/13}{启用新版封面。} +% \changes{v2.0.2}{2023/04/01}{标题页日期底部增加空白。} +% \begin{macrocode} +%<*lang> +%<*thesis> +%<*zh> +\clist_map_inline:nn + { + { logo } + { + content = + { + \includegraphics [ width = 3 cm ] + { sjtu-vi-badge-red.pdf } + } + }, + { subject } + { + format = \zihao { -2 } \setbaselineskip { 30 bp } , + content = \l_@@_info_subject_zh_tl , + bottom-skip = \c_zero_dim plus 1 fill + }, + { title } + { + format = \zihao { 2 } \setbaselineskip { 36 bp } \bfseries , + content = \l_@@_info_display_title_zh_tl , + bottom-skip = 30 bp plus 1 fill + }, + { info } + { + format = \zihao { 4 } \setbaselineskip { 30 bp } \heiti , + content = + { + \@@_title_page_info_i:nxx { zh } + { + \exp_not:N \SJTU@CT@D { 5 em } + @ { \exp_not:V \c_@@_name_info_sep_zh_tl } + >{ \exp_not:N \normalfont } l + } + { + author, + id, + \l_@@_info_supervisors_clist , + department, + major, + \int_compare:nNnF { \g_@@_thesis_type_int } = { 1 } + { degree } + } + } , + bottom-skip = 30 bp + }, + { date } + { + format = \zihao { 4 } \setbaselineskip { 30 bp } \bfseries , + content = \l_@@_info_date_zh_tl , + } + } + { + \@@_declare_component:nnn { title / zh } #1 + } +\@@_declare_page:nn { title / zh } + { + bookmark = true , + bookmark-text = \c_@@_name_title_page_tl , + style = SJTU@fund@zh , + format = \linespread { } \@@_set_language_zh: , + prefix = title / zh , + components = { logo, subject, title, info, date } + } +%</zh> +%<*en|de|ja> +\clist_map_inline:nn + { + { subject } + { + format = \zihao { 4 } \setbaselineskip { 24 bp } \bfseries , +%<en> content = \l_@@_info_subject_en_tl , +%<de> content = \l_@@_info_subject_de_tl , +%<ja> content = \l_@@_info_subject_ja_tl , + bottom-skip = \c_zero_dim plus 1 fill + }, + { title } + { + format = \zihao { -2 } \setbaselineskip { 30 bp } \bfseries , +%<en> content = \MakeUppercase \l_@@_info_display_title_en_tl , +%<de> content = \MakeUppercase \l_@@_info_display_title_de_tl , +%<ja> content = \l_@@_info_display_title_ja_tl , + bottom-skip = \c_zero_dim plus 1 fill + }, + { info } + { + format = \zihao { 3 } \setbaselineskip { 30 bp } \bfseries , + content = + { +%<en> \@@_title_page_info_i:nxx { en } +%<de> \@@_title_page_info_i:nxx { de } +%<ja> \@@_title_page_info_i:nxx { ja } + { +%<en> r @ { \exp_not:V \c_@@_name_info_sep_en_tl } +%<de> r @ { \exp_not:V \c_@@_name_info_sep_de_tl } +%<ja> r @ { \exp_not:V \c_@@_name_info_sep_ja_tl } + >{ \exp_not:N \normalfont } l + } + { author, \l_@@_info_supervisors_clist } + } , + bottom-skip = 30 bp plus 1 fill + }, + { date } + { + format = \zihao { 3 } \setbaselineskip { 30 bp } , + content = +%<en> { \@@_title_page_info_ii:n { en } } , +%<de> { \@@_title_page_info_ii:n { de } } , +%<ja> { \@@_title_page_info_ii:n { ja } } , + }, + } + { +%<en> \@@_declare_component:nnn { title / en } #1 +%<de> \@@_declare_component:nnn { title / de } #1 +%<ja> \@@_declare_component:nnn { title / ja } #1 + } +%<*en> +\@@_declare_page:nn { title / en } + { + style = SJTU@fund@en , + format = \linespread { } \@@_set_language_en: , + prefix = title / en , + components = { subject, title, info, date } + } +%</en> +%<*de> +\@@_declare_page:nn { title / de } + { + style = SJTU@fund@de , + format = \linespread { } \@@_set_language_de: , + prefix = title / de , + components = { subject, title, info, date } + } +%</de> +%<*ja> +\@@_declare_page:nn { title / ja } + { + style = SJTU@fund@ja , + format = \linespread { } \@@_set_language_ja: , + prefix = title / ja , + components = { subject, title, info, date } + } +%</ja> +%</en|de|ja> +%</thesis> +%</lang> +% \end{macrocode} +% +% \begin{macro}{\maketitle} +% 生成标题页,输出前先确定需要显示的导师列表。 +% \begin{macrocode} +%<*class> +%<*thesis> +\RenewDocumentCommand \maketitle { } + { + \clist_map_inline:nn + { assoc_supervisor, co_supervisor } + { + \tl_if_empty:cF { l_@@_info_ ##1 _zh_tl } + { \clist_put_right:Nn \l_@@_info_supervisors_clist {##1} } + } + \clist_map_inline:Nn \g_@@_lang_clist + { \UseInstance { sjtu } { title / ##1 } } + } +%</thesis> +% \end{macrocode} +% \end{macro} +% +% \subsection{原创性声明及使用授权书} +% +% \begin{macrocode} +%<*thesis> +\cs_new_protected:Npn \@@_signature:N #1 + { + \parbox [ t ] { 12 em } + { #1 \c_@@_signature_text_zh_tl } + } +\clist_map_inline:nn + { + { orig / title } + { + format = \zihao { 3 } \setbaselineskip { 30 bp } + \bfseries \heiti , + content = + { + \c_@@_name_univ_zh_tl + \skip_vertical:N \c_zero_skip + \c_@@_name_thesis_zh_tl + \c_@@_name_orig_decl_zh_tl + } , + bottom-skip = 12 bp + }, + { orig / text } + { + format = \zihao { -4 } \setbaselineskip { 24 bp } , + content = \c_@@_orig_decl_text_zh_tl , + bottom-skip = 24 bp , + align = normal + }, + { orig / sign } + { + format = \zihao { 4 } \setbaselineskip { 30 bp } , + content = + { + \@@_signature:N \c_@@_name_decl_author_zh_tl + \skip_horizontal:n { 4 em } \hbox:n { } + } , + bottom-skip = \c_zero_dim plus 2 fill , + align = right + }, + { auth / title } + { + format = \zihao { 3 } \setbaselineskip { 30 bp } + \bfseries \heiti , + content = + { + \c_@@_name_univ_zh_tl + \skip_vertical:N \c_zero_skip + \c_@@_name_thesis_zh_tl + \c_@@_name_auth_decl_zh_tl + } , + bottom-skip = 12 bp + }, + { auth / text } + { + format = \zihao { -4 } \setbaselineskip { 24 bp } , + content = \c_@@_auth_decl_text_zh_tl , + bottom-skip = 24 bp , + align = normal + }, + { auth / sign } + { + format = \zihao { 4 } \setbaselineskip { 30 bp } , + content = + { + \@@_signature:N \c_@@_name_decl_author_zh_tl + \hfill + \@@_signature:N \c_@@_name_decl_supervisor_zh_tl + \skip_horizontal:n { 2 em } \hbox:n { } + } , + bottom-skip = \c_zero_dim plus 1 fill , + align = normal + } + } + { + \@@_declare_component:nnn { copyright } #1 + } +\@@_declare_page:nn { copyright } + { + bookmark = true , + bookmark-text = \c_@@_name_declaration_tl , + format = \linespread { } \@@_set_language_zh: , + prefix = copyright , + components = + { + orig / title, orig / text, orig / sign, + auth / title, auth / text, auth / sign + } + } +\msg_new:nnn { sjtutex } { require-pdfpages } + { + Add~"\token_to_str:N \usepackage{pdfpages}"~ in~ your~ preamble \\ + before~ inserting~ pages~ of~ external~ PDF. + } +% \end{macrocode} +% +% \changes{v2.0}{2022/12/20}{不再自动载入 \pkg{pdfpages} 宏包。} +% \begin{macro}{\copyrightpage} +% \begin{macrocode} +\NewDocumentCommand \copyrightpage { O{ } } + { + \bool_if:NF \g_@@_review_bool + { + \tl_if_blank:nTF {#1} + { \UseInstance { sjtu } { copyright } } + { + \cs_if_exist:NTF \includepdf + { + \bool_if:NTF \g_@@_openright_bool + { \cleardoublepage } { \clearpage } + \@@_pdf_bookmark:nn { 0 } { \c_@@_name_declaration_tl } + \includepdf {#1} + } + { + \msg_warning:nn { sjtutex } { require-pdfpages } + \UseInstance { sjtu } { copyright } + } + } + } + } +%</thesis> +% \end{macrocode} +% \end{macro} +% +% \subsection{摘要} +% +% \changes{v2.1}{2023/11/30}{新增 \opt{style/keywords-format} 选项。} +% \begin{macro}{style/keywords-format} +% 关键词排版样式。 +% \begin{macrocode} +\keys_define:nn { sjtu / style } + { + keywords-format .choice: , + keywords-format / plain .code:n = + { \cs_set:Nn \@@_keywords_format:n { \noindent { \bfseries ##1 } } } , + keywords-format / hang .code:n = + { \cs_set:Nn \@@_keywords_format:n { \@hangfrom { \bfseries ##1 } } } , + keywords-format .initial:n = { plain } + } +% \end{macrocode} +% \end{macro} +% +% \changes{v2.0}{2023/03/17}{\env{abstract} 环境新增指定语言的可选参数。} +% \changes{v2.1}{2023/11/29}{\env{abstract} 环境添加目录条目, +% \env{abstract*} 环境对应修改为不添加目录条目。} +% \begin{macro}{abstract,abstract*} +% 学位论文摘要环境。 +% \begin{macrocode} +%<*thesis> +\DeclareDocumentEnvironment { abstract } { O{ zh } +b } + { + \@@_if_lang_valid:nTF {#1} + { + \use:c { @@_set_language_ #1 : } + \exp_args:Nv \SJTU@head { c_@@_name_abstract_ #1 _tl } + #2 + \clist_if_empty:cF { l_@@_info_keywords_ #1 _clist } + { + \par \mode_leave_vertical: \par + \@@_keywords_format:n + { + \tl_use:c { c_@@_name_keywords_ #1 _tl } + \tl_use:c { c_@@_name_info_sep_ #1 _tl } + } + \clist_use:cv { l_@@_info_keywords_ #1 _clist } + { c_@@_name_item_sep_ #1 _tl } + \par + } + } + { \msg_error:nnn { sjtutex } { lang-validation } {#1} } + } { } +\DeclareDocumentEnvironment { abstract* } { O{ zh } +b } + { + \@@_if_lang_valid:nTF {#1} + { + \use:c { @@_set_language_ #1 : } + \exp_args:NNv \SJTU@head* { c_@@_name_abstract_ #1 _tl } + #2 + \clist_if_empty:cF { l_@@_info_keywords_ #1 _clist } + { + \par \mode_leave_vertical: \par + \@@_keywords_format:n + { + \tl_use:c { c_@@_name_keywords_ #1 _tl } + \tl_use:c { c_@@_name_info_sep_ #1 _tl } + } + \clist_use:cv { l_@@_info_keywords_ #1 _clist } + { c_@@_name_item_sep_ #1 _tl } + \par + } + } + { \msg_error:nnn { sjtutex } { lang-validation } {#1} } + } { } +%</thesis> +% \end{macrocode} +% +% 修复通用模板摘要段首缩进。 +% \begin{macrocode} +%<*!thesis> +\bool_if:NT \g_@@_titlepage_bool + { \@@_appto_cmd:Nn \abstract { \par } } +% \end{macrocode} +% +% 通用模板摘要后添加关键词。 +% \begin{macrocode} +\@@_preto_cmd:Nn \endabstract + { + \clist_if_empty:NF \l_@@_info_keywords_clist + { + \par \mode_leave_vertical: \par + \@@_keywords_format:n + { + \c_@@_name_keywords_tl + \c_@@_name_info_sep_tl + } + \clist_use:NV \l_@@_info_keywords_clist \c_@@_name_item_sep_tl + \par + } + } +%</!thesis> +% \end{macrocode} +% \end{macro} +% +% \subsection{目录} +% +% \changes{v2.1}{2023/11/29}{\tn{tableofcontents} 添加目录条目, +% \tn{tableofcontents*} 对应修改为不添加目录条目。} +% \begin{macro}{\tableofcontents,\tableofcontents*} +% 目录。 +% \begin{macrocode} +\DeclareDocumentCommand \tableofcontents { s } + { + \IfBooleanTF {#1} + { \SJTU@head* { \contentsname } } + { \SJTU@head { \contentsname } } + \group_begin: + \cs_set:Npn \makebox [##1][##2]##3 { \, ##3 } + \@starttoc { toc } + \group_end: + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\SJTU@listof} +% \begin{macro}{\listoffigures,\listoffigures*,\listoftables,\listoftables*} +% 图表索引。 +% \begin{macrocode} +\NewDocumentCommand \SJTU@listof { m m s } + { + \IfBooleanTF {#3} + { \SJTU@head* {#1} } + { \SJTU@head {#1} } + \group_begin: + \cs_set:Npn \makebox [##1][##2]##3 { \, ##3 } + \exp_args:Nv \@starttoc { ext@ #2 } + \group_end: + } +\DeclareDocumentCommand \listoffigures { } + { \SJTU@listof { \listfigurename } { figure } } +\DeclareDocumentCommand \listoftables { } + { \SJTU@listof { \listtablename } { table } } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +\tl_set:Nn \cftdotsep { 0.5 } +%<!article>\tl_set:Nn \cftchapleader { \bfseries \cftdotfill { \cftdotsep } } +%<*thesis> +\clist_map_inline:nn + { + { cft before chap skip } { 10 bp plus 1 pt } , + { cft chap numwidth } { 3.5 em } , + { cft sec indent } { 2 em } , + { cft sec numwidth } { 1.5 em } , + { cft subsec indent } { 4 em } , + { cft subsec numwidth } { 2.3 em } + } + { \skip_set:cn #1 } +%</thesis> +% \end{macrocode} +% +% \changes{v2.0.1}{2023/03/31}{插图、表格和算法等索引不缩进。} +% \changes{v2.0.1}{2023/03/31}{调整插图、表格和算法等索引编号宽度。} +% \begin{macro}[int]{\@@_update_cft_presnum:nn} +% \begin{variable}{\l_@@_cft_presnum_clist} +% 图表清单标题前添加名称。 +% \begin{macrocode} +\clist_set:Nn \l_@@_cft_presnum_clist + { + { fig } { \figurename } , + { tab } { \tablename } + } +\cs_new:Npn \@@_update_cft_presnum:nn #1#2 + { + \tl_set:cn { cft #1 presnum } { #2 \c_space_tl } + \skip_zero:c { cft #1 indent } +%<article> \skip_set:cn { cft #1 numwidth } { 1.8 em } +%<!article> \skip_set:cn { cft #1 numwidth } { 2.8 em } + \@@_skip_add_to_wd:cv { cft #1 numwidth } { cft #1 presnum } + } +\ctex_at_end_preamble:n + { + \clist_map_inline:Nn \l_@@_cft_presnum_clist + { \@@_update_cft_presnum:nn #1 } + } +% \end{macrocode} +% \end{variable} +% \end{macro} +% +% \subsection{预定义环境} +% +% \begin{macro}{abbreviation,abbreviation*} +% 缩略语对照表。 +% \begin{macrocode} +%<*thesis> +\NewDocumentEnvironment { abbreviation } { O{ \SJTU@abbrname } } + { + \chapter {#1} + \tl_clear:N \SJTU@style@float@font + } { } +\NewDocumentEnvironment { abbreviation* } { O{ \SJTU@abbrname } } + { + \SJTU@head* {#1} + \tl_clear:N \SJTU@style@float@font + } { } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{nomenclature,nomenclature*} +% 符号对照表。 +% \begin{macrocode} +\NewDocumentEnvironment { nomenclature } { O{ \SJTU@nomname } } + { + \chapter {#1} + \tl_clear:N \SJTU@style@float@font + } { } +\NewDocumentEnvironment { nomenclature* } { O{ \SJTU@nomname } } + { + \SJTU@head* {#1} + \tl_clear:N \SJTU@style@float@font + } { } +% \end{macrocode} +% \end{macro} +% +% \changes{v2.0}{2023/03/17}{移除 \env{summary} 环境。} +% +% \begin{macro}{acknowledgements} +% 致谢,盲审模式下隐藏致谢。 +% \begin{macrocode} +\NewDocumentEnvironment { acknowledgements } { O{ \SJTU@ackname } +b } + { + \bool_if:NF \g_@@_review_bool + { + \SJTU@head {#1} + #2 + } + } { } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{achievements,bibliolist,bibliolist*} +% 发表论文与学术成果。 +% \begin{macrocode} +\newcounter { SJTU@bib } +\NewDocumentEnvironment { @bibliolist } { m } + { + \cs_if_exist_use:N \bibfont + \list + { + \tl_if_blank:nTF {#1} + { \hfill } + { \@biblabel { \arabic{ SJTU@bib } } } + } + { + \tl_if_blank:nTF {#1} + { + \skip_if_exist:NTF \bibhang + { \dim_set_eq:NN \leftmargin \bibhang } + { \dim_set:Nn \leftmargin { 1 em } } + \dim_set:Nn \itemindent { - \leftmargin } + } + { + \@@_dim_set_to_wd:Nn \labelwidth { \@biblabel {#1} } + \dim_set_eq:NN \leftmargin \labelwidth + \dim_add:Nn \leftmargin { \labelsep } + } + \skip_if_exist:NTF \bibitemsep + { + \skip_set_eq:NN \itemsep \bibitemsep + \skip_if_exist:NT \bibparsep + { \skip_set_eq:NN \parsep \bibparsep } + } + { + \skip_if_exist:NT \bibsep + { + \skip_set_eq:NN \itemsep \bibsep + \skip_zero:N \parsep + } + } + \@nmbrlisttrue + \tl_set:Nn \@listctr { SJTU@bib } + \cs_set:Npn \p@SJTU@bib { } + \cs_set:Npn \theSJTU@bib { \arabic { SJTU@bib } } + } + \sloppy + \int_set:Nn \clubpenalty { 4000 } + \int_set_eq:NN \@clubpenalty \clubpenalty + \int_set:Nn \widowpenalty { 4000 } + \char_set_sfcode:nn { `\. } { 1000 } + } + { + \cs_set:Npn \@noitemerr + { \msg_warning:nnn { sjtutex } { empty-environment } { bibliolist } } + \endlist + } +\msg_new:nnn { sjtutex } { empty-environment } + { Empty~ `#1'~ environment. } +\bool_new:N \l_@@_achievements_bool +\NewDocumentEnvironment { achievements } { O{ \SJTU@achvname } } + { + \SJTU@head {#1} + \setcounter { SJTU@bib } { 0 } + \bool_set_true:N \l_@@_achievements_bool + } { } +\NewDocumentEnvironment { bibliolist } { m +b } + { + \bool_if:NF \l_@@_achievements_bool + { + \msg_error:nnnn { sjtutex } { environment-validation } + { bibliolist } { achievements } + } + \bool_if:NF \g_@@_review_bool + { + \cs_set:Npn \@noitemerr { } + \begin { @bibliolist } {#1} + #2 + \end { @bibliolist } + } + } { } +\NewDocumentEnvironment { bibliolist* } { m +b } + { + \bool_if:NF \l_@@_achievements_bool + { + \msg_error:nnnn { sjtutex } { environment-validation } + { bibliolist* } { achievements } + } + \bool_if:NT \g_@@_review_bool + { + \cs_set:Npn \@noitemerr { } + \begin { @bibliolist } {#1} + #2 + \end { @bibliolist } + } + } { } +\msg_new:nnn { sjtutex } { environment-validation } + { `#1'~ is~ only~ valid~ in~ `#2'~ environment. } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{resume} +% 简历。 +% \begin{macrocode} +\NewDocumentEnvironment { resume } { O{ \SJTU@resumename } +b } + { + \bool_if:NF \g_@@_review_bool + { + \SJTU@head {#1} + #2 + } + } { } +% \end{macrocode} +% \end{macro} +% +% \changes{v2.0}{2023/03/17}{\env{digest} 环境新增指定语言的可选参数。} +% \begin{macro}{digest} +% 大摘要。 +% \begin{macrocode} +\NewDocumentEnvironment { digest } { O{ en } +b } + { + \@@_if_lang_valid:nTF {#1} + { + \AtEndDocument + { + \use:c { @@_set_language_ #1 : } + \bool_if:NTF \g_@@_openright_bool + { \cleardoublepage } { \clearpage } + \pagenumbering { roman } + \cs_gset:Nn \@@_thepage: { \arabic { page } } + \cs_gset_eq:NN \addcontentsline \use_none:nnn + \clist_map_inline:Nn \l_@@_counter_without_chapter_clist + { + \counterwithout {##1} { chapter } + \setcounter {##1} { 0 } + } + \@@_head_aux_s:nx { \SJTU@digestname } + { + \exp_not:N \MakeUppercase + { \exp_not:v { l_@@_info_title_ #1 _tl } } + } + #2 + } + } + { \msg_error:nnn { sjtutex } { lang-validation } {#1} } + } { } +%</thesis> +% \end{macrocode} +% \end{macro} +% +% \subsection{设置接口} +% +% \begin{macro}{\sjtusetup} +% 用户设置接口。 +% \begin{macrocode} +\NewDocumentCommand \sjtusetup { } { \keys_set:nn { sjtu } } +% \end{macrocode} +% \end{macro} +% +% \changes{v2.0}{2022/12/28}{重新制定 \opt{sjtu/style} 域中的接口。} +% 定义元(meta)键值对。 +% \begin{macrocode} +\keys_define:nn { sjtu } + { + style .meta:nn = { sjtu / style } {#1} , + info .meta:nn = { sjtu / info } {#1} , + name .meta:nn = { sjtu / name } {#1} + } +% \end{macrocode} +% +% 兼容 \cls{sjtuthesis} 旧接口。 +% \begin{macrocode} +%<*thesis> +\keys_define:nn { sjtu / info } + { + title .meta:n = { zh / title = {#1} } , + title* .meta:n = { en / title = {#1} } , + display-title .meta:n = { zh / display-title = {#1} } , + display-title* .meta:n = { en / display-title = {#1} } , + subject .meta:n = { zh / subject = {#1} } , + subject* .meta:n = { en / subject = {#1} } , + keywords .meta:n = { zh / keywords = {#1} } , + keywords* .meta:n = { en / keywords = {#1} } , + author .meta:n = { zh / author = {#1} } , + author* .meta:n = { en / author = {#1} } , + supervisor .meta:n = { zh / supervisor = {#1} } , + supervisor* .meta:n = { en / supervisor = {#1} } , + assoc-supervisor .meta:n = { zh / assoc-supervisor = {#1} } , + assoc-supervisor* .meta:n = { en / assoc-supervisor = {#1} } , + co-supervisor .meta:n = { zh / co-supervisor = {#1} } , + co-supervisor* .meta:n = { en / co-supervisor = {#1} } , + degree .meta:n = { zh / degree = {#1} } , + degree* .meta:n = { en / degree = {#1} } , + department .meta:n = { zh / department = {#1} } , + department* .meta:n = { en / department = {#1} } , + major .meta:n = { zh / major = {#1} } , + major* .meta:n = { en / major = {#1} } , + fund .meta:n = { zh / fund = {#1} } , + fund* .meta:n = { en / fund = {#1} } , + display-date .meta:n = { zh / date = {#1} } , + display-date* .meta:n = { en / date = {#1} } + } +\keys_define:nn { sjtu / name } + { + abbreviation .meta:n = { abbr = {#1} } , + nomenclature .meta:n = { nom = {#1} } , + acknowledgements .meta:n = { ack = {#1} } , + publications .meta:n = { achv = {#1} } , + achievements .meta:n = { achv = {#1} } + } +%</thesis> +% \end{macrocode} +% +% \begin{macro}{\subject,\keywords} +% 通用模板新接口。 +% \begin{macrocode} +%<*!thesis> +\NewDocumentCommand \subject { m } + { \keys_set:nn { sjtu / info } { subject = {#1} } } +\NewDocumentCommand \keywords { m } + { \keys_set:nn { sjtu / info } { keywords = {#1} } } +%</!thesis> +% \end{macrocode} +% \end{macro} +% +% \subsection{其他宏包的设置} +% +% \changes{v2.0.3}{2023/09/23}{移除 \pkg{listings} 宏包预设。} +% 这些宏包并非格式要求,但是为了方便同学们使用,在这里进行简单设置。 +% +% \subsubsection{\pkg{hyperref} 宏包} +% +% \begin{macrocode} +\ctex_at_end_package:nn { hyperref } + { + \hypersetup + { + linktoc = all, + bookmarksdepth = 2, + bookmarksnumbered = true, + bookmarksopen = true, + bookmarksopenlevel = 1, + unicode = true, + psdextra = true, + breaklinks = true, + pdfdisplaydoctitle = true + } + \int_new:N \g_@@_bookmark_int + \cs_gset_protected:Npn \@@_pdf_bookmark:nn #1#2 + { + \phantomsection + \int_gincr:N \g_@@_bookmark_int + \pdfbookmark [#1] {#2} + { sjtubookmark. \int_use:N \g_@@_bookmark_int } + } + \cs_gset_eq:NN \@@_phantom_section: \phantomsection + \pdfstringdefDisableCommands + { + \cs_set_eq:NN \\ \prg_do_nothing: + \cs_set_eq:NN \quad \c_empty_tl + \cs_set_eq:NN \qquad \c_empty_tl + \cs_set_eq:NN \hspace \use_none:n + } + \ctex_after_end_preamble:n + { + \hypersetup + { +%<*thesis> + pdftitle = \l_@@_info_title_zh_tl , + pdfauthor = \l_@@_info_author_zh_tl , + pdfsubject = \l_@@_info_subject_zh_tl , + pdfkeywords = \l_@@_info_keywords_zh_clist +%</thesis> +%<*!thesis> + pdftitle = \@title , + pdfauthor = \@author , + pdfsubject = \l_@@_info_subject_tl , + pdfkeywords = \l_@@_info_keywords_clist +%</!thesis> + } + } + } +% \end{macrocode} +% +% \subsubsection{\pkg{threeparttable} 宏包} +% +% \begin{macrocode} +\ctex_at_end_package:nn { threeparttable } + { \tl_put_right:Nn \TPTnoteSettings { \footnotesize } } +% \end{macrocode} +% +% \subsubsection{\pkg{longtable} 宏包} +% +% \begin{macrocode} +\ctex_at_end_package:nn { longtable } + { \AtBeginEnvironment { longtable } { \SJTU@style@float@font } } +% \end{macrocode} +% +% \subsubsection{\pkg{amsthm} 宏包和 \pkg{ntheorem} 宏包} +% +% \begin{macrocode} +\cs_new_protected:Nn \@@_new_theorems: + { + \clist_map_inline:nn + { + assumption, axiom, conjecture, corollary, definition, example, + exercise, lemma, problem, proposition, theorem + } +%<!article> { \exp_args:Nnv \newtheorem {##1} { c_@@_name_ ##1 _tl } [ chapter ] } +%<article> { \exp_args:Nnv \newtheorem {##1} { c_@@_name_ ##1 _tl } } + \clist_map_inline:nn + { remark, solution } + { \exp_args:NNnv \newtheorem* {##1} { c_@@_name_ ##1 _tl } } + } +% \end{macrocode} +% +% \pkg{amsthm} 宏包。 +% \begin{macrocode} +\ctex_at_begin_package:nn { amsthm } + { + \cs_if_exist:NT \openbox + { + \cs_new_eq:NN \@@_save_openbox: \openbox + \cs_undefine:N \openbox + } + } +\ctex_at_end_package:nn { amsthm } + { + \@@_cs_provide_eq:NN \QED \openbox + \cs_if_exist:NT \@@_save_openbox: + { \cs_set_eq:NN \openbox \@@_save_openbox: } + \tl_set:Nn \qedsymbol { \ensuremath { \QED } } + \RenewDocumentEnvironment { proof } { O{ \proofname } } + { + \par \pushQED { \qed } + \normalfont \dim_zero:N \topsep + \trivlist + \item + [ + \skip_horizontal:N \labelsep + \bfseries \CJKsffamily #1 \@addpunct { \enskip } + ] + \ignorespaces + } + { \popQED \endtrivlist \@endpefalse } + \newtheoremstyle { sjtu } + { } { } { \normalfont } { } { \bfseries \CJKsffamily } { } { \ccwd } { } + \theoremstyle { sjtu } + \@@_new_theorems: + } +% \end{macrocode} +% +% \pkg{ntheorem} 宏包。 +% \begin{macrocode} +\ctex_at_end_package:nn { ntheorem } + { + \@@_cs_provide_eq:NN \QED \c_empty_tl + \theoremheaderfont { \bfseries \CJKsffamily } + \theorembodyfont { \normalfont } + \theoremseparator { \enskip } + \theoremsymbol { \ensuremath { \QED } } + \qedsymbol { \ensuremath { \QED } } + \newtheorem* { proof } { \proofname } + \theoremsymbol { } + \@@_new_theorems: + } +% \end{macrocode} +% +% \subsubsection{\pkg{algorithm} 宏包和 \pkg{algorithm2e} 宏包} +% +% \begin{macrocode} +\cs_new_protected:Npn \@@_newlistof:nnnnn #1#2#3#4#5 + { + \exp_args:Nnv \newlistentry {#2} { ext@ #3 } { 0 } + \exp_args:Ne \newcounter { \tl_use:c { ext@ #3 } depth } + \exp_args:Ne \setcounter { \tl_use:c { ext@ #3 } depth } { 1 } + \clist_put_right:Nn \l_@@_cft_presnum_clist { {#2} {#4} } + \cs_set_eq:cc { l@ #3 } { l@ #2 } + \exp_args:Nc \DeclareDocumentCommand { listof #1 s } { } + { \SJTU@listof {#5} {#3} } +%<!article> \SJTU@counterwithin { #3 } { chapter } +%<thesis> \clist_put_right:Nn \l_@@_counter_without_chapter_clist {#3} + } +% \end{macrocode} +% +% \pkg{algorithm} 宏包。 +% \begin{macrocode} +\ctex_at_end_package:nn { algorithm } + { + \tl_set:Nn \fname@algorithm { \SJTU@algorithmname } + \tl_set:Nn \listalgorithmname { \SJTU@listalgorithmname } + \@@_newlistof:nnnnn { algorithm } { alg } { algorithm } + { \fname@algorithm } { \listalgorithmname } + } +% \end{macrocode} +% +% \pkg{algorithm2e} 宏包。 +% \begin{macrocode} +%<!article>\ctex_at_begin_package:nn { algorithm2e } +%<!article> { \cs_set_eq:NN \@@_save_chapter:w \@chapter } +\ctex_at_end_package:nn { algorithm2e } + { +%<!article> \cs_set_eq:NN \@chapter \@@_save_chapter:w + \SetAlgorithmName { \SJTU@algorithmname } + { \SJTU@algorithmname } + { \SJTU@listalgorithmname } + \SetAlgoCaptionSeparator { \enskip } + \@@_newlistof:nnnnn { algorithm } { alg } { algocf } + { \algorithmcfname } { \listalgorithmcfname } + \ctex_patch_cmd:Nnn \algocf@latexcaption + { \addcontentsline } + { \caption@iflist { \addcontentsline } { \@gobblethree } } + } +% \end{macrocode} +% +% \subsubsection{\pkg{nomencl} 宏包} +% \begin{macrocode} +\ctex_at_end_package:nn { nomencl } + { \tl_set:Nn \nomname { \SJTU@nomname } } +% \end{macrocode} +% +% \changes{v2.0.3}{2023/09/25}{添加 \pkg{siunitx} 本地化支持。} +% \subsubsection{\pkg{translations} 宏包} +% \begin{macrocode} +\ctex_at_end_package:nn { translations } + { + \DeclareLanguage { chinese } + \DeclareLanguageAlias { Chinese } { chinese } + } +% \end{macrocode} +% +% \subsubsection{\pkg{siunitx} 宏包} +% \begin{macrocode} +\ctex_at_end_package:nn { siunitx } + { + \RequirePackage { translations } + \DeclareTranslation { Chinese } { and } { 和 } + \DeclareTranslation { Japanese } { and } { と } + \DeclareTranslation { Chinese } + { to~(numerical~range) } { \textasciitilde } + \DeclareTranslation { Japanese } + { to~(numerical~range) } { \textasciitilde } + \IfPackageAtLeastTF { siunitx } { 2021/05/17 } { } + { + \DeclareTranslation { English } { to~(numerical~range) } { to } + \DeclareTranslation { German } { to~(numerical~range) } { bis } + \keys_set:nn { siunitx } + { + list-final-separator = + { + \ifmmode \ \else \space \fi + \text { \GetTranslation { and } } + \ifmmode \ \else \space \fi + } , + list-pair-separator = + { + \ifmmode \ \else \space \fi + \text { \GetTranslation { and } } + \ifmmode \ \else \space \fi + } , + range-phrase = + { + \ifmmode \ \else \space \fi + \text { \GetTranslation { to~(numerical~range) } } + \ifmmode \ \else \space \fi + } + } + } + } +% \end{macrocode} +% +% \begin{macrocode} +%</class> +% \end{macrocode} +% +% \subsection{名称配置} +% \begin{macrocode} +%<*name> +%<*zh|ja> +\clist_map_inline:nn + { + { year } { 年 } , + { month } { 月 } , + { day } { 日 } + } +%<zh> { \@@_define_name:nnn { zh } #1 } +%<ja> { \@@_define_name:nnn { ja } #1 } +%</zh|ja> +%<*en> +\clist_const:Nn \c_@@_name_month_en_clist + { + January, February, March, April, May, June, + July, August, September, October, November, December + } +%</en> +%<*de> +\clist_const:Nn \c_@@_name_month_de_clist + { + Januar, Februar, März, April, Mai, Juni, + Juli, August, September, Oktober, November, Dezember + } +%</de> +%<*thesis> +%<*zh> +\@@_define_symbol:nn { white_square } { "25A1 } +\@@_define_name_from_clist:nnnn { zh } + { degree_level } { \g_@@_thesis_type_int } + { 学士, 硕士, 博士 } +%</zh> +%<*en> +\@@_define_name_from_clist:nnnn { en } + { degree_level } { \g_@@_thesis_type_int } + { Bachelor, Master, Doctor } +%</en> +%<*de> +\@@_define_name_from_clist:nnnn { de } + { degree_level } { \g_@@_thesis_type_int } + { Bachelor, Master, Doktor } +%</de> +%<*ja> +\@@_define_name_from_clist:nnnn { ja } + { degree_level } { \g_@@_thesis_type_int } + { 学士, 修士, 博士 } +%</ja> +%</thesis> +%<*zh> +\clist_map_inline:nn + { +%<*thesis> + { univ } { 上海交通大学 } , + { author } { 姓名 } , + { id } { 学号 } , + { supervisor } { 导师 } , + { assoc_supervisor } { 副导师 } , + { department } { 院系 } , + { co_supervisor } { 联合导师 } , + { major } { 学科 / 专业 } , + { degree } { 申请学位 } , + { thesis } { 学位论文 } , + { title_page } { 题名页 } , + { declaration } { 原创性声明及使用授权书 } , + { orig_decl } { 原创性声明 } , + { auth_decl } { 使用授权书 } , + { decl_author } { 学位论文作者 } , + { decl_supervisor } { 指导教师 } , + { abstract } { 摘 \protect \quad 要 } , +%</thesis> + { keywords } { 关键词 } , + { info_sep } { : \null } , + { item_sep } { , } + } +%<thesis> { \@@_define_name:nnn { zh } #1 } +%<!thesis> { \@@_define_name:nn #1 } +%</zh> +%<*en> +\clist_map_inline:nn + { +%<*thesis> + { univ } { Shanghai~ Jiao~ Tong~ University } , + { address } { Shanghai,~ P.R.~ China } , + { author } { Author } , + { supervisor } { Supervisor } , + { assoc_supervisor } { Assoc.~ Supervisor } , + { co_supervisor } { Co-supervisor } , + { title_page } { Title~ Page } , + { declaration } { Statutory~ Declaration } , + { abstract } { Abstract } , +%</thesis> + { keywords } { Key~words } , + { info_sep } { :~ } , + { item_sep } { ,~ } + } +%<thesis> { \@@_define_name:nnn { en } #1 } +%<!thesis> { \@@_define_name:nn #1 } +%</en> +%<*de> +\clist_map_inline:nn + { +%<*thesis> + { univ } { Shanghai~ Jiao~ Tong~ Universität } , + { address } { Shanghai,~ VR~ China } , + { author } { Autor/in } , + { supervisor } { Betreuer/in } , + { assoc_supervisor } { Zweitbetreuer/in } , + { co_supervisor } { Co-Betreuer/in } , + { title_page } { Titelblatt } , + { declaration } { Eidesstattliche~ Erklärung } , + { abstract } { Abstrakt } , +%</thesis> + { keywords } { Schlüsselwörter } , + { info_sep } { :~ } , + { item_sep } { ,~ } + } +%<thesis> { \@@_define_name:nnn { de } #1 } +%<!thesis> { \@@_define_name:nn #1 } +%</de> +%<*ja> +\clist_map_inline:nn + { +%<*thesis> + { univ } { 上海交通大学 } , + { address } { 中国・上海 } , + { author } { 氏名 } , + { supervisor } { 指導教員 } , + { assoc_supervisor } { 副指導教員 } , + { co_supervisor } { 共同指導 } , + { thesis } { 学位請求論文 } , + { title_page } { 標題紙 } , + { declaration } { 誓約書・公表許諾書 } , + { abstract } { 要 \protect \quad 旨 } , +%</thesis> + { keywords } { キーワード } , + { info_sep } { : \null } , + { item_sep } { \quad } + } +%<thesis> { \@@_define_name:nnn { ja } #1 } +%<!thesis> { \@@_define_name:nn #1 } +%</ja> +%<*thesis> +%<*zh> +\tl_const:Nn \c_@@_orig_decl_text_zh_tl + { + 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工 + 作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人 + 或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集 + 体,均已在文中以明确方式标明。本人完全知晓本声明的法律后果由本人承 + 担。 + } +\tl_const:Nn \c_@@_auth_decl_text_zh_tl + { + 本人同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许 + 论文被查阅和借阅。 \par + \vskip 6 bp + \noindent + 本学位论文属于: \par + { \c_@@_symbol_white_square_tl } \textbf { 公开论文 } \par + { \c_@@_symbol_white_square_tl } \textbf { 内部论文 }, + 保密 { \c_@@_symbol_white_square_tl }~ 1~ 年 / + { \c_@@_symbol_white_square_tl }~ 2~ 年 / + { \c_@@_symbol_white_square_tl }~ 3~ 年, + 过保密期后适用本授权书。 \par + { \c_@@_symbol_white_square_tl } \textbf { 秘密论文 }, + 保密 \underline { \hspace { 2 em } } 年(不超过~ 10~ 年), + 过保密期后适用本授权书。 \par + { \c_@@_symbol_white_square_tl } \textbf { 机密论文 }, + 保密 \underline { \hspace { 2 em } } 年(不超过~ 20~ 年), + 过保密期后适用本授权书。 \par + \hspace { 6 em }(请在以上方框内选择打“ \ensuremath { \checkmark } ”) + } +\tl_const:Nn \c_@@_signature_text_zh_tl + { + 签名: \\ + 日期: \hspace { \stretch { 3 } } 年 + \hspace { \stretch { 2 } } 月 + \hspace { \stretch { 2 } } 日 + } +%</zh> +%</thesis> +%</name> +% \end{macrocode} +% +% \begin{macrocode} +%<*scheme> +\clist_map_inline:nn + { +%<*zh> + { assumption } { 假设 } , + { axiom } { 公理 } , + { conjecture } { 猜想 } , + { corollary } { 推论 } , + { definition } { 定义 } , + { example } { 例 } , + { exercise } { 练习 } , + { lemma } { 引理 } , + { problem } { 问题 } , + { proposition } { 命题 } , + { remark } { 注 } , + { solution } { 解 } , + { theorem } { 定理 } +%</zh> +%<*en> + { assumption } { Assumption } , + { axiom } { Axiom } , + { conjecture } { Conjecture } , + { corollary } { Corollary } , + { definition } { Definition } , + { example } { Example } , + { exercise } { Exercise } , + { lemma } { Lemma } , + { problem } { Problem } , + { proposition } { Proposition } , + { remark } { Remark } , + { solution } { Solution } , + { theorem } { Theorem } +%</en> +%<*de> + { assumption } { Annahme } , + { axiom } { Axiom } , + { conjecture } { Hypothese } , + { corollary } { Korollar } , + { definition } { Definition } , + { example } { Beispiel } , + { exercise } { Übung } , + { lemma } { Lemma } , + { problem } { Problem } , + { proposition } { Proposition } , + { remark } { Anmerkung } , + { solution } { Lösung } , + { theorem } { Theorem } +%</de> +%<*ja> + { assumption } { 仮定 } , + { axiom } { 公理 } , + { conjecture } { 予想 } , + { corollary } { 系 } , + { definition } { 定義 } , + { example } { 例 } , + { exercise } { 練習 } , + { lemma } { 補題 } , + { problem } { 問題 } , + { proposition } { 命題 } , + { remark } { 注意 } , + { solution } { 解法 } , + { theorem } { 定理 } +%</ja> + } + { \@@_define_name:nn #1 } +% \end{macrocode} +% +% \begin{macrocode} +%</scheme> +% \end{macrocode} +% +% \end{implementation} +% +% \Finale +% +\endinput diff --git a/macros/latex/contrib/sjtutex/sjtutex.pdf b/macros/latex/contrib/sjtutex/sjtutex.pdf Binary files differnew file mode 100644 index 0000000000..c14c72d1d6 --- /dev/null +++ b/macros/latex/contrib/sjtutex/sjtutex.pdf |