From 30b3429f0e138c93c5f1ba1d1a6d46728c0943e9 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Tue, 4 Oct 2022 03:00:59 +0000 Subject: CTAN sync 202210040300 --- FILES.byname | 755 +- FILES.byname.gz | Bin 2457117 -> 2457319 bytes FILES.last07days | 737 +- biblio/bibtex/contrib/gbt7714/CHANGELOG.md | 16 +- biblio/bibtex/contrib/gbt7714/DEPENDS.txt | 5 + biblio/bibtex/contrib/gbt7714/README.md | 6 +- .../contrib/gbt7714/gbt7714-2005-author-year.bst | 11 +- .../contrib/gbt7714/gbt7714-2005-numerical.bst | 11 +- .../bibtex/contrib/gbt7714/gbt7714-author-year.bst | 11 +- .../bibtex/contrib/gbt7714/gbt7714-numerical.bst | 11 +- biblio/bibtex/contrib/gbt7714/gbt7714.dtx | 4812 +++ biblio/bibtex/contrib/gbt7714/gbt7714.pdf | Bin 486968 -> 487773 bytes biblio/bibtex/contrib/gbt7714/gbt7714.sty | 4 +- macros/generic/markdown/CHANGES.md | 20 +- macros/generic/markdown/VERSION | 2 +- macros/generic/markdown/examples/context-mkii.tex | 1 + macros/generic/markdown/examples/context-mkiv.tex | 1 + macros/generic/markdown/examples/latex.tex | 1 + macros/generic/markdown/markdown.dtx | 643 +- macros/generic/markdown/markdown.html | 13956 ++++--- macros/generic/markdown/markdown.pdf | Bin 888520 -> 895604 bytes .../latex2e-first-aid-for-external-files.dtx | 25 +- .../latex2e-first-aid-for-external-files.pdf | Bin 240432 -> 268421 bytes .../biblatex-contrib/biblatex-publist/README | 3 + .../biblatex-publist/biblatex-publist.pdf | Bin 374962 -> 375557 bytes .../biblatex-publist/biblatex-publist.tex | 28 +- .../biblatex-contrib/biblatex-publist/publist.bbx | 28 +- .../biblatex-contrib/biblatex-publist/publist.cbx | 4 +- macros/latex/contrib/clicks/LICENSE.txt | 21 + macros/latex/contrib/clicks/README.md | 5 +- macros/latex/contrib/clicks/clicks.dtx | 234 + macros/latex/contrib/clicks/clicks.ins | 55 + macros/latex/contrib/clicks/clicks.pdf | Bin 261653 -> 243984 bytes macros/latex/contrib/clicks/clicks.sty | 82 - macros/latex/contrib/clicks/clicks.tex | 92 - macros/latex/contrib/crumbs/DEPENDS.txt | 2 +- macros/latex/contrib/crumbs/LICENSE.txt | 21 + macros/latex/contrib/crumbs/README.md | 3 +- macros/latex/contrib/crumbs/crumbs.dtx | 351 + macros/latex/contrib/crumbs/crumbs.ins | 55 + macros/latex/contrib/crumbs/crumbs.pdf | Bin 352858 -> 256895 bytes macros/latex/contrib/crumbs/crumbs.sty | 120 - macros/latex/contrib/crumbs/crumbs.tex | 155 - macros/latex/contrib/debate/DEPENDS.txt | 5 +- macros/latex/contrib/debate/LICENSE.txt | 21 + macros/latex/contrib/debate/README.md | 3 +- macros/latex/contrib/debate/debate.dtx | 178 + macros/latex/contrib/debate/debate.ins | 55 + macros/latex/contrib/debate/debate.pdf | Bin 235941 -> 328802 bytes macros/latex/contrib/debate/debate.sty | 53 - macros/latex/contrib/debate/debate.tex | 80 - macros/latex/contrib/ffcode/DEPENDS.txt | 2 + macros/latex/contrib/ffcode/LICENSE.txt | 21 + macros/latex/contrib/ffcode/README.md | 3 +- macros/latex/contrib/ffcode/ffcode.dtx | 383 + macros/latex/contrib/ffcode/ffcode.ins | 55 + macros/latex/contrib/ffcode/ffcode.pdf | Bin 224529 -> 395644 bytes macros/latex/contrib/ffcode/ffcode.sty | 100 - macros/latex/contrib/ffcode/ffcode.tex | 155 - macros/latex/contrib/href-ul/LICENSE.txt | 21 + macros/latex/contrib/href-ul/README.md | 5 +- macros/latex/contrib/href-ul/href-ul.dtx | 144 + macros/latex/contrib/href-ul/href-ul.ins | 55 + macros/latex/contrib/href-ul/href-ul.pdf | Bin 49130 -> 229763 bytes macros/latex/contrib/href-ul/href-ul.sty | 40 - macros/latex/contrib/href-ul/href-ul.tex | 70 - .../latex/contrib/proflycee/doc/ProfLycee-doc.pdf | Bin 852659 -> 861172 bytes .../latex/contrib/proflycee/doc/ProfLycee-doc.tex | 1488 +- macros/latex/contrib/proflycee/tex/ProfLycee.sty | 22 +- macros/latex/contrib/teubner/README | 3 +- macros/latex/contrib/teubner/teubner-doc.pdf | Bin 431632 -> 432909 bytes macros/latex/contrib/teubner/teubner-doc.tex | 26 +- macros/latex/contrib/teubner/teubner.dtx | 63 +- macros/latex/contrib/teubner/teubner.pdf | Bin 670679 -> 671724 bytes macros/latex/contrib/teubner/teubner.txt | 25 +- macros/latex/contrib/to-be-determined/DEPENDS.txt | 3 +- macros/latex/contrib/to-be-determined/LICENSE.txt | 21 + macros/latex/contrib/to-be-determined/README.md | 3 +- .../contrib/to-be-determined/to-be-determined.dtx | 166 + .../contrib/to-be-determined/to-be-determined.ins | 55 + .../contrib/to-be-determined/to-be-determined.pdf | Bin 102667 -> 232654 bytes .../contrib/to-be-determined/to-be-determined.sty | 49 - .../contrib/to-be-determined/to-be-determined.tex | 70 - macros/luatex/generic/luaotfload/NEWS | 5 + macros/luatex/generic/luaotfload/README.md | 4 +- macros/luatex/generic/luaotfload/filegraph.pdf | Bin 40019 -> 40007 bytes .../generic/luaotfload/fontloader-2022-06-15.lua | 35995 ------------------ .../generic/luaotfload/fontloader-2022-10-03.lua | 36060 +++++++++++++++++++ .../generic/luaotfload/fontloader-font-cff.lua | 122 +- .../generic/luaotfload/fontloader-font-dsp.lua | 3 + .../generic/luaotfload/fontloader-font-osd.lua | 18 +- .../generic/luaotfload/fontloader-l-math.lua | 14 +- .../generic/luaotfload/fontloader-reference.lua | 141 +- .../generic/luaotfload/luaotfload-auxiliary.lua | 61 +- .../luatex/generic/luaotfload/luaotfload-bcp47.lua | 21 +- .../luatex/generic/luaotfload/luaotfload-case.lua | 41 + .../generic/luaotfload/luaotfload-colors.lua | 4 +- .../luatex/generic/luaotfload/luaotfload-conf.pdf | Bin 77540 -> 77520 bytes .../luaotfload/luaotfload-configuration.lua | 4 +- .../generic/luaotfload/luaotfload-database.lua | 4 +- .../generic/luaotfload/luaotfload-diagnostics.lua | 4 +- .../luatex/generic/luaotfload/luaotfload-dvi.lua | 71 +- .../generic/luaotfload/luaotfload-embolden.lua | 4 +- .../generic/luaotfload/luaotfload-fallback.lua | 4 +- .../generic/luaotfload/luaotfload-features.lua | 6 +- .../generic/luaotfload/luaotfload-filelist.lua | 4 +- .../generic/luaotfload/luaotfload-glyphlist.lua | 4 +- .../generic/luaotfload/luaotfload-harf-define.lua | 5 +- .../generic/luaotfload/luaotfload-harf-plug.lua | 6 +- .../luaotfload/luaotfload-harf-var-cff2.lua | 4 +- .../luaotfload/luaotfload-harf-var-t2-writer.lua | 4 +- .../generic/luaotfload/luaotfload-harf-var-ttf.lua | 4 +- .../generic/luaotfload/luaotfload-hashing.lua | 2 - .../luatex/generic/luaotfload/luaotfload-init.lua | 4 +- .../luatex/generic/luaotfload/luaotfload-latex.pdf | Bin 495247 -> 500170 bytes .../generic/luaotfload/luaotfload-letterspace.lua | 4 +- .../generic/luaotfload/luaotfload-loaders.lua | 4 +- .../luatex/generic/luaotfload/luaotfload-log.lua | 4 +- .../luatex/generic/luaotfload/luaotfload-main.tex | 9 +- .../generic/luaotfload/luaotfload-multiscript.lua | 4 +- .../generic/luaotfload/luaotfload-notdef.lua | 4 +- .../generic/luaotfload/luaotfload-parsers.lua | 8 +- .../generic/luaotfload/luaotfload-resolvers.lua | 4 +- .../generic/luaotfload/luaotfload-scripts.lua | 4 +- .../generic/luaotfload/luaotfload-status.lua | 74 +- .../generic/luaotfload/luaotfload-suppress.lua | 4 +- .../luatex/generic/luaotfload/luaotfload-szss.lua | 4 +- macros/luatex/generic/luaotfload/luaotfload-t3.lua | 142 - macros/luatex/generic/luaotfload/luaotfload-tool.1 | 44 +- .../luatex/generic/luaotfload/luaotfload-tool.lua | 4 +- .../luatex/generic/luaotfload/luaotfload-tool.pdf | Bin 76805 -> 76791 bytes .../luatex/generic/luaotfload/luaotfload-tool.rst | 4 +- .../generic/luaotfload/luaotfload-tounicode.lua | 4 +- .../generic/luaotfload/luaotfload-unicode.lua | 4 +- macros/luatex/generic/luaotfload/luaotfload.conf.5 | 28 +- .../luatex/generic/luaotfload/luaotfload.conf.rst | 4 +- macros/luatex/generic/luaotfload/luaotfload.lua | 4 +- macros/luatex/generic/luaotfload/luaotfload.sty | 2 +- macros/luatex/generic/luaotfload/scripts-demo.pdf | Bin 19082 -> 21682 bytes .../generic/luaotfload/shaper-demo-graphite.pdf | Bin 8560 -> 8562 bytes macros/luatex/generic/luaotfload/shaper-demo.pdf | Bin 8481 -> 8478 bytes .../luatex/latex/japanese-mathformulas/README.txt | 29 + .../japanese-mathformulas-sample.pdf | Bin 0 -> 132535 bytes .../japanese-mathformulas-sample.tex | 275 + .../japanese-mathformulas.pdf | Bin 0 -> 536610 bytes .../japanese-mathformulas.sty | 3779 ++ .../japanese-mathformulas.tex | 1867 + macros/luatex/latex/letgut/README.md | 2 +- .../luatex/latex/letgut/doc/letgut-banner-code.pdf | Bin 154184 -> 154201 bytes macros/luatex/latex/letgut/doc/letgut-code.pdf | Bin 690506 -> 702257 bytes macros/luatex/latex/letgut/doc/letgut.pdf | Bin 366699 -> 379438 bytes macros/luatex/latex/letgut/doc/letgut.tex | 136 +- macros/luatex/latex/letgut/doc/localconf.tex | 24 +- macros/luatex/latex/letgut/source/letgut.org | 523 +- support/TeX4ht/source/ChangeLog | 4 + support/TeX4ht/source/tex4ht-4ht.tex | 11 +- systems/win32/miktex/tm/packages/next/pr.ini | 8 +- systems/win32/miktex/tm/packages/pr.ini | 8 +- timestamp | 2 +- 159 files changed, 60465 insertions(+), 44923 deletions(-) create mode 100644 biblio/bibtex/contrib/gbt7714/DEPENDS.txt create mode 100644 biblio/bibtex/contrib/gbt7714/gbt7714.dtx create mode 100644 macros/latex/contrib/clicks/LICENSE.txt create mode 100644 macros/latex/contrib/clicks/clicks.dtx create mode 100644 macros/latex/contrib/clicks/clicks.ins delete mode 100644 macros/latex/contrib/clicks/clicks.sty delete mode 100644 macros/latex/contrib/clicks/clicks.tex create mode 100644 macros/latex/contrib/crumbs/LICENSE.txt create mode 100644 macros/latex/contrib/crumbs/crumbs.dtx create mode 100644 macros/latex/contrib/crumbs/crumbs.ins delete mode 100644 macros/latex/contrib/crumbs/crumbs.sty delete mode 100644 macros/latex/contrib/crumbs/crumbs.tex create mode 100644 macros/latex/contrib/debate/LICENSE.txt create mode 100644 macros/latex/contrib/debate/debate.dtx create mode 100644 macros/latex/contrib/debate/debate.ins delete mode 100644 macros/latex/contrib/debate/debate.sty delete mode 100644 macros/latex/contrib/debate/debate.tex create mode 100644 macros/latex/contrib/ffcode/LICENSE.txt create mode 100644 macros/latex/contrib/ffcode/ffcode.dtx create mode 100644 macros/latex/contrib/ffcode/ffcode.ins delete mode 100644 macros/latex/contrib/ffcode/ffcode.sty delete mode 100644 macros/latex/contrib/ffcode/ffcode.tex create mode 100644 macros/latex/contrib/href-ul/LICENSE.txt create mode 100644 macros/latex/contrib/href-ul/href-ul.dtx create mode 100644 macros/latex/contrib/href-ul/href-ul.ins delete mode 100644 macros/latex/contrib/href-ul/href-ul.sty delete mode 100644 macros/latex/contrib/href-ul/href-ul.tex create mode 100644 macros/latex/contrib/to-be-determined/LICENSE.txt create mode 100644 macros/latex/contrib/to-be-determined/to-be-determined.dtx create mode 100644 macros/latex/contrib/to-be-determined/to-be-determined.ins delete mode 100644 macros/latex/contrib/to-be-determined/to-be-determined.sty delete mode 100644 macros/latex/contrib/to-be-determined/to-be-determined.tex delete mode 100644 macros/luatex/generic/luaotfload/fontloader-2022-06-15.lua create mode 100644 macros/luatex/generic/luaotfload/fontloader-2022-10-03.lua delete mode 100644 macros/luatex/generic/luaotfload/luaotfload-hashing.lua delete mode 100644 macros/luatex/generic/luaotfload/luaotfload-t3.lua create mode 100644 macros/luatex/latex/japanese-mathformulas/README.txt create mode 100644 macros/luatex/latex/japanese-mathformulas/japanese-mathformulas-sample.pdf create mode 100644 macros/luatex/latex/japanese-mathformulas/japanese-mathformulas-sample.tex create mode 100644 macros/luatex/latex/japanese-mathformulas/japanese-mathformulas.pdf create mode 100644 macros/luatex/latex/japanese-mathformulas/japanese-mathformulas.sty create mode 100644 macros/luatex/latex/japanese-mathformulas/japanese-mathformulas.tex diff --git a/FILES.byname b/FILES.byname index 68676c435f..7855cdda61 100644 --- a/FILES.byname +++ b/FILES.byname @@ -631,15 +631,17 @@ 2013/05/12 | 35994 | biblio/bibtex/contrib/francais-bst/francaissc.bst 2013/05/12 | 3356 | biblio/bibtex/contrib/francais-bst/README 2013/05/12 | 17911 | biblio/bibtex/contrib/francais-bst.zip -2022/03/21 | 7896 | biblio/bibtex/contrib/gbt7714/CHANGELOG.md -2022/03/21 | 49811 | biblio/bibtex/contrib/gbt7714/gbt7714-2005-author-year.bst -2022/03/21 | 46027 | biblio/bibtex/contrib/gbt7714/gbt7714-2005-numerical.bst -2022/03/21 | 49810 | biblio/bibtex/contrib/gbt7714/gbt7714-author-year.bst -2022/03/21 | 46026 | biblio/bibtex/contrib/gbt7714/gbt7714-numerical.bst -2022/03/21 | 486968 | biblio/bibtex/contrib/gbt7714/gbt7714.pdf -2022/03/21 | 10621 | biblio/bibtex/contrib/gbt7714/gbt7714.sty -2021/12/12 | 7222 | biblio/bibtex/contrib/gbt7714/README.md -2022/03/21 | 520798 | biblio/bibtex/contrib/gbt7714.zip +2022/10/03 | 8217 | biblio/bibtex/contrib/gbt7714/CHANGELOG.md +2022/10/03 | 126 | biblio/bibtex/contrib/gbt7714/DEPENDS.txt +2022/10/03 | 49879 | biblio/bibtex/contrib/gbt7714/gbt7714-2005-author-year.bst +2022/10/03 | 46095 | biblio/bibtex/contrib/gbt7714/gbt7714-2005-numerical.bst +2022/10/03 | 49878 | biblio/bibtex/contrib/gbt7714/gbt7714-author-year.bst +2022/10/03 | 120955 | biblio/bibtex/contrib/gbt7714/gbt7714.dtx +2022/10/03 | 46094 | biblio/bibtex/contrib/gbt7714/gbt7714-numerical.bst +2022/10/03 | 487773 | biblio/bibtex/contrib/gbt7714/gbt7714.pdf +2022/10/03 | 10621 | biblio/bibtex/contrib/gbt7714/gbt7714.sty +2022/10/03 | 7215 | biblio/bibtex/contrib/gbt7714/README.md +2022/10/03 | 553308 | biblio/bibtex/contrib/gbt7714.zip 2006/02/13 | 51513 | biblio/bibtex/contrib/german/din1505/abbrvdin.bst 2006/02/13 | 55981 | biblio/bibtex/contrib/german/din1505/alphadin.bst 2004/12/22 | 168623 | biblio/bibtex/contrib/german/din1505/leitbild3.pdf @@ -5409,7 +5411,7 @@ 1990/10/02 | 5440 | dviware/vutex/vaxvms.hlp 1990/10/02 | 812 | dviware/vutex/vaxvms.ins 1990/10/02 | 127576 | dviware/vutex/vutex.web -2022/10/02 | 69997 | FILES.last07days +2022/10/03 | 93299 | FILES.last07days 2021/07/24 | 1139410 | fonts/aboensis/Aboensis.glyphs 2021/07/24 | 18907382 | fonts/aboensis/aboensis.pdf 2021/07/24 | 137860 | fonts/aboensis/Aboensis-Regular.otf @@ -189148,7 +189150,7 @@ 2021/09/21 | 514924 | install/macros/generic/expkv.tds.zip 2022/02/04 | 232668 | install/macros/generic/iftex.tds.zip 2012/09/20 | 321508 | install/macros/generic/langcode.tds.zip -2022/10/01 | 1281969 | install/macros/generic/markdown.tds.zip +2022/10/03 | 1295994 | install/macros/generic/markdown.tds.zip 2014/06/11 | 428488 | install/macros/generic/mathdots.tds.zip 2014/01/02 | 496633 | install/macros/generic/minifp.tds.zip 2012/09/20 | 369585 | install/macros/generic/plainpkg.tds.zip @@ -189468,7 +189470,7 @@ 2022/05/28 | 1626594 | install/macros/latex/contrib/zref-clever.tds.zip 2022/09/23 | 38961369 | install/macros/latex-dev/latex-base-dev.tds.zip 2022/06/16 | 2795156 | install/macros/latex-dev/required/latex-amsmath-dev.tds.zip -2022/03/15 | 246503 | install/macros/latex-dev/required/latex-firstaid-dev.tds.zip +2022/09/23 | 274400 | install/macros/latex-dev/required/latex-firstaid-dev.tds.zip 2022/06/16 | 3110800 | install/macros/latex-dev/required/latex-graphics-dev.tds.zip 2022/05/19 | 2829818 | install/macros/latex-dev/required/latex-lab-dev.tds.zip 2022/09/23 | 7340097 | install/macros/latex-dev/required/latex-tools-dev.tds.zip @@ -189486,13 +189488,13 @@ 2015/10/01 | 154538 | install/macros/luatex/generic/ctablestack.tds.zip 2021/05/21 | 273734 | install/macros/luatex/generic/lualibs.tds.zip 2022/01/12 | 202258 | install/macros/luatex/generic/luamplib.tds.zip -2022/06/15 | 1966772 | install/macros/luatex/generic/luaotfload.tds.zip +2022/10/03 | 1974313 | install/macros/luatex/generic/luaotfload.tds.zip 2015/10/04 | 277014 | install/macros/luatex/generic/luatexbase.tds.zip 2022/08/24 | 844430 | install/macros/luatex/generic/lua-widow-control.tds.zip 2020/03/23 | 891718 | install/macros/luatex/latex/arabluatex.tds.zip 2021/11/21 | 970369 | install/macros/luatex/latex/ekdosis.tds.zip 2021/07/17 | 1183440 | install/macros/luatex/latex/emoji.tds.zip -2022/09/02 | 1401683 | install/macros/luatex/latex/letgut.tds.zip +2022/10/03 | 1430525 | install/macros/luatex/latex/letgut.tds.zip 2013/09/26 | 155171 | install/macros/luatex/latex/luabibentry.tds.zip 2012/01/23 | 423265 | install/macros/luatex/latex/luacode.tds.zip 2010/11/19 | 426632 | install/macros/luatex/latex/luainputenc.tds.zip @@ -197925,23 +197927,23 @@ 2016/06/15 | 170646 | macros/generic/luatex85/luatex85.pdf 2016/06/15 | 316 | macros/generic/luatex85/README.md 2016/06/15 | 173375 | macros/generic/luatex85.zip -2022/10/01 | 26269 | macros/generic/markdown/CHANGES.md -2022/10/01 | 4377 | macros/generic/markdown/docstrip.cfg -2022/10/01 | 1508 | macros/generic/markdown/examples/context-mkii.tex -2022/10/01 | 1699 | macros/generic/markdown/examples/context-mkiv.tex -2022/10/01 | 3561 | macros/generic/markdown/examples/example.md -2022/10/01 | 1737 | macros/generic/markdown/examples/latex.tex -2022/10/01 | 75 | macros/generic/markdown/examples/scientists.csv -2022/10/01 | 22371 | macros/generic/markdown/libraries/markdown-tinyyaml.lua -2022/10/01 | 4530 | macros/generic/markdown/markdown.css -2022/10/01 | 687161 | macros/generic/markdown/markdown.dtx -2022/10/01 | 733155 | macros/generic/markdown/markdown.html -2022/10/01 | 1333 | macros/generic/markdown/markdown.ins -2022/10/01 | 888520 | macros/generic/markdown/markdown.pdf -2022/10/01 | 140951 | macros/generic/markdown/markdown.png -2022/10/01 | 17604 | macros/generic/markdown/README.md -2022/10/01 | 31 | macros/generic/markdown/VERSION -2022/10/01 | 1215194 | macros/generic/markdown.zip +2022/10/03 | 26896 | macros/generic/markdown/CHANGES.md +2022/10/03 | 4377 | macros/generic/markdown/docstrip.cfg +2022/10/03 | 1535 | macros/generic/markdown/examples/context-mkii.tex +2022/10/03 | 1726 | macros/generic/markdown/examples/context-mkiv.tex +2022/10/03 | 3561 | macros/generic/markdown/examples/example.md +2022/10/03 | 1756 | macros/generic/markdown/examples/latex.tex +2022/10/03 | 75 | macros/generic/markdown/examples/scientists.csv +2022/10/03 | 22371 | macros/generic/markdown/libraries/markdown-tinyyaml.lua +2022/10/03 | 4530 | macros/generic/markdown/markdown.css +2022/10/03 | 697091 | macros/generic/markdown/markdown.dtx +2022/10/03 | 804453 | macros/generic/markdown/markdown.html +2022/10/03 | 1333 | macros/generic/markdown/markdown.ins +2022/10/03 | 895604 | macros/generic/markdown/markdown.pdf +2022/10/03 | 140951 | macros/generic/markdown/markdown.png +2022/10/03 | 17604 | macros/generic/markdown/README.md +2022/10/03 | 31 | macros/generic/markdown/VERSION +2022/10/03 | 1228403 | macros/generic/markdown.zip 2014/06/11 | 20744 | macros/generic/mathdots/mathdots.dtx 2014/06/11 | 1203 | macros/generic/mathdots/mathdots.ins 2014/06/11 | 258547 | macros/generic/mathdots/mathdots.pdf @@ -209393,13 +209395,13 @@ 2019/12/03 | 1387 | macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.dbx 2019/12/03 | 655 | macros/latex/contrib/biblatex-contrib/biblatex-phys/README.md 2019/12/03 | 459931 | macros/latex/contrib/biblatex-contrib/biblatex-phys.zip -2022/01/05 | 374962 | macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf -2022/01/05 | 44019 | macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex -2022/01/05 | 46118 | macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx -2022/01/05 | 2476 | macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx +2022/10/03 | 375557 | macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf +2022/10/03 | 44587 | macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex +2022/10/03 | 45834 | macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx +2022/10/03 | 2476 | macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx 2022/01/05 | 924 | macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.dbx -2022/01/05 | 7613 | macros/latex/contrib/biblatex-contrib/biblatex-publist/README -2022/01/05 | 400053 | macros/latex/contrib/biblatex-contrib/biblatex-publist.zip +2022/10/03 | 7703 | macros/latex/contrib/biblatex-contrib/biblatex-publist/README +2022/10/03 | 400818 | macros/latex/contrib/biblatex-contrib/biblatex-publist.zip 2022/01/09 | 41 | macros/latex/contrib/biblatex-contrib/biblatex-readbbl/Changes 2022/01/09 | 25895 | macros/latex/contrib/biblatex-contrib/biblatex-readbbl/doc/biblatex-readbbl.pdf 2022/01/09 | 5095 | macros/latex/contrib/biblatex-contrib/biblatex-readbbl/doc/biblatex-readbbl.tex @@ -211893,12 +211895,13 @@ 2018/03/27 | 443693 | macros/latex/contrib/cleveref/cleveref.pdf 2018/03/03 | 2337 | macros/latex/contrib/cleveref/README 2018/04/19 | 486069 | macros/latex/contrib/cleveref.zip -2022/09/13 | 261653 | macros/latex/contrib/clicks/clicks.pdf -2022/09/13 | 2405 | macros/latex/contrib/clicks/clicks.sty -2022/09/13 | 3146 | macros/latex/contrib/clicks/clicks.tex -2022/09/13 | 27 | macros/latex/contrib/clicks/DEPENDS.txt -2022/09/13 | 1258 | macros/latex/contrib/clicks/README.md -2022/09/13 | 264699 | macros/latex/contrib/clicks.zip +2022/10/03 | 6391 | macros/latex/contrib/clicks/clicks.dtx +2022/10/03 | 2644 | macros/latex/contrib/clicks/clicks.ins +2022/10/03 | 243984 | macros/latex/contrib/clicks/clicks.pdf +2022/10/03 | 27 | macros/latex/contrib/clicks/DEPENDS.txt +2022/10/03 | 1083 | macros/latex/contrib/clicks/LICENSE.txt +2022/10/03 | 1121 | macros/latex/contrib/clicks/README.md +2022/10/03 | 247188 | macros/latex/contrib/clicks.zip 2018/05/18 | 170869 | macros/latex/contrib/clipboard/clipboard.pdf 2018/05/16 | 1255 | macros/latex/contrib/clipboard/clipboard.sty 2018/05/16 | 3597 | macros/latex/contrib/clipboard/clipboard.tex @@ -212675,12 +212678,13 @@ 2010/02/01 | 239279 | macros/latex/contrib/crosswrd/crosswrd.pdf 2010/02/01 | 2398 | macros/latex/contrib/crosswrd/README 2010/02/01 | 234083 | macros/latex/contrib/crosswrd.zip -2022/09/21 | 352858 | macros/latex/contrib/crumbs/crumbs.pdf -2022/09/21 | 4539 | macros/latex/contrib/crumbs/crumbs.sty -2022/09/21 | 5124 | macros/latex/contrib/crumbs/crumbs.tex -2022/09/21 | 42 | macros/latex/contrib/crumbs/DEPENDS.txt -2022/09/21 | 1207 | macros/latex/contrib/crumbs/README.md -2022/09/21 | 356316 | macros/latex/contrib/crumbs.zip +2022/10/03 | 10888 | macros/latex/contrib/crumbs/crumbs.dtx +2022/10/03 | 2644 | macros/latex/contrib/crumbs/crumbs.ins +2022/10/03 | 256895 | macros/latex/contrib/crumbs/crumbs.pdf +2022/10/03 | 41 | macros/latex/contrib/crumbs/DEPENDS.txt +2022/10/03 | 1083 | macros/latex/contrib/crumbs/LICENSE.txt +2022/10/03 | 1284 | macros/latex/contrib/crumbs/README.md +2022/10/03 | 260964 | macros/latex/contrib/crumbs.zip 2020/07/10 | 75696 | macros/latex/contrib/cryptocode/cryptocode-2018-11-11.sty 2020/07/10 | 77437 | macros/latex/contrib/cryptocode/cryptocode-2020-04-24.sty 2021/08/15 | 298255 | macros/latex/contrib/cryptocode/cryptocode.dtx @@ -213397,12 +213401,13 @@ 2019/09/01 | 7446 | macros/latex/contrib/ddphonism/ddphonism.tex 2019/09/01 | 884 | macros/latex/contrib/ddphonism/README.md 2019/09/01 | 285321 | macros/latex/contrib/ddphonism.zip -2021/10/10 | 235941 | macros/latex/contrib/debate/debate.pdf -2021/10/10 | 1989 | macros/latex/contrib/debate/debate.sty -2021/10/10 | 2439 | macros/latex/contrib/debate/debate.tex -2021/10/10 | 40 | macros/latex/contrib/debate/DEPENDS.txt -2021/10/10 | 1185 | macros/latex/contrib/debate/README.md -2021/10/10 | 237088 | macros/latex/contrib/debate.zip +2022/10/03 | 5086 | macros/latex/contrib/debate/debate.dtx +2022/10/03 | 2644 | macros/latex/contrib/debate/debate.ins +2022/10/03 | 328802 | macros/latex/contrib/debate/debate.pdf +2022/10/03 | 83 | macros/latex/contrib/debate/DEPENDS.txt +2022/10/03 | 1083 | macros/latex/contrib/debate/LICENSE.txt +2022/10/03 | 1262 | macros/latex/contrib/debate/README.md +2022/10/03 | 329599 | macros/latex/contrib/debate.zip 2011/06/05 | 14683 | macros/latex/contrib/decimal/decimal.dtx 2011/06/05 | 1577 | macros/latex/contrib/decimal/decimal.ins 2011/06/05 | 187033 | macros/latex/contrib/decimal/decimal.pdf @@ -216304,12 +216309,13 @@ 2013/05/03 | 374250 | macros/latex/contrib/feynmp-auto/feynmp-auto.pdf 2013/05/03 | 1652 | macros/latex/contrib/feynmp-auto/README 2013/05/03 | 378807 | macros/latex/contrib/feynmp-auto.zip -2022/09/12 | 40 | macros/latex/contrib/ffcode/DEPENDS.txt -2022/09/12 | 224529 | macros/latex/contrib/ffcode/ffcode.pdf -2022/09/12 | 3230 | macros/latex/contrib/ffcode/ffcode.sty -2022/09/12 | 4480 | macros/latex/contrib/ffcode/ffcode.tex -2022/09/12 | 1274 | macros/latex/contrib/ffcode/README.md -2022/09/12 | 227668 | macros/latex/contrib/ffcode.zip +2022/10/03 | 62 | macros/latex/contrib/ffcode/DEPENDS.txt +2022/10/03 | 9582 | macros/latex/contrib/ffcode/ffcode.dtx +2022/10/03 | 2644 | macros/latex/contrib/ffcode/ffcode.ins +2022/10/03 | 395644 | macros/latex/contrib/ffcode/ffcode.pdf +2022/10/03 | 1083 | macros/latex/contrib/ffcode/LICENSE.txt +2022/10/03 | 1351 | macros/latex/contrib/ffcode/README.md +2022/10/03 | 398411 | macros/latex/contrib/ffcode.zip 2015/10/21 | 398 | macros/latex/contrib/ffslides/bground-example.txt 2015/11/19 | 15305 | macros/latex/contrib/ffslides/ffslides.cls 2015/11/19 | 2747893 | macros/latex/contrib/ffslides/ffslides-doc.pdf @@ -219172,12 +219178,13 @@ 2011/04/29 | 319943 | macros/latex/contrib/hrefhide/hrefhide.pdf 2011/04/29 | 4295 | macros/latex/contrib/hrefhide/README 2011/04/29 | 441688 | macros/latex/contrib/hrefhide.zip -2021/06/13 | 24 | macros/latex/contrib/href-ul/DEPENDS.txt -2021/06/13 | 49130 | macros/latex/contrib/href-ul/href-ul.pdf -2021/06/13 | 1515 | macros/latex/contrib/href-ul/href-ul.sty -2021/06/13 | 2422 | macros/latex/contrib/href-ul/href-ul.tex -2021/06/13 | 1164 | macros/latex/contrib/href-ul/README.md -2021/06/13 | 51933 | macros/latex/contrib/href-ul.zip +2022/10/03 | 24 | macros/latex/contrib/href-ul/DEPENDS.txt +2022/10/03 | 4269 | macros/latex/contrib/href-ul/href-ul.dtx +2022/10/03 | 2647 | macros/latex/contrib/href-ul/href-ul.ins +2022/10/03 | 229763 | macros/latex/contrib/href-ul/href-ul.pdf +2022/10/03 | 1083 | macros/latex/contrib/href-ul/LICENSE.txt +2022/10/03 | 1248 | macros/latex/contrib/href-ul/README.md +2022/10/03 | 232639 | macros/latex/contrib/href-ul.zip 2021/11/11 | 451 | macros/latex/contrib/huawei/DEPENDS.txt 2021/11/11 | 18504 | macros/latex/contrib/huawei/huawei.cls 2021/11/11 | 253724 | macros/latex/contrib/huawei/huawei-cover-picture.pdf @@ -227005,21 +227012,21 @@ 2022/04/26 | 323 | macros/latex/contrib/proflabo/README.md 2022/04/26 | 9327 | macros/latex/contrib/proflabo/tex/ProfLabo.sty 2022/04/26 | 136164 | macros/latex/contrib/proflabo.zip -2022/10/01 | 32 | macros/latex/contrib/proflycee/doc/basique.csv -2022/10/01 | 968 | macros/latex/contrib/proflycee/doc/cap.csv +2022/10/03 | 32 | macros/latex/contrib/proflycee/doc/basique.csv +2022/10/03 | 968 | macros/latex/contrib/proflycee/doc/cap.csv 2022/06/28 | 9278 | macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_a.png 2022/06/28 | 13958 | macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_b.png 2022/06/28 | 9989 | macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c2.png 2022/06/28 | 11759 | macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_c.png 2022/06/28 | 7316 | macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_d.png 2022/06/28 | 9599 | macros/latex/contrib/proflycee/doc/graphics/pl-doc-stats_e.png -2022/10/01 | 736 | macros/latex/contrib/proflycee/doc/perroquet.csv -2022/10/01 | 852659 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf -2022/10/01 | 161293 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex -2022/10/01 | 529 | macros/latex/contrib/proflycee/doc/testscript.py +2022/10/03 | 736 | macros/latex/contrib/proflycee/doc/perroquet.csv +2022/10/03 | 861172 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf +2022/10/03 | 162285 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex +2022/10/03 | 529 | macros/latex/contrib/proflycee/doc/testscript.py 2022/08/10 | 439 | macros/latex/contrib/proflycee/README.md -2022/10/01 | 78071 | macros/latex/contrib/proflycee/tex/ProfLycee.sty -2022/10/01 | 944788 | macros/latex/contrib/proflycee.zip +2022/10/03 | 78322 | macros/latex/contrib/proflycee/tex/ProfLycee.sty +2022/10/03 | 954036 | macros/latex/contrib/proflycee.zip 1996/02/05 | 1760 | macros/latex/contrib/progkeys/demo/demo.tex 1996/02/05 | 459 | macros/latex/contrib/progkeys/demo/prog1.tex 1996/02/05 | 347 | macros/latex/contrib/progkeys/demo/prog2.tex @@ -231766,13 +231773,13 @@ 2019/09/29 | 326696 | macros/latex/contrib/testidx/testidx-manual.pdf 2019/09/29 | 44121 | macros/latex/contrib/testidx/testidx-manual.tex 2019/09/29 | 5250133 | macros/latex/contrib/testidx.zip -2022/10/01 | 2483 | macros/latex/contrib/teubner/README -2022/10/01 | 431632 | macros/latex/contrib/teubner/teubner-doc.pdf -2022/10/01 | 92792 | macros/latex/contrib/teubner/teubner-doc.tex -2022/10/01 | 164470 | macros/latex/contrib/teubner/teubner.dtx -2022/10/01 | 670679 | macros/latex/contrib/teubner/teubner.pdf -2022/10/01 | 9942 | macros/latex/contrib/teubner/teubner.txt -2022/10/01 | 1155211 | macros/latex/contrib/teubner.zip +2022/10/02 | 2496 | macros/latex/contrib/teubner/README +2022/10/03 | 432909 | macros/latex/contrib/teubner/teubner-doc.pdf +2022/10/03 | 92998 | macros/latex/contrib/teubner/teubner-doc.tex +2022/10/03 | 165212 | macros/latex/contrib/teubner/teubner.dtx +2022/10/03 | 671724 | macros/latex/contrib/teubner/teubner.pdf +2022/10/03 | 9946 | macros/latex/contrib/teubner/teubner.txt +2022/10/03 | 1157851 | macros/latex/contrib/teubner.zip 1999/05/12 | 1605 | macros/latex/contrib/TeXemplar/readme 1999/05/12 | 23360 | macros/latex/contrib/TeXemplar/TeXemplar.cls 2005/04/28 | 7993 | macros/latex/contrib/TeXemplar.zip @@ -232968,12 +232975,13 @@ 2019/06/20 | 14652 | macros/latex/contrib/tlc-article/tlc-article.tex 2019/06/20 | 24 | macros/latex/contrib/tlc-article/tlc-article.texx 2019/06/23 | 444208 | macros/latex/contrib/tlc-article.zip -2021/09/22 | 35 | macros/latex/contrib/to-be-determined/DEPENDS.txt -2021/09/22 | 1298 | macros/latex/contrib/to-be-determined/README.md -2021/09/22 | 102667 | macros/latex/contrib/to-be-determined/to-be-determined.pdf -2021/09/22 | 1648 | macros/latex/contrib/to-be-determined/to-be-determined.sty -2021/09/22 | 2325 | macros/latex/contrib/to-be-determined/to-be-determined.tex -2021/09/22 | 106046 | macros/latex/contrib/to-be-determined.zip +2022/10/03 | 21 | macros/latex/contrib/to-be-determined/DEPENDS.txt +2022/10/03 | 1083 | macros/latex/contrib/to-be-determined/LICENSE.txt +2022/10/03 | 1395 | macros/latex/contrib/to-be-determined/README.md +2022/10/03 | 4708 | macros/latex/contrib/to-be-determined/to-be-determined.dtx +2022/10/03 | 2674 | macros/latex/contrib/to-be-determined/to-be-determined.ins +2022/10/03 | 232654 | macros/latex/contrib/to-be-determined/to-be-determined.pdf +2022/10/03 | 235832 | macros/latex/contrib/to-be-determined.zip 2010/10/13 | 3382 | macros/latex/contrib/tocbibind/README 2010/10/13 | 44060 | macros/latex/contrib/tocbibind/tocbibind.dtx 2010/10/13 | 2497 | macros/latex/contrib/tocbibind/tocbibind.ins @@ -236504,12 +236512,12 @@ 2022/06/16 | 454511 | macros/latex-dev/required/amsmath/testmath.pdf 2022/06/16 | 82371 | macros/latex-dev/required/amsmath/testmath.tex 2022/06/17 | 2762706 | macros/latex-dev/required/amsmath.zip -2022/03/15 | 3700 | macros/latex-dev/required/firstaid/changes.txt -2022/03/15 | 2740 | macros/latex-dev/required/firstaid/firstaid.ins -2022/03/15 | 21465 | macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.dtx -2022/03/15 | 240432 | macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.pdf -2022/03/15 | 474 | macros/latex-dev/required/firstaid/README.md -2022/03/15 | 241804 | macros/latex-dev/required/firstaid.zip +2022/09/23 | 3700 | macros/latex-dev/required/firstaid/changes.txt +2022/09/23 | 2740 | macros/latex-dev/required/firstaid/firstaid.ins +2022/09/23 | 22269 | macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.dtx +2022/09/23 | 268421 | macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.pdf +2022/09/23 | 474 | macros/latex-dev/required/firstaid/README.md +2022/10/03 | 269492 | macros/latex-dev/required/firstaid.zip 2022/06/16 | 15737 | macros/latex-dev/required/graphics/cat.eps 2022/06/16 | 35381 | macros/latex-dev/required/graphics/changes.txt 2022/06/16 | 32194 | macros/latex-dev/required/graphics/color.dtx @@ -237302,126 +237310,124 @@ 2022/01/12 | 5611 | macros/luatex/generic/luamplib/test-luamplib-latex.tex 2022/01/12 | 3872 | macros/luatex/generic/luamplib/test-luamplib-plain.tex 2022/01/12 | 187673 | macros/luatex/generic/luamplib.zip -2022/06/15 | 18714 | macros/luatex/generic/luaotfload/COPYING -2022/06/15 | 40019 | macros/luatex/generic/luaotfload/filegraph.pdf -2022/06/15 | 8597 | macros/luatex/generic/luaotfload/filegraph.tex -2022/06/15 | 882794 | macros/luatex/generic/luaotfload/fontloader-2022-06-15.lua -2022/06/15 | 48728 | macros/luatex/generic/luaotfload/fontloader-basics-chr.lua -2022/06/15 | 12745 | macros/luatex/generic/luaotfload/fontloader-basics-gen.lua -2022/06/15 | 10207 | macros/luatex/generic/luaotfload/fontloader-basics-nod.lua -2022/06/15 | 5388 | macros/luatex/generic/luaotfload/fontloader-data-con.lua -2022/06/15 | 6866 | macros/luatex/generic/luaotfload/fontloader-font-afk.lua -2022/06/15 | 92210 | macros/luatex/generic/luaotfload/fontloader-font-cff.lua -2022/06/15 | 5502 | macros/luatex/generic/luaotfload/fontloader-font-cid.lua -2022/06/15 | 63211 | macros/luatex/generic/luaotfload/fontloader-font-con.lua -2022/06/15 | 19944 | macros/luatex/generic/luaotfload/fontloader-font-def.lua -2022/06/15 | 154228 | macros/luatex/generic/luaotfload/fontloader-font-dsp.lua -2022/06/15 | 12704 | macros/luatex/generic/luaotfload/fontloader-font-imp-effects.lua -2022/06/15 | 3693 | macros/luatex/generic/luaotfload/fontloader-font-imp-italics.lua -2022/06/15 | 3594 | macros/luatex/generic/luaotfload/fontloader-font-imp-ligatures.lua -2022/06/15 | 3406 | macros/luatex/generic/luaotfload/fontloader-font-imp-tex.lua -2022/06/15 | 1794 | macros/luatex/generic/luaotfload/fontloader-font-ini.lua -2022/06/15 | 1449 | macros/luatex/generic/luaotfload/fontloader-font-lua.lua -2022/06/15 | 19564 | macros/luatex/generic/luaotfload/fontloader-font-map.lua -2022/06/15 | 25264 | macros/luatex/generic/luaotfload/fontloader-font-ocl.lua -2022/06/15 | 31349 | macros/luatex/generic/luaotfload/fontloader-font-one.lua -2022/06/15 | 18717 | macros/luatex/generic/luaotfload/fontloader-font-onr.lua -2022/06/15 | 119949 | macros/luatex/generic/luaotfload/fontloader-font-osd.lua -2022/06/15 | 18411 | macros/luatex/generic/luaotfload/fontloader-font-ota.lua -2022/06/15 | 35836 | macros/luatex/generic/luaotfload/fontloader-font-otc.lua -2022/06/15 | 7904 | macros/luatex/generic/luaotfload/fontloader-font-oti.lua -2022/06/15 | 65279 | macros/luatex/generic/luaotfload/fontloader-font-otj.lua -2022/06/15 | 33960 | macros/luatex/generic/luaotfload/fontloader-font-otl.lua -2022/06/15 | 23238 | macros/luatex/generic/luaotfload/fontloader-font-oto.lua -2022/06/15 | 94462 | macros/luatex/generic/luaotfload/fontloader-font-otr.lua -2022/06/15 | 186209 | macros/luatex/generic/luaotfload/fontloader-font-ots.lua -2022/06/15 | 34922 | macros/luatex/generic/luaotfload/fontloader-font-ott.lua -2022/06/15 | 128092 | macros/luatex/generic/luaotfload/fontloader-font-oup.lua -2022/06/15 | 3821 | macros/luatex/generic/luaotfload/fontloader-fonts-def.lua -2022/06/15 | 2625 | macros/luatex/generic/luaotfload/fontloader-fonts-enc.lua -2022/06/15 | 7260 | macros/luatex/generic/luaotfload/fontloader-fonts-ext.lua -2022/06/15 | 9881 | macros/luatex/generic/luaotfload/fontloader-fonts-gbn.lua -2022/06/15 | 13525 | macros/luatex/generic/luaotfload/fontloader-font-shp.lua -2022/06/15 | 57342 | macros/luatex/generic/luaotfload/fontloader-fonts-lig.lua -2022/06/15 | 912 | macros/luatex/generic/luaotfload/fontloader-fonts-mis.lua -2022/06/15 | 3674 | macros/luatex/generic/luaotfload/fontloader-fonts-syn.lua -2022/06/15 | 23399 | macros/luatex/generic/luaotfload/fontloader-fonts-tfm.lua -2022/06/15 | 67011 | macros/luatex/generic/luaotfload/fontloader-font-ttf.lua -2022/06/15 | 2667 | macros/luatex/generic/luaotfload/fontloader-font-vfc.lua -2022/06/15 | 1850 | macros/luatex/generic/luaotfload/fontloader-l-boolean.lua -2022/06/15 | 22186 | macros/luatex/generic/luaotfload/fontloader-l-file.lua -2022/06/15 | 361 | macros/luatex/generic/luaotfload/fontloader-l-function.lua -2022/06/15 | 11988 | macros/luatex/generic/luaotfload/fontloader-l-io.lua -2022/06/15 | 38742 | macros/luatex/generic/luaotfload/fontloader-l-lpeg.lua -2022/06/15 | 6405 | macros/luatex/generic/luaotfload/fontloader-l-lua.lua -2022/06/15 | 2549 | macros/luatex/generic/luaotfload/fontloader-l-math.lua -2022/06/15 | 6644 | macros/luatex/generic/luaotfload/fontloader-l-string.lua -2022/06/15 | 41758 | macros/luatex/generic/luaotfload/fontloader-l-table.lua -2022/06/15 | 41303 | macros/luatex/generic/luaotfload/fontloader-l-unicode.lua -2022/06/15 | 15196 | macros/luatex/generic/luaotfload/fontloader-reference-load-order.lua -2022/06/15 | 5885 | macros/luatex/generic/luaotfload/fontloader-reference-load-order.tex -2022/06/15 | 984739 | macros/luatex/generic/luaotfload/fontloader-reference.lua -2022/06/15 | 11474 | macros/luatex/generic/luaotfload/fontloader-util-fil.lua -2022/06/15 | 46322 | macros/luatex/generic/luaotfload/fontloader-util-str.lua -2022/06/15 | 32597 | macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua -2022/06/15 | 3649 | macros/luatex/generic/luaotfload/luaotfload-bcp47.lua -2022/06/15 | 52 | macros/luatex/generic/luaotfload/luaotfload-blacklist.cnf -2022/06/15 | 15072 | macros/luatex/generic/luaotfload/luaotfload-case.lua -2022/06/15 | 3287334 | macros/luatex/generic/luaotfload/luaotfload-characters.lua -2022/06/15 | 18372 | macros/luatex/generic/luaotfload/luaotfload-colors.lua -2022/06/15 | 16862 | macros/luatex/generic/luaotfload/luaotfload.conf.5 -2022/06/15 | 735 | macros/luatex/generic/luaotfload/luaotfload.conf.example -2022/06/15 | 31223 | macros/luatex/generic/luaotfload/luaotfload-configuration.lua -2022/06/15 | 77540 | macros/luatex/generic/luaotfload/luaotfload-conf.pdf -2022/06/15 | 18378 | macros/luatex/generic/luaotfload/luaotfload.conf.rst -2022/06/15 | 134172 | macros/luatex/generic/luaotfload/luaotfload-database.lua -2022/06/15 | 21858 | macros/luatex/generic/luaotfload/luaotfload-diagnostics.lua -2022/06/15 | 4956 | macros/luatex/generic/luaotfload/luaotfload-dvi.lua -2022/06/15 | 1004 | macros/luatex/generic/luaotfload/luaotfload-embolden.lua -2022/06/15 | 4047 | macros/luatex/generic/luaotfload/luaotfload-fallback.lua -2022/06/15 | 33478 | macros/luatex/generic/luaotfload/luaotfload-features.lua -2022/06/15 | 25336 | macros/luatex/generic/luaotfload/luaotfload-filelist.lua -2022/06/15 | 102502 | macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua -2022/06/15 | 18975 | macros/luatex/generic/luaotfload/luaotfload-harf-define.lua -2022/06/15 | 42301 | macros/luatex/generic/luaotfload/luaotfload-harf-plug.lua -2022/06/15 | 14285 | macros/luatex/generic/luaotfload/luaotfload-harf-var-cff2.lua -2022/06/15 | 4050 | macros/luatex/generic/luaotfload/luaotfload-harf-var-t2-writer.lua -2022/06/15 | 20526 | macros/luatex/generic/luaotfload/luaotfload-harf-var-ttf.lua -2022/06/15 | 96 | macros/luatex/generic/luaotfload/luaotfload-hashing.lua -2022/06/15 | 19746 | macros/luatex/generic/luaotfload/luaotfload-init.lua -2022/06/15 | 495247 | macros/luatex/generic/luaotfload/luaotfload-latex.pdf -2022/06/15 | 16214 | macros/luatex/generic/luaotfload/luaotfload-latex.tex -2022/06/15 | 20268 | macros/luatex/generic/luaotfload/luaotfload-letterspace.lua -2022/06/15 | 10733 | macros/luatex/generic/luaotfload/luaotfload-loaders.lua -2022/06/15 | 11323 | macros/luatex/generic/luaotfload/luaotfload-log.lua -2022/06/15 | 13565 | macros/luatex/generic/luaotfload/luaotfload.lua -2022/06/15 | 275 | macros/luatex/generic/luaotfload/luaotfload-main.lua -2022/06/15 | 106114 | macros/luatex/generic/luaotfload/luaotfload-main.tex -2022/06/15 | 15068 | macros/luatex/generic/luaotfload/luaotfload-multiscript.lua -2022/06/15 | 12224 | macros/luatex/generic/luaotfload/luaotfload-notdef.lua -2022/06/15 | 30436 | macros/luatex/generic/luaotfload/luaotfload-parsers.lua -2022/06/15 | 11209 | macros/luatex/generic/luaotfload/luaotfload-resolvers.lua -2022/06/15 | 2506 | macros/luatex/generic/luaotfload/luaotfload-scripts.lua -2022/06/15 | 6317 | macros/luatex/generic/luaotfload/luaotfload-status.lua -2022/06/15 | 1812 | macros/luatex/generic/luaotfload/luaotfload.sty -2022/06/15 | 2582 | macros/luatex/generic/luaotfload/luaotfload-suppress.lua -2022/06/15 | 6309 | macros/luatex/generic/luaotfload/luaotfload-szss.lua -2022/06/15 | 4930 | macros/luatex/generic/luaotfload/luaotfload-t3.lua -2022/06/15 | 12861 | macros/luatex/generic/luaotfload/luaotfload-tool.1 -2022/06/15 | 53825 | macros/luatex/generic/luaotfload/luaotfload-tool.lua -2022/06/15 | 76805 | macros/luatex/generic/luaotfload/luaotfload-tool.pdf -2022/06/15 | 16116 | macros/luatex/generic/luaotfload/luaotfload-tool.rst -2022/06/15 | 7528 | macros/luatex/generic/luaotfload/luaotfload-tounicode.lua -2022/06/15 | 7917 | macros/luatex/generic/luaotfload/luaotfload-unicode.lua -2022/06/15 | 21748 | macros/luatex/generic/luaotfload/NEWS -2022/06/15 | 3784 | macros/luatex/generic/luaotfload/README.md -2022/06/15 | 19082 | macros/luatex/generic/luaotfload/scripts-demo.pdf -2022/06/15 | 699 | macros/luatex/generic/luaotfload/scripts-demo.tex -2022/06/15 | 8560 | macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf -2022/06/15 | 191 | macros/luatex/generic/luaotfload/shaper-demo-graphite.tex -2022/06/15 | 8481 | macros/luatex/generic/luaotfload/shaper-demo.pdf -2022/06/15 | 182 | macros/luatex/generic/luaotfload/shaper-demo.tex -2022/06/16 | 1966302 | macros/luatex/generic/luaotfload.zip +2022/10/03 | 18714 | macros/luatex/generic/luaotfload/COPYING +2022/10/03 | 40007 | macros/luatex/generic/luaotfload/filegraph.pdf +2022/10/03 | 8597 | macros/luatex/generic/luaotfload/filegraph.tex +2022/10/03 | 883645 | macros/luatex/generic/luaotfload/fontloader-2022-10-03.lua +2022/10/03 | 48728 | macros/luatex/generic/luaotfload/fontloader-basics-chr.lua +2022/10/03 | 12745 | macros/luatex/generic/luaotfload/fontloader-basics-gen.lua +2022/10/03 | 10207 | macros/luatex/generic/luaotfload/fontloader-basics-nod.lua +2022/10/03 | 5388 | macros/luatex/generic/luaotfload/fontloader-data-con.lua +2022/10/03 | 6866 | macros/luatex/generic/luaotfload/fontloader-font-afk.lua +2022/10/03 | 94342 | macros/luatex/generic/luaotfload/fontloader-font-cff.lua +2022/10/03 | 5502 | macros/luatex/generic/luaotfload/fontloader-font-cid.lua +2022/10/03 | 63211 | macros/luatex/generic/luaotfload/fontloader-font-con.lua +2022/10/03 | 19944 | macros/luatex/generic/luaotfload/fontloader-font-def.lua +2022/10/03 | 154497 | macros/luatex/generic/luaotfload/fontloader-font-dsp.lua +2022/10/03 | 12704 | macros/luatex/generic/luaotfload/fontloader-font-imp-effects.lua +2022/10/03 | 3693 | macros/luatex/generic/luaotfload/fontloader-font-imp-italics.lua +2022/10/03 | 3594 | macros/luatex/generic/luaotfload/fontloader-font-imp-ligatures.lua +2022/10/03 | 3406 | macros/luatex/generic/luaotfload/fontloader-font-imp-tex.lua +2022/10/03 | 1794 | macros/luatex/generic/luaotfload/fontloader-font-ini.lua +2022/10/03 | 1449 | macros/luatex/generic/luaotfload/fontloader-font-lua.lua +2022/10/03 | 19564 | macros/luatex/generic/luaotfload/fontloader-font-map.lua +2022/10/03 | 25264 | macros/luatex/generic/luaotfload/fontloader-font-ocl.lua +2022/10/03 | 31349 | macros/luatex/generic/luaotfload/fontloader-font-one.lua +2022/10/03 | 18717 | macros/luatex/generic/luaotfload/fontloader-font-onr.lua +2022/10/03 | 119973 | macros/luatex/generic/luaotfload/fontloader-font-osd.lua +2022/10/03 | 18411 | macros/luatex/generic/luaotfload/fontloader-font-ota.lua +2022/10/03 | 35836 | macros/luatex/generic/luaotfload/fontloader-font-otc.lua +2022/10/03 | 7904 | macros/luatex/generic/luaotfload/fontloader-font-oti.lua +2022/10/03 | 65279 | macros/luatex/generic/luaotfload/fontloader-font-otj.lua +2022/10/03 | 33960 | macros/luatex/generic/luaotfload/fontloader-font-otl.lua +2022/10/03 | 23238 | macros/luatex/generic/luaotfload/fontloader-font-oto.lua +2022/10/03 | 94462 | macros/luatex/generic/luaotfload/fontloader-font-otr.lua +2022/10/03 | 186209 | macros/luatex/generic/luaotfload/fontloader-font-ots.lua +2022/10/03 | 34922 | macros/luatex/generic/luaotfload/fontloader-font-ott.lua +2022/10/03 | 128092 | macros/luatex/generic/luaotfload/fontloader-font-oup.lua +2022/10/03 | 3821 | macros/luatex/generic/luaotfload/fontloader-fonts-def.lua +2022/10/03 | 2625 | macros/luatex/generic/luaotfload/fontloader-fonts-enc.lua +2022/10/03 | 7260 | macros/luatex/generic/luaotfload/fontloader-fonts-ext.lua +2022/10/03 | 9881 | macros/luatex/generic/luaotfload/fontloader-fonts-gbn.lua +2022/10/03 | 13525 | macros/luatex/generic/luaotfload/fontloader-font-shp.lua +2022/10/03 | 57342 | macros/luatex/generic/luaotfload/fontloader-fonts-lig.lua +2022/10/03 | 912 | macros/luatex/generic/luaotfload/fontloader-fonts-mis.lua +2022/10/03 | 3674 | macros/luatex/generic/luaotfload/fontloader-fonts-syn.lua +2022/10/03 | 23399 | macros/luatex/generic/luaotfload/fontloader-fonts-tfm.lua +2022/10/03 | 67011 | macros/luatex/generic/luaotfload/fontloader-font-ttf.lua +2022/10/03 | 2667 | macros/luatex/generic/luaotfload/fontloader-font-vfc.lua +2022/10/03 | 1850 | macros/luatex/generic/luaotfload/fontloader-l-boolean.lua +2022/10/03 | 22186 | macros/luatex/generic/luaotfload/fontloader-l-file.lua +2022/10/03 | 361 | macros/luatex/generic/luaotfload/fontloader-l-function.lua +2022/10/03 | 11988 | macros/luatex/generic/luaotfload/fontloader-l-io.lua +2022/10/03 | 38742 | macros/luatex/generic/luaotfload/fontloader-l-lpeg.lua +2022/10/03 | 6405 | macros/luatex/generic/luaotfload/fontloader-l-lua.lua +2022/10/03 | 2679 | macros/luatex/generic/luaotfload/fontloader-l-math.lua +2022/10/03 | 6644 | macros/luatex/generic/luaotfload/fontloader-l-string.lua +2022/10/03 | 41758 | macros/luatex/generic/luaotfload/fontloader-l-table.lua +2022/10/03 | 41303 | macros/luatex/generic/luaotfload/fontloader-l-unicode.lua +2022/10/03 | 15196 | macros/luatex/generic/luaotfload/fontloader-reference-load-order.lua +2022/10/03 | 5885 | macros/luatex/generic/luaotfload/fontloader-reference-load-order.tex +2022/10/03 | 985672 | macros/luatex/generic/luaotfload/fontloader-reference.lua +2022/10/03 | 11474 | macros/luatex/generic/luaotfload/fontloader-util-fil.lua +2022/10/03 | 46322 | macros/luatex/generic/luaotfload/fontloader-util-str.lua +2022/10/03 | 34239 | macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua +2022/10/03 | 3674 | macros/luatex/generic/luaotfload/luaotfload-bcp47.lua +2022/10/03 | 52 | macros/luatex/generic/luaotfload/luaotfload-blacklist.cnf +2022/10/03 | 16116 | macros/luatex/generic/luaotfload/luaotfload-case.lua +2022/10/03 | 3287334 | macros/luatex/generic/luaotfload/luaotfload-characters.lua +2022/10/03 | 18372 | macros/luatex/generic/luaotfload/luaotfload-colors.lua +2022/10/03 | 16794 | macros/luatex/generic/luaotfload/luaotfload.conf.5 +2022/10/03 | 735 | macros/luatex/generic/luaotfload/luaotfload.conf.example +2022/10/03 | 31223 | macros/luatex/generic/luaotfload/luaotfload-configuration.lua +2022/10/03 | 77520 | macros/luatex/generic/luaotfload/luaotfload-conf.pdf +2022/10/03 | 18378 | macros/luatex/generic/luaotfload/luaotfload.conf.rst +2022/10/03 | 134172 | macros/luatex/generic/luaotfload/luaotfload-database.lua +2022/10/03 | 21858 | macros/luatex/generic/luaotfload/luaotfload-diagnostics.lua +2022/10/03 | 6957 | macros/luatex/generic/luaotfload/luaotfload-dvi.lua +2022/10/03 | 1004 | macros/luatex/generic/luaotfload/luaotfload-embolden.lua +2022/10/03 | 4047 | macros/luatex/generic/luaotfload/luaotfload-fallback.lua +2022/10/03 | 33529 | macros/luatex/generic/luaotfload/luaotfload-features.lua +2022/10/03 | 25336 | macros/luatex/generic/luaotfload/luaotfload-filelist.lua +2022/10/03 | 102502 | macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua +2022/10/03 | 19011 | macros/luatex/generic/luaotfload/luaotfload-harf-define.lua +2022/10/03 | 42312 | macros/luatex/generic/luaotfload/luaotfload-harf-plug.lua +2022/10/03 | 14285 | macros/luatex/generic/luaotfload/luaotfload-harf-var-cff2.lua +2022/10/03 | 4050 | macros/luatex/generic/luaotfload/luaotfload-harf-var-t2-writer.lua +2022/10/03 | 20526 | macros/luatex/generic/luaotfload/luaotfload-harf-var-ttf.lua +2022/10/03 | 19746 | macros/luatex/generic/luaotfload/luaotfload-init.lua +2022/10/03 | 500170 | macros/luatex/generic/luaotfload/luaotfload-latex.pdf +2022/10/03 | 16214 | macros/luatex/generic/luaotfload/luaotfload-latex.tex +2022/10/03 | 20268 | macros/luatex/generic/luaotfload/luaotfload-letterspace.lua +2022/10/03 | 10733 | macros/luatex/generic/luaotfload/luaotfload-loaders.lua +2022/10/03 | 11323 | macros/luatex/generic/luaotfload/luaotfload-log.lua +2022/10/03 | 13565 | macros/luatex/generic/luaotfload/luaotfload.lua +2022/10/03 | 275 | macros/luatex/generic/luaotfload/luaotfload-main.lua +2022/10/03 | 106278 | macros/luatex/generic/luaotfload/luaotfload-main.tex +2022/10/03 | 15068 | macros/luatex/generic/luaotfload/luaotfload-multiscript.lua +2022/10/03 | 12224 | macros/luatex/generic/luaotfload/luaotfload-notdef.lua +2022/10/03 | 30436 | macros/luatex/generic/luaotfload/luaotfload-parsers.lua +2022/10/03 | 11209 | macros/luatex/generic/luaotfload/luaotfload-resolvers.lua +2022/10/03 | 2506 | macros/luatex/generic/luaotfload/luaotfload-scripts.lua +2022/10/03 | 6317 | macros/luatex/generic/luaotfload/luaotfload-status.lua +2022/10/03 | 1812 | macros/luatex/generic/luaotfload/luaotfload.sty +2022/10/03 | 2582 | macros/luatex/generic/luaotfload/luaotfload-suppress.lua +2022/10/03 | 6309 | macros/luatex/generic/luaotfload/luaotfload-szss.lua +2022/10/03 | 12829 | macros/luatex/generic/luaotfload/luaotfload-tool.1 +2022/10/03 | 53825 | macros/luatex/generic/luaotfload/luaotfload-tool.lua +2022/10/03 | 76791 | macros/luatex/generic/luaotfload/luaotfload-tool.pdf +2022/10/03 | 16116 | macros/luatex/generic/luaotfload/luaotfload-tool.rst +2022/10/03 | 7528 | macros/luatex/generic/luaotfload/luaotfload-tounicode.lua +2022/10/03 | 7917 | macros/luatex/generic/luaotfload/luaotfload-unicode.lua +2022/10/03 | 21856 | macros/luatex/generic/luaotfload/NEWS +2022/10/03 | 3784 | macros/luatex/generic/luaotfload/README.md +2022/10/03 | 21682 | macros/luatex/generic/luaotfload/scripts-demo.pdf +2022/10/03 | 699 | macros/luatex/generic/luaotfload/scripts-demo.tex +2022/10/03 | 8562 | macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf +2022/10/03 | 191 | macros/luatex/generic/luaotfload/shaper-demo-graphite.tex +2022/10/03 | 8478 | macros/luatex/generic/luaotfload/shaper-demo.pdf +2022/10/03 | 182 | macros/luatex/generic/luaotfload/shaper-demo.tex +2022/10/03 | 1973881 | macros/luatex/generic/luaotfload.zip 2019/12/22 | 2475 | macros/luatex/generic/luapackageloader/luapackageloader.lua 2019/12/22 | 33904 | macros/luatex/generic/luapackageloader/luapackageloader.pdf 2019/12/22 | 1014 | macros/luatex/generic/luapackageloader/luapackageloader.sty @@ -237832,21 +237838,28 @@ 2021/02/07 | 123627 | macros/luatex/latex/innerscript/innerscript.pdf 2021/02/07 | 1796 | macros/luatex/latex/innerscript/README.txt 2021/02/07 | 128136 | macros/luatex/latex/innerscript.zip -2022/09/02 | 19444 | macros/luatex/latex/letgut/doc/exemple-nouveautes.pdf -2022/09/02 | 1221 | macros/luatex/latex/letgut/doc/latexmkrc -2022/09/02 | 154184 | macros/luatex/latex/letgut/doc/letgut-banner-code.pdf -2022/09/02 | 274 | macros/luatex/latex/letgut/doc/letgut.bib -2022/09/02 | 690506 | macros/luatex/latex/letgut/doc/letgut-code.pdf -2022/09/02 | 366699 | macros/luatex/latex/letgut/doc/letgut.pdf -2022/09/02 | 67995 | macros/luatex/latex/letgut/doc/letgut.tex -2022/09/02 | 255 | macros/luatex/latex/letgut/doc/listings-conf.tex -2022/09/02 | 3099 | macros/luatex/latex/letgut/doc/localconf.tex -2022/09/02 | 2702 | macros/luatex/latex/letgut/doc/xindex-letgut.lua -2022/09/02 | 461 | macros/luatex/latex/letgut/README.md -2022/09/02 | 1520 | macros/luatex/latex/letgut/source/HOWTO.md -2022/09/02 | 25212 | macros/luatex/latex/letgut/source/letgut-banner.org -2022/09/02 | 278211 | macros/luatex/latex/letgut/source/letgut.org -2022/09/02 | 1274509 | macros/luatex/latex/letgut.zip +2022/10/03 | 536610 | macros/luatex/latex/japanese-mathformulas/japanese-mathformulas.pdf +2022/10/03 | 132535 | macros/luatex/latex/japanese-mathformulas/japanese-mathformulas-sample.pdf +2022/10/03 | 10625 | macros/luatex/latex/japanese-mathformulas/japanese-mathformulas-sample.tex +2022/10/03 | 183533 | macros/luatex/latex/japanese-mathformulas/japanese-mathformulas.sty +2022/10/03 | 76514 | macros/luatex/latex/japanese-mathformulas/japanese-mathformulas.tex +2022/10/03 | 1731 | macros/luatex/latex/japanese-mathformulas/README.txt +2022/10/03 | 696675 | macros/luatex/latex/japanese-mathformulas.zip +2022/10/03 | 19444 | macros/luatex/latex/letgut/doc/exemple-nouveautes.pdf +2022/10/03 | 1221 | macros/luatex/latex/letgut/doc/latexmkrc +2022/10/03 | 154201 | macros/luatex/latex/letgut/doc/letgut-banner-code.pdf +2022/10/03 | 274 | macros/luatex/latex/letgut/doc/letgut.bib +2022/10/03 | 702257 | macros/luatex/latex/letgut/doc/letgut-code.pdf +2022/10/03 | 379438 | macros/luatex/latex/letgut/doc/letgut.pdf +2022/10/03 | 71341 | macros/luatex/latex/letgut/doc/letgut.tex +2022/10/03 | 255 | macros/luatex/latex/letgut/doc/listings-conf.tex +2022/10/03 | 3956 | macros/luatex/latex/letgut/doc/localconf.tex +2022/10/03 | 2702 | macros/luatex/latex/letgut/doc/xindex-letgut.lua +2022/10/03 | 461 | macros/luatex/latex/letgut/README.md +2022/10/03 | 1520 | macros/luatex/latex/letgut/source/HOWTO.md +2022/10/03 | 25212 | macros/luatex/latex/letgut/source/letgut-banner.org +2022/10/03 | 286599 | macros/luatex/latex/letgut/source/letgut.org +2022/10/03 | 1301733 | macros/luatex/latex/letgut.zip 2022/06/11 | 8 | macros/luatex/latex/ligtype/DEPENDS.txt 2022/06/13 | 91797 | macros/luatex/latex/ligtype/ligtype.lua 2022/06/13 | 101610 | macros/luatex/latex/ligtype/ligtype.pdf @@ -281995,9 +282008,9 @@ 2019/02/28 | 113832 | systems/texlive/tlnet/archive/babel-scottish.doc.r30289.tar.xz 2019/02/28 | 2260 | systems/texlive/tlnet/archive/babel-scottish.r30289.tar.xz 2019/02/28 | 4100 | systems/texlive/tlnet/archive/babel-scottish.source.r30289.tar.xz -2022/02/21 | 293528 | systems/texlive/tlnet/archive/babel-serbianc.doc.r62110.tar.xz -2022/02/21 | 4332 | systems/texlive/tlnet/archive/babel-serbianc.r62110.tar.xz -2022/02/21 | 9860 | systems/texlive/tlnet/archive/babel-serbianc.source.r62110.tar.xz +2022/10/03 | 293708 | systems/texlive/tlnet/archive/babel-serbianc.doc.r64588.tar.xz +2022/10/03 | 4336 | systems/texlive/tlnet/archive/babel-serbianc.r64588.tar.xz +2022/10/03 | 9872 | systems/texlive/tlnet/archive/babel-serbianc.source.r64588.tar.xz 2022/10/02 | 256632 | systems/texlive/tlnet/archive/babel-serbian.doc.r64571.tar.xz 2022/10/02 | 3360 | systems/texlive/tlnet/archive/babel-serbian.r64571.tar.xz 2022/10/02 | 7436 | systems/texlive/tlnet/archive/babel-serbian.source.r64571.tar.xz @@ -282254,9 +282267,9 @@ 2019/02/28 | 380 | systems/texlive/tlnet/archive/bib2gls.x86_64-linuxmusl.r46840.tar.xz 2019/02/28 | 372 | systems/texlive/tlnet/archive/bib2gls.x86_64-linux.r45266.tar.xz 2019/02/28 | 376 | systems/texlive/tlnet/archive/bib2gls.x86_64-solaris.r45266.tar.xz -2022/01/12 | 1206428 | systems/texlive/tlnet/archive/bibarts.doc.r61569.tar.xz -2022/01/12 | 27280 | systems/texlive/tlnet/archive/bibarts.r61569.tar.xz -2022/01/12 | 47504 | systems/texlive/tlnet/archive/bibarts.source.r61569.tar.xz +2022/10/03 | 1236128 | systems/texlive/tlnet/archive/bibarts.doc.r64579.tar.xz +2022/10/03 | 28592 | systems/texlive/tlnet/archive/bibarts.r64579.tar.xz +2022/10/03 | 49268 | systems/texlive/tlnet/archive/bibarts.source.r64579.tar.xz 2022/07/24 | 23388012 | systems/texlive/tlnet/archive/biber.amd64-freebsd.r63965.tar.xz 2022/09/13 | 265488 | systems/texlive/tlnet/archive/biber.doc.r64367.tar.xz 2022/06/30 | 17083824 | systems/texlive/tlnet/archive/biber.i386-cygwin.r63756.tar.xz @@ -284346,8 +284359,8 @@ 2022/06/15 | 6380 | systems/texlive/tlnet/archive/diffcoeff.r63590.tar.xz 2019/02/28 | 120640 | systems/texlive/tlnet/archive/digiconfigs.doc.r15878.tar.xz 2019/02/28 | 2096 | systems/texlive/tlnet/archive/digiconfigs.r15878.tar.xz -2020/06/26 | 374620 | systems/texlive/tlnet/archive/dijkstra.doc.r55661.tar.xz -2020/06/26 | 4928 | systems/texlive/tlnet/archive/dijkstra.r55661.tar.xz +2022/10/03 | 160036 | systems/texlive/tlnet/archive/dijkstra.doc.r64580.tar.xz +2022/10/03 | 5116 | systems/texlive/tlnet/archive/dijkstra.r64580.tar.xz 2021/04/07 | 207688 | systems/texlive/tlnet/archive/dimnum.doc.r58774.tar.xz 2021/04/07 | 2508 | systems/texlive/tlnet/archive/dimnum.r58774.tar.xz 2021/04/07 | 5224 | systems/texlive/tlnet/archive/dimnum.source.r58774.tar.xz @@ -286651,8 +286664,8 @@ 2021/06/02 | 1468 | systems/texlive/tlnet/archive/hvarabic.r59423.tar.xz 2022/06/25 | 1125232 | systems/texlive/tlnet/archive/hvextern.doc.r63711.tar.xz 2022/06/25 | 7136 | systems/texlive/tlnet/archive/hvextern.r63711.tar.xz -2022/09/02 | 10473656 | systems/texlive/tlnet/archive/hvfloat.doc.r64258.tar.xz -2022/09/02 | 11896 | systems/texlive/tlnet/archive/hvfloat.r64258.tar.xz +2022/10/03 | 10328200 | systems/texlive/tlnet/archive/hvfloat.doc.r64581.tar.xz +2022/10/03 | 11928 | systems/texlive/tlnet/archive/hvfloat.r64581.tar.xz 2019/02/28 | 76336 | systems/texlive/tlnet/archive/hvindex.doc.r46051.tar.xz 2019/02/28 | 1672 | systems/texlive/tlnet/archive/hvindex.r46051.tar.xz 2022/05/09 | 87192 | systems/texlive/tlnet/archive/hvlogos.doc.r63261.tar.xz @@ -287170,8 +287183,9 @@ 2019/02/28 | 718580 | systems/texlive/tlnet/archive/kdgdocs.doc.r24498.tar.xz 2019/02/28 | 3640 | systems/texlive/tlnet/archive/kdgdocs.r24498.tar.xz 2019/02/28 | 10436 | systems/texlive/tlnet/archive/kdgdocs.source.r24498.tar.xz -2022/07/04 | 101076 | systems/texlive/tlnet/archive/kdpcover.doc.r63800.tar.xz -2022/07/04 | 23168 | systems/texlive/tlnet/archive/kdpcover.r63800.tar.xz +2022/10/03 | 303076 | systems/texlive/tlnet/archive/kdpcover.doc.r64582.tar.xz +2022/10/03 | 23128 | systems/texlive/tlnet/archive/kdpcover.r64582.tar.xz +2022/10/03 | 4908 | systems/texlive/tlnet/archive/kdpcover.source.r64582.tar.xz 2020/09/06 | 2496 | systems/texlive/tlnet/archive/kerkis.doc.r56271.tar.xz 2020/09/06 | 2015492 | systems/texlive/tlnet/archive/kerkis.r56271.tar.xz 2019/02/28 | 627468 | systems/texlive/tlnet/archive/kerntest.doc.r15878.tar.xz @@ -288362,9 +288376,9 @@ 2022/03/13 | 1874248 | systems/texlive/tlnet/archive/luatex.i386-linux.r62668.tar.xz 2022/03/14 | 1453136 | systems/texlive/tlnet/archive/luatex.i386-netbsd.r62674.tar.xz 2022/03/13 | 1618048 | systems/texlive/tlnet/archive/luatex.i386-solaris.r62668.tar.xz -2022/08/11 | 3254072 | systems/texlive/tlnet/archive/luatexja.doc.r64092.tar.xz -2022/08/11 | 191980 | systems/texlive/tlnet/archive/luatexja.r64092.tar.xz -2022/08/11 | 83300 | systems/texlive/tlnet/archive/luatexja.source.r64092.tar.xz +2022/10/03 | 3261600 | systems/texlive/tlnet/archive/luatexja.doc.r64587.tar.xz +2022/10/03 | 191920 | systems/texlive/tlnet/archive/luatexja.r64587.tar.xz +2022/10/03 | 83900 | systems/texlive/tlnet/archive/luatexja.source.r64587.tar.xz 2022/03/21 | 349832 | systems/texlive/tlnet/archive/luatexko.doc.r62831.tar.xz 2022/03/21 | 23428 | systems/texlive/tlnet/archive/luatexko.r62831.tar.xz 2022/03/05 | 12828 | systems/texlive/tlnet/archive/luatex.r62387.tar.xz @@ -291888,8 +291902,8 @@ 2022/09/24 | 2637940 | systems/texlive/tlnet/archive/simpleicons.r64491.tar.xz 2019/02/28 | 224844 | systems/texlive/tlnet/archive/simpleinvoice.doc.r45673.tar.xz 2019/02/28 | 2420 | systems/texlive/tlnet/archive/simpleinvoice.r45673.tar.xz -2020/04/28 | 332620 | systems/texlive/tlnet/archive/simplekv.doc.r54915.tar.xz -2020/04/28 | 2908 | systems/texlive/tlnet/archive/simplekv.r54915.tar.xz +2022/10/03 | 130940 | systems/texlive/tlnet/archive/simplekv.doc.r64578.tar.xz +2022/10/03 | 2912 | systems/texlive/tlnet/archive/simplekv.r64578.tar.xz 2022/04/05 | 208680 | systems/texlive/tlnet/archive/simplenodes.doc.r62888.tar.xz 2022/04/05 | 2172 | systems/texlive/tlnet/archive/simplenodes.r62888.tar.xz 2022/04/08 | 83476 | systems/texlive/tlnet/archive/simpleoptics.doc.r62977.tar.xz @@ -292111,8 +292125,8 @@ 2019/02/28 | 348 | systems/texlive/tlnet/archive/srcredact.x86_64-linuxmusl.r46840.tar.xz 2019/02/28 | 340 | systems/texlive/tlnet/archive/srcredact.x86_64-linux.r38710.tar.xz 2019/02/28 | 340 | systems/texlive/tlnet/archive/srcredact.x86_64-solaris.r38710.tar.xz -2022/09/13 | 150164 | systems/texlive/tlnet/archive/srdp-mathematik.doc.r64349.tar.xz -2022/09/13 | 30248 | systems/texlive/tlnet/archive/srdp-mathematik.r64349.tar.xz +2022/10/03 | 150792 | systems/texlive/tlnet/archive/srdp-mathematik.doc.r64583.tar.xz +2022/10/03 | 30400 | systems/texlive/tlnet/archive/srdp-mathematik.r64583.tar.xz 2021/05/25 | 452688 | systems/texlive/tlnet/archive/sr-vorl.doc.r59333.tar.xz 2021/05/25 | 4280 | systems/texlive/tlnet/archive/sr-vorl.r59333.tar.xz 2021/05/25 | 18872 | systems/texlive/tlnet/archive/sr-vorl.source.r59333.tar.xz @@ -292827,7 +292841,7 @@ 2022/09/13 | 600 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r64356.tar.xz 2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r64356.tar.xz 2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r64356.tar.xz -2022/10/02 | 421616 | systems/texlive/tlnet/archive/texlive-scripts.doc.r64564.tar.xz +2022/10/03 | 421616 | systems/texlive/tlnet/archive/texlive-scripts.doc.r64577.tar.xz 2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.aarch64-linux.r53577.tar.xz 2020/01/27 | 924 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-freebsd.r53577.tar.xz 2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-netbsd.r53577.tar.xz @@ -292851,7 +292865,7 @@ 2022/09/13 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r64356.tar.xz 2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r64356.tar.xz 2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r64356.tar.xz -2022/10/02 | 113672 | systems/texlive/tlnet/archive/texlive-scripts.r64564.tar.xz +2022/10/03 | 113688 | systems/texlive/tlnet/archive/texlive-scripts.r64577.tar.xz 2022/09/13 | 580 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r64356.tar.xz 2022/04/19 | 36296 | systems/texlive/tlnet/archive/texlive-scripts.win32.r63068.tar.xz 2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r64356.tar.xz @@ -293817,8 +293831,8 @@ 2022/09/26 | 514004 | systems/texlive/tlnet/archive/universalis.r64505.tar.xz 2019/08/30 | 16744 | systems/texlive/tlnet/archive/universa.r51984.tar.xz 2019/08/30 | 55964 | systems/texlive/tlnet/archive/universa.source.r51984.tar.xz -2022/09/09 | 2823976 | systems/texlive/tlnet/archive/univie-ling.doc.r64318.tar.xz -2022/09/09 | 159748 | systems/texlive/tlnet/archive/univie-ling.r64318.tar.xz +2022/10/03 | 3258272 | systems/texlive/tlnet/archive/univie-ling.doc.r64584.tar.xz +2022/10/03 | 160160 | systems/texlive/tlnet/archive/univie-ling.r64584.tar.xz 2019/02/28 | 71452 | systems/texlive/tlnet/archive/uni-wtal-ger.doc.r31541.tar.xz 2019/02/28 | 1644 | systems/texlive/tlnet/archive/uni-wtal-ger.r31541.tar.xz 2019/02/28 | 93524 | systems/texlive/tlnet/archive/uni-wtal-lin.doc.r31409.tar.xz @@ -294584,8 +294598,9 @@ 2020/03/04 | 5936 | systems/texlive/tlnet/archive/yax.r54080.tar.xz 2022/01/24 | 2170868 | systems/texlive/tlnet/archive/yazd-thesis.doc.r61719.tar.xz 2022/01/24 | 5952 | systems/texlive/tlnet/archive/yazd-thesis.r61719.tar.xz -2022/08/01 | 243276 | systems/texlive/tlnet/archive/yb-book.doc.r64017.tar.xz -2022/08/01 | 3948 | systems/texlive/tlnet/archive/yb-book.r64017.tar.xz +2022/10/03 | 282532 | systems/texlive/tlnet/archive/yb-book.doc.r64586.tar.xz +2022/10/03 | 3788 | systems/texlive/tlnet/archive/yb-book.r64586.tar.xz +2022/10/03 | 6328 | systems/texlive/tlnet/archive/yb-book.source.r64586.tar.xz 2019/02/28 | 124828 | systems/texlive/tlnet/archive/ycbook.doc.r46201.tar.xz 2019/02/28 | 4708 | systems/texlive/tlnet/archive/ycbook.r46201.tar.xz 2020/09/08 | 321388 | systems/texlive/tlnet/archive/ydoc.doc.r56291.tar.xz @@ -294693,16 +294708,16 @@ 2020/07/18 | 47816 | systems/texlive/tlnet/archive/zztex.doc.r55862.tar.xz 2020/07/18 | 101724 | systems/texlive/tlnet/archive/zztex.r55862.tar.xz 2022/07/17 | 124404 | systems/texlive/tlnet/install-tl -2022/10/02 | 5831823 | systems/texlive/tlnet/install-tl-unx.tar.gz -2022/10/02 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 -2022/10/02 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc +2022/10/03 | 5831798 | systems/texlive/tlnet/install-tl-unx.tar.gz +2022/10/03 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 +2022/10/03 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc 2021/04/11 | 4945 | systems/texlive/tlnet/install-tl-windows.bat -2022/10/02 | 20435943 | systems/texlive/tlnet/install-tl-windows.exe -2022/10/02 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 -2022/10/02 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc -2022/10/02 | 25516608 | systems/texlive/tlnet/install-tl.zip -2022/10/02 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 -2022/10/02 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc +2022/10/03 | 20435516 | systems/texlive/tlnet/install-tl-windows.exe +2022/10/03 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 +2022/10/03 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc +2022/10/03 | 25516629 | systems/texlive/tlnet/install-tl.zip +2022/10/03 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2022/10/03 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc 2022/04/03 | 1229 | systems/texlive/tlnet/README.md 2022/04/03 | 0 | systems/texlive/tlnet/TEXLIVE_2022 2022/02/28 | 7791 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg @@ -294712,7 +294727,7 @@ 2022/02/28 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg 2022/09/12 | 49769 | systems/texlive/tlnet/tlpkg/installer/config.guess 2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt -2022/10/01 | 7182 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl +2022/10/02 | 7273 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2022/07/21 | 222477 | systems/texlive/tlnet/tlpkg/installer/curl/curl-ca-bundle.crt 2020/04/15 | 2606592 | systems/texlive/tlnet/tlpkg/installer/curl/curl.exe 2017/04/16 | 2629 | systems/texlive/tlnet/tlpkg/installer/installer-options.txt @@ -294755,12 +294770,12 @@ 2021/05/16 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm 2021/12/21 | 5429 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm 2021/12/21 | 27582 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm -2022/10/02 | 17669470 | systems/texlive/tlnet/tlpkg/texlive.tlpdb -2022/10/02 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2022/10/03 | 17670169 | systems/texlive/tlnet/tlpkg/texlive.tlpdb +2022/10/03 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 2022/04/18 | 86658 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm -2022/10/02 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 -2022/10/02 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc -2022/10/02 | 2416036 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +2022/10/03 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2022/10/03 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +2022/10/03 | 2413328 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz 2022/09/14 | 58922 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm 2022/08/01 | 42206 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm 2021/12/21 | 16130 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm @@ -300120,7 +300135,7 @@ 2020/10/03 | 318630 | systems/win32/miktex/tm/packages/filehook.tar.lzma 2012/12/04 | 924573 | systems/win32/miktex/tm/packages/fileinfo.tar.lzma 2011/09/21 | 281409 | systems/win32/miktex/tm/packages/filemod.tar.lzma -2022/10/02 | 665028 | systems/win32/miktex/tm/packages/files.csv.lzma +2022/10/03 | 665028 | systems/win32/miktex/tm/packages/files.csv.lzma 2001/05/14 | 5617 | systems/win32/miktex/tm/packages/finbib.tar.lzma 2015/10/20 | 44379 | systems/win32/miktex/tm/packages/findhyph.tar.lzma 2011/10/21 | 89323 | systems/win32/miktex/tm/packages/fink.tar.lzma @@ -301829,9 +301844,9 @@ 2018/01/12 | 157226 | systems/win32/miktex/tm/packages/miktex-zip-bin-x64.tar.lzma 2022/07/26 | 39695 | systems/win32/miktex/tm/packages/miktex-zlib-bin-2.9.tar.lzma 2022/08/27 | 43640 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma -2022/10/02 | 295605 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma -2022/10/02 | 1498087 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma -2022/10/02 | 1376664 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma +2022/10/03 | 295587 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma +2022/10/03 | 1497179 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma +2022/10/03 | 1375875 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma 2022/07/26 | 13519 | systems/win32/miktex/tm/packages/miktex-zzip-bin-2.9.tar.lzma 2022/08/27 | 14450 | systems/win32/miktex/tm/packages/miktex-zzip-bin-x64-2.9.tar.lzma 2016/07/15 | 35914 | systems/win32/miktex/tm/packages/mil3.tar.lzma @@ -302077,102 +302092,102 @@ 2018/04/09 | 400132 | systems/win32/miktex/tm/packages/newunicodechar.tar.lzma 2011/09/19 | 101312 | systems/win32/miktex/tm/packages/newvbtm.tar.lzma 2021/03/17 | 232249 | systems/win32/miktex/tm/packages/newverbs.tar.lzma -2022/10/02 | 662835 | systems/win32/miktex/tm/packages/next/files.csv.lzma -2022/10/02 | 57316 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma -2022/10/02 | 1161753 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma -2022/10/02 | 31586 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma -2022/10/02 | 35264 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma -2022/10/02 | 65129 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma -2022/10/02 | 95468 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma -2022/10/02 | 77210 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma -2022/10/02 | 31562 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma -2022/10/02 | 394142 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma -2022/10/02 | 37051 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma -2022/10/02 | 57506 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma -2022/10/02 | 270466 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma -2022/10/02 | 196212 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma -2022/10/02 | 103244 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma -2022/10/02 | 24211 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma -2022/10/02 | 481893 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma -2022/10/02 | 52037 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma -2022/10/02 | 325979 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma -2022/10/02 | 45795 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma -2022/10/02 | 135465 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma -2022/10/02 | 1458151 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma -2022/10/02 | 112979 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma -2022/10/02 | 48851 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma -2022/10/02 | 28510 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma -2022/10/02 | 63241 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma -2022/10/02 | 155432 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma -2022/10/02 | 79065 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma -2022/10/02 | 81448 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma -2022/10/02 | 295944 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma -2022/10/02 | 25119 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma -2022/10/02 | 112879 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma -2022/10/02 | 73263 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma -2022/10/02 | 115579 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma -2022/10/02 | 43889 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma -2022/10/02 | 565080 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma -2022/10/02 | 247208 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma -2022/10/02 | 169678 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma -2022/10/02 | 109651 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma -2022/10/02 | 18381 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma -2022/10/02 | 30570 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma -2022/10/02 | 682214 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma -2022/10/02 | 599104 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma -2022/10/02 | 527568 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma -2022/10/02 | 103597 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma -2022/10/02 | 2023131 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma -2022/10/02 | 74099 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma -2022/10/02 | 32073 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma -2022/10/02 | 8825 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma -2022/10/02 | 209138 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma -2022/10/02 | 286684 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma -2022/10/02 | 104920 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma -2022/10/02 | 140010 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma -2022/10/02 | 325482 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma -2022/10/02 | 181724 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma -2022/10/02 | 55320 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma -2022/10/02 | 35230 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma -2022/10/02 | 43618 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma -2022/10/02 | 48038 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma -2022/10/02 | 52369 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma -2022/10/02 | 213847 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma -2022/10/02 | 41180 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma -2022/10/02 | 824995 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma -2022/10/02 | 203421 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma -2022/10/02 | 245151 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma -2022/10/02 | 88483 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma -2022/10/02 | 1323743 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma -2022/10/02 | 23950 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma -2022/10/02 | 37505 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma -2022/10/02 | 72978 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma -2022/10/02 | 58632 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma -2022/10/02 | 769651 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma -2022/10/02 | 1503053 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma -2022/10/02 | 52626 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma -2022/10/02 | 63802 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma -2022/10/02 | 27464 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma -2022/10/02 | 18511 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma -2022/10/02 | 70940 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma -2022/10/02 | 173178 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma -2022/10/02 | 68147 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma -2022/10/02 | 107437 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma -2022/10/02 | 2821671 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma -2022/10/02 | 62360 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma -2022/10/02 | 41192 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma -2022/10/02 | 33863 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma -2022/10/02 | 73686 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma -2022/10/02 | 352464 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma -2022/10/02 | 57501 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma -2022/10/02 | 630433 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma -2022/10/02 | 43528 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma -2022/10/02 | 295581 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma -2022/10/02 | 1495594 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma -2022/10/02 | 1376310 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma -2022/10/02 | 14434 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma +2022/10/03 | 662835 | systems/win32/miktex/tm/packages/next/files.csv.lzma +2022/10/03 | 57318 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma +2022/10/03 | 1161751 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma +2022/10/03 | 31586 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma +2022/10/03 | 35265 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma +2022/10/03 | 65130 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma +2022/10/03 | 95467 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma +2022/10/03 | 77211 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma +2022/10/03 | 31563 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma +2022/10/03 | 394143 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma +2022/10/03 | 37051 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma +2022/10/03 | 57503 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma +2022/10/03 | 270467 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma +2022/10/03 | 196213 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma +2022/10/03 | 103247 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma +2022/10/03 | 24211 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma +2022/10/03 | 481894 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma +2022/10/03 | 52037 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma +2022/10/03 | 325980 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma +2022/10/03 | 45793 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma +2022/10/03 | 135465 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma +2022/10/03 | 1458151 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma +2022/10/03 | 112979 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma +2022/10/03 | 48852 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma +2022/10/03 | 28510 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma +2022/10/03 | 63241 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma +2022/10/03 | 155432 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma +2022/10/03 | 79063 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma +2022/10/03 | 81448 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma +2022/10/03 | 295946 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma +2022/10/03 | 25119 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma +2022/10/03 | 112878 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma +2022/10/03 | 73264 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma +2022/10/03 | 115581 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma +2022/10/03 | 43889 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma +2022/10/03 | 565082 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma +2022/10/03 | 247207 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma +2022/10/03 | 169678 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma +2022/10/03 | 109651 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma +2022/10/03 | 18382 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma +2022/10/03 | 30572 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma +2022/10/03 | 682216 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma +2022/10/03 | 599105 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma +2022/10/03 | 527570 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma +2022/10/03 | 103598 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma +2022/10/03 | 2023132 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma +2022/10/03 | 74100 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma +2022/10/03 | 32075 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma +2022/10/03 | 8826 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma +2022/10/03 | 209137 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma +2022/10/03 | 286686 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma +2022/10/03 | 104922 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma +2022/10/03 | 140013 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma +2022/10/03 | 325484 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma +2022/10/03 | 181725 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma +2022/10/03 | 55320 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma +2022/10/03 | 35231 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma +2022/10/03 | 43618 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma +2022/10/03 | 48038 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma +2022/10/03 | 52370 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma +2022/10/03 | 213848 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma +2022/10/03 | 41180 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma +2022/10/03 | 824996 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma +2022/10/03 | 203419 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma +2022/10/03 | 245152 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma +2022/10/03 | 88484 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma +2022/10/03 | 1323744 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma +2022/10/03 | 23951 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma +2022/10/03 | 37506 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma +2022/10/03 | 72980 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma +2022/10/03 | 58634 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma +2022/10/03 | 769655 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma +2022/10/03 | 1503054 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma +2022/10/03 | 52628 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma +2022/10/03 | 63802 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma +2022/10/03 | 27465 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma +2022/10/03 | 18511 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma +2022/10/03 | 70940 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma +2022/10/03 | 173177 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma +2022/10/03 | 68147 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma +2022/10/03 | 107439 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma +2022/10/03 | 2821671 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma +2022/10/03 | 62360 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma +2022/10/03 | 41192 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma +2022/10/03 | 33862 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma +2022/10/03 | 73686 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma +2022/10/03 | 352463 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma +2022/10/03 | 57501 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma +2022/10/03 | 630436 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma +2022/10/03 | 43528 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma +2022/10/03 | 295685 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma +2022/10/03 | 1496139 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma +2022/10/03 | 1376399 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma +2022/10/03 | 14434 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma 2019/03/12 | 1412 | systems/win32/miktex/tm/packages/nextpage.tar.lzma -2022/10/02 | 1172 | systems/win32/miktex/tm/packages/next/pr.ini +2022/10/03 | 1172 | systems/win32/miktex/tm/packages/next/pr.ini 2018/07/06 | 145915 | systems/win32/miktex/tm/packages/nexus-otf.tar.lzma 2017/03/30 | 191149 | systems/win32/miktex/tm/packages/nfssext-cfr.tar.lzma 2012/12/20 | 612251 | systems/win32/miktex/tm/packages/nicefilelist.tar.lzma @@ -302679,7 +302694,7 @@ 2022/02/22 | 6917 | systems/win32/miktex/tm/packages/preview.tar.lzma 2019/06/20 | 375963 | systems/win32/miktex/tm/packages/prftree.tar.lzma 2021/04/23 | 274028 | systems/win32/miktex/tm/packages/principia.tar.lzma -2022/10/02 | 931 | systems/win32/miktex/tm/packages/pr.ini +2022/10/03 | 931 | systems/win32/miktex/tm/packages/pr.ini 2010/09/27 | 248469 | systems/win32/miktex/tm/packages/printlen.tar.lzma 2008/06/17 | 77313 | systems/win32/miktex/tm/packages/proba.tar.lzma 2017/07/12 | 988486 | systems/win32/miktex/tm/packages/probsoln.tar.lzma @@ -304642,7 +304657,7 @@ 2014/07/05 | 611 | systems/win32/yandy/README 2014/07/05 | 1004628 | systems/win32/yandy/yandy-src.tar.xz 2014/07/05 | 1012416 | systems/win32/yandy.zip -2022/10/03 | 186 | timestamp +2022/10/04 | 186 | timestamp 2002/08/26 | 61898 | usergrps/dante/antrag.pdf 2002/08/26 | 118217 | usergrps/dante/antrag.ps 2022/02/28 | 917 | usergrps/dante/dtk/doc/beispiel.bib diff --git a/FILES.byname.gz b/FILES.byname.gz index 9012caa45c..0a28b586ce 100644 Binary files a/FILES.byname.gz and b/FILES.byname.gz differ diff --git a/FILES.last07days b/FILES.last07days index 653ff2c104..6ad0acdf4c 100644 --- a/FILES.last07days +++ b/FILES.last07days @@ -1,110 +1,442 @@ +2022/10/03 | 9946 | macros/latex/contrib/teubner/teubner.txt +2022/10/03 | 9881 | macros/luatex/generic/luaotfload/fontloader-fonts-gbn.lua +2022/10/03 | 9872 | systems/texlive/tlnet/archive/babel-serbianc.source.r64588.tar.xz +2022/10/03 | 985672 | macros/luatex/generic/luaotfload/fontloader-reference.lua +2022/10/03 | 968 | macros/latex/contrib/proflycee/doc/cap.csv +2022/10/03 | 9582 | macros/latex/contrib/ffcode/ffcode.dtx +2022/10/03 | 95467 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma +2022/10/03 | 954036 | macros/latex/contrib/proflycee.zip +2022/10/03 | 94462 | macros/luatex/generic/luaotfload/fontloader-font-otr.lua +2022/10/03 | 94342 | macros/luatex/generic/luaotfload/fontloader-font-cff.lua +2022/10/03 | 931 | systems/win32/miktex/tm/packages/pr.ini +2022/10/03 | 92998 | macros/latex/contrib/teubner/teubner-doc.tex +2022/10/03 | 912 | macros/luatex/generic/luaotfload/fontloader-fonts-mis.lua +2022/10/03 | 895604 | macros/generic/markdown/markdown.pdf +2022/10/03 | 88484 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma +2022/10/03 | 883645 | macros/luatex/generic/luaotfload/fontloader-2022-10-03.lua +2022/10/03 | 8826 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma +2022/10/03 | 861172 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf +2022/10/03 | 8597 | macros/luatex/generic/luaotfload/filegraph.tex +2022/10/03 | 8562 | macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf +2022/10/03 | 8478 | macros/luatex/generic/luaotfload/shaper-demo.pdf +2022/10/03 | 83 | macros/latex/contrib/debate/DEPENDS.txt +2022/10/03 | 83900 | systems/texlive/tlnet/archive/luatexja.source.r64587.tar.xz +2022/10/03 | 824996 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma +2022/10/03 | 8217 | biblio/bibtex/contrib/gbt7714/CHANGELOG.md +2022/10/03 | 81448 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma +2022/10/03 | 804453 | macros/generic/markdown/markdown.html +2022/10/03 | 7917 | macros/luatex/generic/luaotfload/luaotfload-unicode.lua +2022/10/03 | 79063 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma +2022/10/03 | 7904 | macros/luatex/generic/luaotfload/fontloader-font-oti.lua +2022/10/03 | 78322 | macros/latex/contrib/proflycee/tex/ProfLycee.sty +2022/10/03 | 77520 | macros/luatex/generic/luaotfload/luaotfload-conf.pdf +2022/10/03 | 77211 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma +2022/10/03 | 7703 | macros/latex/contrib/biblatex-contrib/biblatex-publist/README +2022/10/03 | 769655 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma +2022/10/03 | 76791 | macros/luatex/generic/luaotfload/luaotfload-tool.pdf +2022/10/03 | 76514 | macros/luatex/latex/japanese-mathformulas/japanese-mathformulas.tex +2022/10/03 | 75 | macros/generic/markdown/examples/scientists.csv +2022/10/03 | 7528 | macros/luatex/generic/luaotfload/luaotfload-tounicode.lua +2022/10/03 | 74100 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma +2022/10/03 | 736 | macros/latex/contrib/proflycee/doc/perroquet.csv +2022/10/03 | 73686 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma +2022/10/03 | 735 | macros/luatex/generic/luaotfload/luaotfload.conf.example +2022/10/03 | 73264 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma +2022/10/03 | 72980 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma +2022/10/03 | 7260 | macros/luatex/generic/luaotfload/fontloader-fonts-ext.lua +2022/10/03 | 7215 | biblio/bibtex/contrib/gbt7714/README.md +2022/10/03 | 71341 | macros/luatex/latex/letgut/doc/letgut.tex +2022/10/03 | 70940 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma +2022/10/03 | 702257 | macros/luatex/latex/letgut/doc/letgut-code.pdf +2022/10/03 | 699 | macros/luatex/generic/luaotfload/scripts-demo.tex +2022/10/03 | 697091 | macros/generic/markdown/markdown.dtx +2022/10/03 | 696675 | macros/luatex/latex/japanese-mathformulas.zip +2022/10/03 | 6957 | macros/luatex/generic/luaotfload/luaotfload-dvi.lua +2022/10/03 | 6866 | macros/luatex/generic/luaotfload/fontloader-font-afk.lua +2022/10/03 | 682216 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma +2022/10/03 | 68147 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma +2022/10/03 | 671724 | macros/latex/contrib/teubner/teubner.pdf +2022/10/03 | 67011 | macros/luatex/generic/luaotfload/fontloader-font-ttf.lua +2022/10/03 | 665028 | systems/win32/miktex/tm/packages/files.csv.lzma +2022/10/03 | 6644 | macros/luatex/generic/luaotfload/fontloader-l-string.lua +2022/10/03 | 662835 | systems/win32/miktex/tm/packages/next/files.csv.lzma +2022/10/03 | 65279 | macros/luatex/generic/luaotfload/fontloader-font-otj.lua +2022/10/03 | 65130 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma +2022/10/03 | 6405 | macros/luatex/generic/luaotfload/fontloader-l-lua.lua +2022/10/03 | 6391 | macros/latex/contrib/clicks/clicks.dtx +2022/10/03 | 63802 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma +2022/10/03 | 6328 | systems/texlive/tlnet/archive/yb-book.source.r64586.tar.xz +2022/10/03 | 63241 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma +2022/10/03 | 63211 | macros/luatex/generic/luaotfload/fontloader-font-con.lua +2022/10/03 | 6317 | macros/luatex/generic/luaotfload/luaotfload-status.lua +2022/10/03 | 6309 | macros/luatex/generic/luaotfload/luaotfload-szss.lua +2022/10/03 | 630436 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma +2022/10/03 | 62 | macros/latex/contrib/ffcode/DEPENDS.txt +2022/10/03 | 62360 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma +2022/10/03 | 599105 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma +2022/10/03 | 5885 | macros/luatex/generic/luaotfload/fontloader-reference-load-order.tex +2022/10/03 | 58634 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma +2022/10/03 | 5831798 | systems/texlive/tlnet/install-tl-unx.tar.gz +2022/10/03 | 57503 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma +2022/10/03 | 57501 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma +2022/10/03 | 57342 | macros/luatex/generic/luaotfload/fontloader-fonts-lig.lua +2022/10/03 | 57318 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma +2022/10/03 | 565082 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma +2022/10/03 | 553308 | biblio/bibtex/contrib/gbt7714.zip +2022/10/03 | 55320 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma +2022/10/03 | 5502 | macros/luatex/generic/luaotfload/fontloader-font-cid.lua +2022/10/03 | 5388 | macros/luatex/generic/luaotfload/fontloader-data-con.lua +2022/10/03 | 53825 | macros/luatex/generic/luaotfload/luaotfload-tool.lua +2022/10/03 | 536610 | macros/luatex/latex/japanese-mathformulas/japanese-mathformulas.pdf +2022/10/03 | 52 | macros/luatex/generic/luaotfload/luaotfload-blacklist.cnf +2022/10/03 | 529 | macros/latex/contrib/proflycee/doc/testscript.py +2022/10/03 | 527570 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma +2022/10/03 | 52628 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma +2022/10/03 | 52370 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma +2022/10/03 | 52037 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma +2022/10/03 | 5116 | systems/texlive/tlnet/archive/dijkstra.r64580.tar.xz +2022/10/03 | 5086 | macros/latex/contrib/debate/debate.dtx +2022/10/03 | 500170 | macros/luatex/generic/luaotfload/luaotfload-latex.pdf +2022/10/03 | 49879 | biblio/bibtex/contrib/gbt7714/gbt7714-2005-author-year.bst +2022/10/03 | 49878 | biblio/bibtex/contrib/gbt7714/gbt7714-author-year.bst +2022/10/03 | 49268 | systems/texlive/tlnet/archive/bibarts.source.r64579.tar.xz +2022/10/03 | 4908 | systems/texlive/tlnet/archive/kdpcover.source.r64582.tar.xz +2022/10/03 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2022/10/03 | 48852 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma +2022/10/03 | 487773 | biblio/bibtex/contrib/gbt7714/gbt7714.pdf +2022/10/03 | 48728 | macros/luatex/generic/luaotfload/fontloader-basics-chr.lua +2022/10/03 | 481894 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma +2022/10/03 | 48038 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma +2022/10/03 | 4708 | macros/latex/contrib/to-be-determined/to-be-determined.dtx +2022/10/03 | 46322 | macros/luatex/generic/luaotfload/fontloader-util-str.lua +2022/10/03 | 461 | macros/luatex/latex/letgut/README.md +2022/10/03 | 46095 | biblio/bibtex/contrib/gbt7714/gbt7714-2005-numerical.bst +2022/10/03 | 46094 | biblio/bibtex/contrib/gbt7714/gbt7714-numerical.bst +2022/10/03 | 45834 | macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx +2022/10/03 | 45793 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma +2022/10/03 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +2022/10/03 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc +2022/10/03 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc +2022/10/03 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc +2022/10/03 | 4530 | macros/generic/markdown/markdown.css +2022/10/03 | 44587 | macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex +2022/10/03 | 43889 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma +2022/10/03 | 4377 | macros/generic/markdown/docstrip.cfg +2022/10/03 | 43618 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma +2022/10/03 | 43528 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma +2022/10/03 | 4336 | systems/texlive/tlnet/archive/babel-serbianc.r64588.tar.xz +2022/10/03 | 432909 | macros/latex/contrib/teubner/teubner-doc.pdf +2022/10/03 | 4269 | macros/latex/contrib/href-ul/href-ul.dtx +2022/10/03 | 42312 | macros/luatex/generic/luaotfload/luaotfload-harf-plug.lua +2022/10/03 | 421616 | systems/texlive/tlnet/archive/texlive-scripts.doc.r64577.tar.xz +2022/10/03 | 41 | macros/latex/contrib/crumbs/DEPENDS.txt +2022/10/03 | 41758 | macros/luatex/generic/luaotfload/fontloader-l-table.lua +2022/10/03 | 41303 | macros/luatex/generic/luaotfload/fontloader-l-unicode.lua +2022/10/03 | 41192 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma +2022/10/03 | 41180 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma +2022/10/03 | 4050 | macros/luatex/generic/luaotfload/luaotfload-harf-var-t2-writer.lua +2022/10/03 | 4047 | macros/luatex/generic/luaotfload/luaotfload-fallback.lua +2022/10/03 | 400818 | macros/latex/contrib/biblatex-contrib/biblatex-publist.zip +2022/10/03 | 40007 | macros/luatex/generic/luaotfload/filegraph.pdf +2022/10/03 | 398411 | macros/latex/contrib/ffcode.zip +2022/10/03 | 3956 | macros/luatex/latex/letgut/doc/localconf.tex +2022/10/03 | 395644 | macros/latex/contrib/ffcode/ffcode.pdf +2022/10/03 | 394143 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma +2022/10/03 | 38742 | macros/luatex/generic/luaotfload/fontloader-l-lpeg.lua +2022/10/03 | 3821 | macros/luatex/generic/luaotfload/fontloader-fonts-def.lua +2022/10/03 | 379438 | macros/luatex/latex/letgut/doc/letgut.pdf +2022/10/03 | 3788 | systems/texlive/tlnet/archive/yb-book.r64586.tar.xz +2022/10/03 | 3784 | macros/luatex/generic/luaotfload/README.md +2022/10/03 | 375557 | macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf +2022/10/03 | 37506 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma +2022/10/03 | 37051 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma +2022/10/03 | 3693 | macros/luatex/generic/luaotfload/fontloader-font-imp-italics.lua +2022/10/03 | 3674 | macros/luatex/generic/luaotfload/luaotfload-bcp47.lua +2022/10/03 | 3674 | macros/luatex/generic/luaotfload/fontloader-fonts-syn.lua +2022/10/03 | 361 | macros/luatex/generic/luaotfload/fontloader-l-function.lua +2022/10/03 | 3594 | macros/luatex/generic/luaotfload/fontloader-font-imp-ligatures.lua +2022/10/03 | 35836 | macros/luatex/generic/luaotfload/fontloader-font-otc.lua +2022/10/03 | 3561 | macros/generic/markdown/examples/example.md +2022/10/03 | 35265 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma +2022/10/03 | 352463 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma +2022/10/03 | 35231 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma +2022/10/03 | 34922 | macros/luatex/generic/luaotfload/fontloader-font-ott.lua +2022/10/03 | 34239 | macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua +2022/10/03 | 3406 | macros/luatex/generic/luaotfload/fontloader-font-imp-tex.lua +2022/10/03 | 33960 | macros/luatex/generic/luaotfload/fontloader-font-otl.lua +2022/10/03 | 33862 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma +2022/10/03 | 33529 | macros/luatex/generic/luaotfload/luaotfload-features.lua +2022/10/03 | 32 | macros/latex/contrib/proflycee/doc/basique.csv +2022/10/03 | 329599 | macros/latex/contrib/debate.zip +2022/10/03 | 328802 | macros/latex/contrib/debate/debate.pdf +2022/10/03 | 3287334 | macros/luatex/generic/luaotfload/luaotfload-characters.lua +2022/10/03 | 3261600 | systems/texlive/tlnet/archive/luatexja.doc.r64587.tar.xz +2022/10/03 | 325980 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma +2022/10/03 | 3258272 | systems/texlive/tlnet/archive/univie-ling.doc.r64584.tar.xz +2022/10/03 | 325484 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma +2022/10/03 | 32075 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma +2022/10/03 | 31 | macros/generic/markdown/VERSION +2022/10/03 | 31586 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma +2022/10/03 | 31563 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma +2022/10/03 | 31349 | macros/luatex/generic/luaotfload/fontloader-font-one.lua +2022/10/03 | 31223 | macros/luatex/generic/luaotfload/luaotfload-configuration.lua +2022/10/03 | 30572 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma +2022/10/03 | 30436 | macros/luatex/generic/luaotfload/luaotfload-parsers.lua +2022/10/03 | 30400 | systems/texlive/tlnet/archive/srdp-mathematik.r64583.tar.xz +2022/10/03 | 303076 | systems/texlive/tlnet/archive/kdpcover.doc.r64582.tar.xz +2022/10/03 | 295946 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma +2022/10/03 | 295685 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma +2022/10/03 | 295587 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma +2022/10/03 | 293708 | systems/texlive/tlnet/archive/babel-serbianc.doc.r64588.tar.xz +2022/10/03 | 2912 | systems/texlive/tlnet/archive/simplekv.r64578.tar.xz +2022/10/03 | 286686 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma +2022/10/03 | 286599 | macros/luatex/latex/letgut/source/letgut.org +2022/10/03 | 28592 | systems/texlive/tlnet/archive/bibarts.r64579.tar.xz +2022/10/03 | 28510 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma +2022/10/03 | 282532 | systems/texlive/tlnet/archive/yb-book.doc.r64586.tar.xz +2022/10/03 | 2821671 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma +2022/10/03 | 27 | macros/latex/contrib/clicks/DEPENDS.txt +2022/10/03 | 275 | macros/luatex/generic/luaotfload/luaotfload-main.lua +2022/10/03 | 274 | macros/luatex/latex/letgut/doc/letgut.bib +2022/10/03 | 27465 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma +2022/10/03 | 270467 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma +2022/10/03 | 2702 | macros/luatex/latex/letgut/doc/xindex-letgut.lua +2022/10/03 | 269492 | macros/latex-dev/required/firstaid.zip +2022/10/03 | 26896 | macros/generic/markdown/CHANGES.md +2022/10/03 | 2679 | macros/luatex/generic/luaotfload/fontloader-l-math.lua +2022/10/03 | 2674 | macros/latex/contrib/to-be-determined/to-be-determined.ins +2022/10/03 | 2667 | macros/luatex/generic/luaotfload/fontloader-font-vfc.lua +2022/10/03 | 2647 | macros/latex/contrib/href-ul/href-ul.ins +2022/10/03 | 2644 | macros/latex/contrib/ffcode/ffcode.ins +2022/10/03 | 2644 | macros/latex/contrib/debate/debate.ins +2022/10/03 | 2644 | macros/latex/contrib/crumbs/crumbs.ins +2022/10/03 | 2644 | macros/latex/contrib/clicks/clicks.ins +2022/10/03 | 2625 | macros/luatex/generic/luaotfload/fontloader-fonts-enc.lua +2022/10/03 | 260964 | macros/latex/contrib/crumbs.zip +2022/10/03 | 2582 | macros/luatex/generic/luaotfload/luaotfload-suppress.lua +2022/10/03 | 256895 | macros/latex/contrib/crumbs/crumbs.pdf +2022/10/03 | 255 | macros/luatex/latex/letgut/doc/listings-conf.tex +2022/10/03 | 25516629 | systems/texlive/tlnet/install-tl.zip +2022/10/03 | 25336 | macros/luatex/generic/luaotfload/luaotfload-filelist.lua +2022/10/03 | 25264 | macros/luatex/generic/luaotfload/fontloader-font-ocl.lua +2022/10/03 | 25212 | macros/luatex/latex/letgut/source/letgut-banner.org +2022/10/03 | 25119 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma +2022/10/03 | 2506 | macros/luatex/generic/luaotfload/luaotfload-scripts.lua +2022/10/03 | 24 | macros/latex/contrib/href-ul/DEPENDS.txt +2022/10/03 | 2476 | macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx +2022/10/03 | 247207 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma +2022/10/03 | 247188 | macros/latex/contrib/clicks.zip +2022/10/03 | 245152 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma +2022/10/03 | 243984 | macros/latex/contrib/clicks/clicks.pdf +2022/10/03 | 24211 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma +2022/10/03 | 2413328 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +2022/10/03 | 23951 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma +2022/10/03 | 235832 | macros/latex/contrib/to-be-determined.zip +2022/10/03 | 23399 | macros/luatex/generic/luaotfload/fontloader-fonts-tfm.lua +2022/10/03 | 232654 | macros/latex/contrib/to-be-determined/to-be-determined.pdf +2022/10/03 | 232639 | macros/latex/contrib/href-ul.zip +2022/10/03 | 23238 | macros/luatex/generic/luaotfload/fontloader-font-oto.lua +2022/10/03 | 23128 | systems/texlive/tlnet/archive/kdpcover.r64582.tar.xz +2022/10/03 | 229763 | macros/latex/contrib/href-ul/href-ul.pdf +2022/10/03 | 22371 | macros/generic/markdown/libraries/markdown-tinyyaml.lua +2022/10/03 | 22186 | macros/luatex/generic/luaotfload/fontloader-l-file.lua +2022/10/03 | 21 | macros/latex/contrib/to-be-determined/DEPENDS.txt +2022/10/03 | 21858 | macros/luatex/generic/luaotfload/luaotfload-diagnostics.lua +2022/10/03 | 21856 | macros/luatex/generic/luaotfload/NEWS +2022/10/03 | 21682 | macros/luatex/generic/luaotfload/scripts-demo.pdf +2022/10/03 | 213848 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma +2022/10/03 | 209137 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma +2022/10/03 | 20526 | macros/luatex/generic/luaotfload/luaotfload-harf-var-ttf.lua +2022/10/03 | 20435516 | systems/texlive/tlnet/install-tl-windows.exe +2022/10/03 | 203419 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma +2022/10/03 | 20268 | macros/luatex/generic/luaotfload/luaotfload-letterspace.lua +2022/10/03 | 2023132 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma +2022/10/03 | 19944 | macros/luatex/generic/luaotfload/fontloader-font-def.lua +2022/10/03 | 19746 | macros/luatex/generic/luaotfload/luaotfload-init.lua +2022/10/03 | 1974313 | install/macros/luatex/generic/luaotfload.tds.zip +2022/10/03 | 1973881 | macros/luatex/generic/luaotfload.zip +2022/10/03 | 196213 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma +2022/10/03 | 19564 | macros/luatex/generic/luaotfload/fontloader-font-map.lua +2022/10/03 | 19444 | macros/luatex/latex/letgut/doc/exemple-nouveautes.pdf +2022/10/03 | 191 | macros/luatex/generic/luaotfload/shaper-demo-graphite.tex +2022/10/03 | 191920 | systems/texlive/tlnet/archive/luatexja.r64587.tar.xz +2022/10/03 | 19011 | macros/luatex/generic/luaotfload/luaotfload-harf-define.lua +2022/10/03 | 18717 | macros/luatex/generic/luaotfload/fontloader-font-onr.lua +2022/10/03 | 18714 | macros/luatex/generic/luaotfload/COPYING +2022/10/03 | 186209 | macros/luatex/generic/luaotfload/fontloader-font-ots.lua +2022/10/03 | 18511 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma +2022/10/03 | 1850 | macros/luatex/generic/luaotfload/fontloader-l-boolean.lua +2022/10/03 | 18411 | macros/luatex/generic/luaotfload/fontloader-font-ota.lua +2022/10/03 | 18382 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma +2022/10/03 | 18378 | macros/luatex/generic/luaotfload/luaotfload.conf.rst +2022/10/03 | 18372 | macros/luatex/generic/luaotfload/luaotfload-colors.lua +2022/10/03 | 183533 | macros/luatex/latex/japanese-mathformulas/japanese-mathformulas.sty +2022/10/03 | 182 | macros/luatex/generic/luaotfload/shaper-demo.tex +2022/10/03 | 181725 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma +2022/10/03 | 1812 | macros/luatex/generic/luaotfload/luaotfload.sty +2022/10/03 | 1794 | macros/luatex/generic/luaotfload/fontloader-font-ini.lua +2022/10/03 | 17670169 | systems/texlive/tlnet/tlpkg/texlive.tlpdb +2022/10/03 | 17604 | macros/generic/markdown/README.md +2022/10/03 | 1756 | macros/generic/markdown/examples/latex.tex +2022/10/03 | 1731 | macros/luatex/latex/japanese-mathformulas/README.txt +2022/10/03 | 173177 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma +2022/10/03 | 1726 | macros/generic/markdown/examples/context-mkiv.tex +2022/10/03 | 169678 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma +2022/10/03 | 16794 | macros/luatex/generic/luaotfload/luaotfload.conf.5 +2022/10/03 | 165212 | macros/latex/contrib/teubner/teubner.dtx +2022/10/03 | 162285 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex +2022/10/03 | 16214 | macros/luatex/generic/luaotfload/luaotfload-latex.tex +2022/10/03 | 16116 | macros/luatex/generic/luaotfload/luaotfload-tool.rst +2022/10/03 | 16116 | macros/luatex/generic/luaotfload/luaotfload-case.lua +2022/10/03 | 160160 | systems/texlive/tlnet/archive/univie-ling.r64584.tar.xz +2022/10/03 | 160036 | systems/texlive/tlnet/archive/dijkstra.doc.r64580.tar.xz +2022/10/03 | 155432 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma +2022/10/03 | 154497 | macros/luatex/generic/luaotfload/fontloader-font-dsp.lua +2022/10/03 | 154201 | macros/luatex/latex/letgut/doc/letgut-banner-code.pdf +2022/10/03 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 +2022/10/03 | 1535 | macros/generic/markdown/examples/context-mkii.tex +2022/10/03 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 +2022/10/03 | 1520 | macros/luatex/latex/letgut/source/HOWTO.md +2022/10/03 | 15196 | macros/luatex/generic/luaotfload/fontloader-reference-load-order.lua +2022/10/03 | 150792 | systems/texlive/tlnet/archive/srdp-mathematik.doc.r64583.tar.xz +2022/10/03 | 15068 | macros/luatex/generic/luaotfload/luaotfload-multiscript.lua +2022/10/03 | 1503054 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma +2022/10/03 | 1497179 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma +2022/10/03 | 1496139 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma +2022/10/03 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2022/10/03 | 1458151 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma +2022/10/03 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2022/10/03 | 1449 | macros/luatex/generic/luaotfload/fontloader-font-lua.lua +2022/10/03 | 14434 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma +2022/10/03 | 1430525 | install/macros/luatex/latex/letgut.tds.zip +2022/10/03 | 14285 | macros/luatex/generic/luaotfload/luaotfload-harf-var-cff2.lua +2022/10/03 | 140951 | macros/generic/markdown/markdown.png +2022/10/03 | 140013 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma +2022/10/03 | 1395 | macros/latex/contrib/to-be-determined/README.md +2022/10/03 | 1376399 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma +2022/10/03 | 1375875 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma +2022/10/03 | 13565 | macros/luatex/generic/luaotfload/luaotfload.lua +2022/10/03 | 135465 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma +2022/10/03 | 13525 | macros/luatex/generic/luaotfload/fontloader-font-shp.lua +2022/10/03 | 1351 | macros/latex/contrib/ffcode/README.md +2022/10/03 | 134172 | macros/luatex/generic/luaotfload/luaotfload-database.lua +2022/10/03 | 1333 | macros/generic/markdown/markdown.ins +2022/10/03 | 132535 | macros/luatex/latex/japanese-mathformulas/japanese-mathformulas-sample.pdf +2022/10/03 | 1323744 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma +2022/10/03 | 130940 | systems/texlive/tlnet/archive/simplekv.doc.r64578.tar.xz +2022/10/03 | 1301733 | macros/luatex/latex/letgut.zip +2022/10/03 | 1295994 | install/macros/generic/markdown.tds.zip +2022/10/03 | 1284 | macros/latex/contrib/crumbs/README.md +2022/10/03 | 12829 | macros/luatex/generic/luaotfload/luaotfload-tool.1 +2022/10/03 | 128092 | macros/luatex/generic/luaotfload/fontloader-font-oup.lua +2022/10/03 | 12745 | macros/luatex/generic/luaotfload/fontloader-basics-gen.lua +2022/10/03 | 12704 | macros/luatex/generic/luaotfload/fontloader-font-imp-effects.lua +2022/10/03 | 126 | biblio/bibtex/contrib/gbt7714/DEPENDS.txt +2022/10/03 | 1262 | macros/latex/contrib/debate/README.md +2022/10/03 | 1248 | macros/latex/contrib/href-ul/README.md +2022/10/03 | 1236128 | systems/texlive/tlnet/archive/bibarts.doc.r64579.tar.xz +2022/10/03 | 1228403 | macros/generic/markdown.zip +2022/10/03 | 12224 | macros/luatex/generic/luaotfload/luaotfload-notdef.lua +2022/10/03 | 1221 | macros/luatex/latex/letgut/doc/latexmkrc +2022/10/03 | 120955 | biblio/bibtex/contrib/gbt7714/gbt7714.dtx +2022/10/03 | 119973 | macros/luatex/generic/luaotfload/fontloader-font-osd.lua +2022/10/03 | 11988 | macros/luatex/generic/luaotfload/fontloader-l-io.lua +2022/10/03 | 11928 | systems/texlive/tlnet/archive/hvfloat.r64581.tar.xz +2022/10/03 | 1172 | systems/win32/miktex/tm/packages/next/pr.ini +2022/10/03 | 1161751 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma +2022/10/03 | 1157851 | macros/latex/contrib/teubner.zip +2022/10/03 | 115581 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma +2022/10/03 | 11474 | macros/luatex/generic/luaotfload/fontloader-util-fil.lua +2022/10/03 | 113688 | systems/texlive/tlnet/archive/texlive-scripts.r64577.tar.xz +2022/10/03 | 11323 | macros/luatex/generic/luaotfload/luaotfload-log.lua +2022/10/03 | 112979 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma +2022/10/03 | 112878 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma +2022/10/03 | 1121 | macros/latex/contrib/clicks/README.md +2022/10/03 | 11209 | macros/luatex/generic/luaotfload/luaotfload-resolvers.lua +2022/10/03 | 109651 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma +2022/10/03 | 10888 | macros/latex/contrib/crumbs/crumbs.dtx +2022/10/03 | 1083 | macros/latex/contrib/to-be-determined/LICENSE.txt +2022/10/03 | 1083 | macros/latex/contrib/href-ul/LICENSE.txt +2022/10/03 | 1083 | macros/latex/contrib/ffcode/LICENSE.txt +2022/10/03 | 1083 | macros/latex/contrib/debate/LICENSE.txt +2022/10/03 | 1083 | macros/latex/contrib/crumbs/LICENSE.txt +2022/10/03 | 1083 | macros/latex/contrib/clicks/LICENSE.txt +2022/10/03 | 107439 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma +2022/10/03 | 10733 | macros/luatex/generic/luaotfload/luaotfload-loaders.lua +2022/10/03 | 106278 | macros/luatex/generic/luaotfload/luaotfload-main.tex +2022/10/03 | 10625 | macros/luatex/latex/japanese-mathformulas/japanese-mathformulas-sample.tex +2022/10/03 | 10621 | biblio/bibtex/contrib/gbt7714/gbt7714.sty +2022/10/03 | 104922 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma +2022/10/03 | 103598 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma +2022/10/03 | 10328200 | systems/texlive/tlnet/archive/hvfloat.doc.r64581.tar.xz +2022/10/03 | 103247 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma +2022/10/03 | 102502 | macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua +2022/10/03 | 10207 | macros/luatex/generic/luaotfload/fontloader-basics-nod.lua +2022/10/03 | 1004 | macros/luatex/generic/luaotfload/luaotfload-embolden.lua 2022/10/02 | 9924 | systems/texlive/tlnet/archive/teubner.r64574.tar.xz 2022/10/02 | 986 | macros/latex/contrib/srdp-mathematik/README.md 2022/10/02 | 98552 | systems/texlive/tlnet/archive/markdown.source.r64570.tar.xz 2022/10/02 | 9584 | macros/latex/contrib/univie-ling/README -2022/10/02 | 95468 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma 2022/10/02 | 945 | macros/luatex/generic/luatexja/tool/table_ivd_aj1.lua 2022/10/02 | 945 | macros/luatex/generic/luatexja/doc/jfm-testf.lua -2022/10/02 | 931 | systems/win32/miktex/tm/packages/pr.ini 2022/10/02 | 922480 | systems/texlive/tlnet/archive/proflycee.doc.r64573.tar.xz 2022/10/02 | 896 | macros/luatex/generic/luatexja/tool/otf-KozMinPr6N-Regular.txt 2022/10/02 | 885 | macros/luatex/generic/luatexja/src/patches/lltjp-stfloats.sty -2022/10/02 | 88483 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma -2022/10/02 | 8825 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma 2022/10/02 | 8695 | macros/luatex/generic/luatexja/src/ltj-otf.lua 2022/10/02 | 8660 | macros/luatex/generic/luatexja/src/ltjltxdoc.dtx 2022/10/02 | 8540 | macros/latex/contrib/kdpcover/kdpcover-vol-1.pdf 2022/10/02 | 85180 | systems/texlive/tlnet/archive/crimsonpro.doc.r64565.tar.xz 2022/10/02 | 825 | macros/luatex/generic/luatexja/src/patches/lltjp-collcell.sty -2022/10/02 | 824995 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma 2022/10/02 | 8172 | systems/texlive/tlnet/archive/flexipage.source.r64572.tar.xz -2022/10/02 | 81448 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma 2022/10/02 | 8103 | macros/luatex/generic/luatexja/src/jfm-min.lua -2022/10/02 | 79065 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma 2022/10/02 | 78447 | macros/latex/contrib/srdp-mathematik/srdp-mathematik.sty 2022/10/02 | 7790 | macros/luatex/generic/luatexja/tool/jfm-convert.lua -2022/10/02 | 77210 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma -2022/10/02 | 769651 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma 2022/10/02 | 7691 | macros/luatex/generic/luatexja/src/ltj-unicode-ccfix.lua 2022/10/02 | 7546 | macros/luatex/generic/luatexja/src/ltj-math.lua 2022/10/02 | 7436 | systems/texlive/tlnet/archive/babel-serbian.source.r64571.tar.xz -2022/10/02 | 74099 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma -2022/10/02 | 73686 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma -2022/10/02 | 73263 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma -2022/10/02 | 72978 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma +2022/10/02 | 7273 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2022/10/02 | 7256 | macros/latex/contrib/kdpcover/kdpcover-signature.pdf 2022/10/02 | 717361 | macros/luatex/generic/luatexja/doc/luatexja-en.pdf 2022/10/02 | 7156 | macros/latex/contrib/kdpcover/kdpcover-vol-3.pdf -2022/10/02 | 70940 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma 2022/10/02 | 7042 | macros/luatex/generic/luatexja/src/ltj-pretreat.lua 2022/10/02 | 70188 | macros/latex/contrib/hvfloat/latex/hvfloat.sty 2022/10/02 | 6922 | macros/luatex/generic/luatexja/src/addons/luatexja-otf.sty 2022/10/02 | 69217 | macros/luatex/generic/luatexja/doc/ltjltxdoc.pdf -2022/10/02 | 682214 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma -2022/10/02 | 68147 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma 2022/10/02 | 675560 | systems/texlive/tlnet/archive/forum.r64566.tar.xz 2022/10/02 | 6723 | macros/latex/contrib/kdpcover/kdpcover-vol-4.pdf -2022/10/02 | 665028 | systems/win32/miktex/tm/packages/files.csv.lzma -2022/10/02 | 662835 | systems/win32/miktex/tm/packages/next/files.csv.lzma 2022/10/02 | 6529 | macros/luatex/generic/luatexja/src/patches/lltjdefs.sty -2022/10/02 | 65129 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma 2022/10/02 | 6504 | macros/latex/contrib/kdpcover/kdpcover-vol-2.pdf -2022/10/02 | 63802 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma -2022/10/02 | 63241 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma -2022/10/02 | 630433 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma 2022/10/02 | 6246 | macros/luatex/generic/luatexja/src/ltj-base.sty -2022/10/02 | 62360 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma 2022/10/02 | 6235 | macros/luatex/generic/luatexja/src/ltj-latex.sty 2022/10/02 | 617 | macros/luatex/generic/luatexja/src/patches/lltjp-array.sty 2022/10/02 | 6135 | macros/luatex/generic/luatexja/src/patches/lltjp-tascmac.sty 2022/10/02 | 6060 | macros/luatex/generic/luatexja/tool/kyoikukanjiChars.tex -2022/10/02 | 599104 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma 2022/10/02 | 5931 | macros/luatex/generic/luatexja/src/ltj-lotf_aux.lua -2022/10/02 | 58632 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma 2022/10/02 | 5850 | macros/luatex/generic/luatexja/src/patches/lltjp-fontspec.sty -2022/10/02 | 5831823 | systems/texlive/tlnet/install-tl-unx.tar.gz 2022/10/02 | 580 | macros/luatex/generic/luatexja/tool/blocks2defcharrange.rb -2022/10/02 | 57506 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma -2022/10/02 | 57501 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma -2022/10/02 | 57316 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma 2022/10/02 | 57155 | macros/luatex/generic/luatexja/doc/luatexja-ruby.tex -2022/10/02 | 565080 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma 2022/10/02 | 55401 | macros/luatex/generic/luatexja/src/ltj-jfmglue.lua 2022/10/02 | 553 | macros/latex/contrib/univie-ling/doc/templates/template-handout-deutsch.tex -2022/10/02 | 55320 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma 2022/10/02 | 551 | macros/luatex/generic/luatexja/tool/jfm-readable.rb 2022/10/02 | 54427 | macros/luatex/generic/luatexja/src/ltj-jisx0208.lua 2022/10/02 | 543528 | macros/luatex/generic/luatexja/doc/luatexja.dtx 2022/10/02 | 531 | macros/latex/contrib/univie-ling/doc/templates/template-handout-english.tex 2022/10/02 | 5302 | macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty -2022/10/02 | 527568 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma -2022/10/02 | 52626 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma -2022/10/02 | 52369 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma 2022/10/02 | 5231 | macros/latex/contrib/univie-ling/doc/templates/template-expose-deutsch.tex 2022/10/02 | 5216 | macros/latex/contrib/yb-book/yb-book-logo.pdf 2022/10/02 | 5215 | macros/luatex/generic/luatexja/src/ltj-debug.lua -2022/10/02 | 52037 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma 2022/10/02 | 5040712 | macros/latex/contrib/hvfloat/doc/hvfloat.pdf 2022/10/02 | 49558 | macros/luatex/generic/luatexja/src/patches/lltjfont.sty -2022/10/02 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 -2022/10/02 | 48851 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma 2022/10/02 | 48433 | macros/latex/contrib/srdp-mathematik/srdp-mathematik.tex -2022/10/02 | 481893 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma 2022/10/02 | 4808 | macros/luatex/generic/luatexja/src/jfm-tmin.lua 2022/10/02 | 48082 | macros/luatex/generic/luatexja/src/ltj-jfont.lua -2022/10/02 | 48038 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma 2022/10/02 | 47687 | macros/latex/contrib/kdpcover/cactus.pdf 2022/10/02 | 4737 | macros/latex/contrib/univie-ling/doc/templates/template-expose-english.tex 2022/10/02 | 4727 | macros/latex/contrib/univie-ling/doc/templates/template-thesis-deutsch.tex 2022/10/02 | 47164 | systems/texlive/tlnet/archive/markdown.r64570.tar.xz 2022/10/02 | 460413 | macros/luatex/generic/luatexja/doc/ltjsclasses.pdf 2022/10/02 | 458697 | macros/latex/contrib/univie-ling/doc/univie-ling-thesis.pdf -2022/10/02 | 45795 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma 2022/10/02 | 457719 | macros/latex/contrib/univie-ling/doc/univie-ling-expose.pdf -2022/10/02 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc -2022/10/02 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc -2022/10/02 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc -2022/10/02 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc 2022/10/02 | 453762 | macros/latex/contrib/univie-ling/doc/univie-ling-paper.pdf 2022/10/02 | 4521 | macros/luatex/generic/luatexja/src/ltj-stack.lua 2022/10/02 | 4480 | macros/luatex/generic/luatexja/src/ltj-plain.sty @@ -113,25 +445,18 @@ 2022/10/02 | 4446908 | macros/latex/contrib/univie-ling.zip 2022/10/02 | 4426 | macros/latex/contrib/univie-ling/doc/univie-ling.tex 2022/10/02 | 4390 | macros/latex/contrib/hvfloat/Changes -2022/10/02 | 43889 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma 2022/10/02 | 4367 | macros/latex/contrib/univie-ling/doc/templates/template-paper-deutsch.tex -2022/10/02 | 43618 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma -2022/10/02 | 43528 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma 2022/10/02 | 4308 | macros/luatex/generic/luatexja/src/patches/lltjp-atbegshi.sty 2022/10/02 | 4268 | macros/latex/contrib/univie-ling/doc/templates/template-thesis-english.tex 2022/10/02 | 4262 | macros/luatex/generic/luatexja/tool/kyoikukanji.txt 2022/10/02 | 425 | macros/luatex/generic/luatexja/src/patches/lltjp-everyshi.sty 2022/10/02 | 425 | macros/latex/contrib/yb-book/DEPENDS.txt 2022/10/02 | 425624 | support/extractpdfmark.zip -2022/10/02 | 421616 | systems/texlive/tlnet/archive/texlive-scripts.doc.r64564.tar.xz 2022/10/02 | 4215 | macros/luatex/generic/luatexja/src/ltj-charrange.lua 2022/10/02 | 41572 | systems/texlive/tlnet/archive/teubner.source.r64574.tar.xz -2022/10/02 | 41192 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma -2022/10/02 | 41180 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma 2022/10/02 | 403681 | macros/luatex/generic/luatexja/doc/ltjclasses.pdf 2022/10/02 | 3965 | macros/latex/contrib/univie-ling/doc/templates/template-paper-english.tex 2022/10/02 | 3964 | systems/texlive/tlnet/archive/iexec.source.r64575.tar.xz -2022/10/02 | 394142 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma 2022/10/02 | 39302 | macros/luatex/generic/luatexja/src/ltj-direction.lua 2022/10/02 | 3912 | systems/texlive/tlnet/archive/flexipage.r64572.tar.xz 2022/10/02 | 390299 | macros/luatex/generic/luatexja/doc/luatexja-ruby.pdf @@ -141,57 +466,37 @@ 2022/10/02 | 3845689 | macros/luatex/generic/luatexja.zip 2022/10/02 | 3796 | macros/luatex/generic/luatexja/README 2022/10/02 | 3756 | macros/luatex/generic/luatexja/src/ltj-compat.lua -2022/10/02 | 37505 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma 2022/10/02 | 372059 | macros/latex/contrib/univie-ling/doc/templates/template-wlg-article.pdf -2022/10/02 | 37051 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma 2022/10/02 | 364169 | macros/latex/contrib/univie-ling/doc/univie-ling.pdf 2022/10/02 | 3602 | macros/latex/contrib/univie-ling/biblatex-univie-ling/univie-ling.cbx 2022/10/02 | 355 | macros/luatex/generic/luatexja/tool/otf-AdobeMingStd-Light.txt 2022/10/02 | 355 | macros/luatex/generic/luatexja/doc/luatexja.ins -2022/10/02 | 35264 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma -2022/10/02 | 352464 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma -2022/10/02 | 35230 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma 2022/10/02 | 3451 | macros/luatex/generic/luatexja/src/luatexja-compat.sty 2022/10/02 | 3429 | macros/luatex/generic/luatexja/src/ltj-inputbuf.lua 2022/10/02 | 342852 | macros/latex/contrib/univie-ling/doc/univie-ling-wlg.pdf 2022/10/02 | 339763 | macros/latex/contrib/kdpcover.zip -2022/10/02 | 33863 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma 2022/10/02 | 3371 | macros/luatex/generic/luatexja/src/patches/lltjp-xunicode.sty 2022/10/02 | 3360 | systems/texlive/tlnet/archive/babel-serbian.r64571.tar.xz 2022/10/02 | 33461 | macros/luatex/generic/luatexja/src/addons/luatexja-ajmacros.sty 2022/10/02 | 3313 | macros/luatex/generic/luatexja/tool/ltj-unicode-ccfix_make2.pl 2022/10/02 | 326 | macros/luatex/generic/luatexja/tool/otf-AdobeMyungjoStd-Medium.txt 2022/10/02 | 32604 | macros/latex/contrib/univie-ling/doc/univie-ling-thesis.tex -2022/10/02 | 325979 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma -2022/10/02 | 325482 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma 2022/10/02 | 3238 | macros/luatex/generic/luatexja/doc/jfm-test.lua -2022/10/02 | 32073 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma 2022/10/02 | 31807 | macros/luatex/generic/luatexja/src/ltj-ruby.lua 2022/10/02 | 317 | macros/luatex/generic/luatexja/tool/otf-AdobeSongStd-Light.txt -2022/10/02 | 31586 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma -2022/10/02 | 31562 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma 2022/10/02 | 3100 | macros/luatex/generic/luatexja/tool/table_jisx0208.tex 2022/10/02 | 3095296 | systems/texlive/tlnet/archive/imfellenglish.r64568.tar.xz 2022/10/02 | 30587 | macros/latex/contrib/univie-ling/tex/univie-ling-wlg.cls -2022/10/02 | 30570 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma -2022/10/02 | 295944 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma 2022/10/02 | 29572 | macros/luatex/generic/luatexja/src/addons/luatexja-preset.sty -2022/10/02 | 295605 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma -2022/10/02 | 295581 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma 2022/10/02 | 29378 | macros/luatex/generic/luatexja/src/luatexja-core.sty 2022/10/02 | 293533 | macros/latex/contrib/yb-book.zip 2022/10/02 | 29336 | macros/latex/contrib/univie-ling/doc/univie-ling-paper.tex 2022/10/02 | 292592 | systems/texlive/tlnet/archive/flexipage.doc.r64572.tar.xz -2022/10/02 | 286684 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma -2022/10/02 | 28510 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma 2022/10/02 | 284432 | systems/texlive/tlnet/archive/iexec.doc.r64575.tar.xz 2022/10/02 | 283494 | macros/latex/contrib/yb-book/yb-book.pdf -2022/10/02 | 2821671 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma 2022/10/02 | 28180 | macros/latex/contrib/univie-ling/tex/univie-ling-handout.cls -2022/10/02 | 27464 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma 2022/10/02 | 27448 | systems/texlive/tlnet/archive/forum.doc.r64566.tar.xz 2022/10/02 | 27058 | macros/luatex/generic/luatexja/src/lltjext.sty -2022/10/02 | 270466 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma 2022/10/02 | 26598 | macros/latex/contrib/univie-ling/doc/univie-ling-expose.tex 2022/10/02 | 26550 | macros/latex/contrib/univie-ling/tex/univie-ling-thesis.cls 2022/10/02 | 2648 | macros/latex/contrib/kdpcover/kdpcover.ins @@ -202,16 +507,10 @@ 2022/10/02 | 2582 | macros/luatex/generic/luatexja/src/jfm-kaiming.lua 2022/10/02 | 2573 | macros/luatex/generic/luatexja/src/jfm-quanjiao.lua 2022/10/02 | 256632 | systems/texlive/tlnet/archive/babel-serbian.doc.r64571.tar.xz -2022/10/02 | 25516608 | systems/texlive/tlnet/install-tl.zip 2022/10/02 | 2549080 | systems/texlive/tlnet/archive/crimsonpro.r64565.tar.xz -2022/10/02 | 25119 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma +2022/10/02 | 2496 | macros/latex/contrib/teubner/README 2022/10/02 | 24779 | macros/latex/contrib/univie-ling/tex/univie-ling-paper.cls -2022/10/02 | 247208 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma -2022/10/02 | 245151 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma 2022/10/02 | 24366 | macros/latex/contrib/univie-ling/biblatex-univie-ling/univie-ling.bbx -2022/10/02 | 24211 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma -2022/10/02 | 2416036 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz -2022/10/02 | 23950 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma 2022/10/02 | 2374 | macros/luatex/generic/luatexja/src/patches/lltjp-unicode-math.sty 2022/10/02 | 2340 | macros/luatex/generic/luatexja/src/jfm-jis.lua 2022/10/02 | 2258 | macros/latex/contrib/univie-ling/doc/templates/template-wlg-article.tex @@ -219,21 +518,15 @@ 2022/10/02 | 22079 | macros/luatex/generic/luatexja/src/luatexja.lua 2022/10/02 | 2203 | macros/luatex/generic/luatexja/src/jfm-CCT.lua 2022/10/02 | 2193 | macros/luatex/generic/luatexja/src/addons/luatexja-zhfonts.sty -2022/10/02 | 213847 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma 2022/10/02 | 21363 | macros/latex/contrib/univie-ling/tex/univie-ling-expose.cls 2022/10/02 | 213588 | systems/texlive/tlnet/archive/ibarra.doc.r64567.tar.xz -2022/10/02 | 209138 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma 2022/10/02 | 2057 | macros/luatex/generic/luatexja/src/patches/lltjp-microtype.sty -2022/10/02 | 20435943 | systems/texlive/tlnet/install-tl-windows.exe 2022/10/02 | 2042 | macros/luatex/generic/luatexja/src/luatexja.sty -2022/10/02 | 203421 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma -2022/10/02 | 2023131 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma 2022/10/02 | 200 | macros/luatex/generic/luatexja/src/jfm-prop.lua 2022/10/02 | 200633 | macros/latex/contrib/univie-ling/doc/templates/template-handout-english.pdf 2022/10/02 | 200629 | macros/latex/contrib/univie-ling/doc/templates/template-handout-deutsch.pdf 2022/10/02 | 196 | macros/luatex/generic/luatexja/src/jfm-propw.lua 2022/10/02 | 196 | macros/luatex/generic/luatexja/src/jfm-propv.lua -2022/10/02 | 196212 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma 2022/10/02 | 192 | macros/luatex/generic/luatexja/src/jfm-mono.lua 2022/10/02 | 19234 | macros/luatex/generic/luatexja/src/patches/lltjp-geometry.sty 2022/10/02 | 190297 | macros/latex/contrib/srdp-mathematik.zip @@ -244,51 +537,30 @@ 2022/10/02 | 18722 | macros/luatex/generic/luatexja/src/ltj-kinsoku.tex 2022/10/02 | 1864 | systems/texlive/tlnet/archive/iexec.r64575.tar.xz 2022/10/02 | 186018 | macros/latex/contrib/univie-ling/doc/templates/template-thesis-english.pdf -2022/10/02 | 18511 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma -2022/10/02 | 18381 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma -2022/10/02 | 181724 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma 2022/10/02 | 180179 | macros/latex/contrib/srdp-mathematik/srdp-mathematik.pdf 2022/10/02 | 17998673 | macros/latex/contrib/hvfloat.zip 2022/10/02 | 17873 | macros/latex/contrib/yb-book/yb-book.dtx 2022/10/02 | 178115 | macros/luatex/generic/luatexja/src/ltjclasses.dtx -2022/10/02 | 17669470 | systems/texlive/tlnet/tlpkg/texlive.tlpdb 2022/10/02 | 1740 | macros/luatex/generic/luatexja/tool/test_exist_nodelib.tex -2022/10/02 | 173178 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma 2022/10/02 | 173116 | systems/texlive/tlnet/archive/josefin.doc.r64569.tar.xz 2022/10/02 | 17284 | systems/texlive/tlnet/archive/proflycee.r64573.tar.xz 2022/10/02 | 171999 | macros/latex/contrib/univie-ling/doc/templates/template-paper-deutsch.pdf -2022/10/02 | 169678 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma 2022/10/02 | 167017 | macros/latex/contrib/univie-ling/doc/templates/template-paper-english.pdf 2022/10/02 | 166557 | macros/luatex/generic/luatexja/doc/lltjp-geometry.pdf 2022/10/02 | 1637 | macros/luatex/generic/luatexja/src/addons/luatexja-fontspec.sty 2022/10/02 | 1611 | macros/luatex/generic/luatexja/src/patches/lltjp-footmisc.sty 2022/10/02 | 15839 | macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-27c.sty -2022/10/02 | 155432 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma 2022/10/02 | 154928 | macros/luatex/generic/luatexja/src/ltj-ivd_aj1.lua -2022/10/02 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 2022/10/02 | 1536 | macros/luatex/generic/luatexja/COPYING -2022/10/02 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 -2022/10/02 | 1503053 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma -2022/10/02 | 1498087 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma -2022/10/02 | 1495594 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma 2022/10/02 | 14926 | macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua 2022/10/02 | 14914 | macros/luatex/generic/luatexja/src/patches/lltjp-listings.sty -2022/10/02 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 -2022/10/02 | 1458151 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma -2022/10/02 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 -2022/10/02 | 14434 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma 2022/10/02 | 143300 | systems/texlive/tlnet/archive/imfellenglish.doc.r64568.tar.xz 2022/10/02 | 1419488 | macros/latex/contrib/bibarts.zip -2022/10/02 | 140010 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma 2022/10/02 | 1397 | macros/luatex/generic/luatexja/tool/ivslist.tex 2022/10/02 | 13895 | macros/luatex/generic/luatexja/src/jfm-ujis.lua -2022/10/02 | 1376664 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma -2022/10/02 | 1376310 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma 2022/10/02 | 13726 | macros/luatex/generic/luatexja/doc/lltjp-geometry.tex -2022/10/02 | 135465 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma 2022/10/02 | 13346 | macros/luatex/generic/luatexja/src/ltj-setwidth.lua 2022/10/02 | 132481 | macros/latex/contrib/univie-ling/doc/templates/template-expose-deutsch.pdf -2022/10/02 | 1323743 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma 2022/10/02 | 12878 | macros/latex/contrib/univie-ling/doc/univie-ling-wlg.tex 2022/10/02 | 1279 | macros/latex/contrib/yb-book/README.md 2022/10/02 | 1278 | macros/luatex/generic/luatexja/src/ltjclasses.ins @@ -299,71 +571,40 @@ 2022/10/02 | 1224 | macros/luatex/generic/luatexja/tool/chars2defcharrange.rb 2022/10/02 | 12136 | macros/luatex/generic/luatexja/src/ltj-base.lua 2022/10/02 | 117 | macros/latex/contrib/kdpcover/DEPENDS.txt -2022/10/02 | 1172 | systems/win32/miktex/tm/packages/next/pr.ini -2022/10/02 | 1161753 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma -2022/10/02 | 115579 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma 2022/10/02 | 11506 | macros/luatex/generic/luatexja/src/jfm-ujisv.lua 2022/10/02 | 1149287 | macros/luatex/generic/luatexja/doc/luatexja-ja.pdf -2022/10/02 | 113672 | systems/texlive/tlnet/archive/texlive-scripts.r64564.tar.xz 2022/10/02 | 11335 | macros/luatex/generic/luatexja/tool/unicodeBlocks.tex 2022/10/02 | 1130 | macros/luatex/generic/luatexja/tool/function_uax50.lua -2022/10/02 | 112979 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma -2022/10/02 | 112879 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma 2022/10/02 | 1107128 | systems/texlive/tlnet/archive/teubner.doc.r64574.tar.xz 2022/10/02 | 1106004 | systems/texlive/tlnet/archive/ibarra.r64567.tar.xz 2022/10/02 | 1097100 | systems/texlive/tlnet/archive/josefin.r64569.tar.xz -2022/10/02 | 109651 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma 2022/10/02 | 1083 | macros/latex/contrib/yb-book/LICENSE.txt 2022/10/02 | 1083 | macros/latex/contrib/kdpcover/LICENSE.txt -2022/10/02 | 107437 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma -2022/10/02 | 104920 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma 2022/10/02 | 1047672 | systems/texlive/tlnet/archive/markdown.doc.r64570.tar.xz -2022/10/02 | 103597 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma -2022/10/02 | 103244 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma 2022/10/02 | 10311 | macros/luatex/generic/luatexja/src/addons/luatexja-ruby.sty -2022/10/01 | 9942 | macros/latex/contrib/teubner/teubner.txt -2022/10/01 | 968 | macros/latex/contrib/proflycee/doc/cap.csv -2022/10/01 | 944788 | macros/latex/contrib/proflycee.zip 2022/10/01 | 944476 | systems/texlive/tlnet/archive/tex4ht.r64562.tar.xz -2022/10/01 | 92792 | macros/latex/contrib/teubner/teubner-doc.tex -2022/10/01 | 888520 | macros/generic/markdown/markdown.pdf 2022/10/01 | 8835 | macros/generic/simplekv/simplekv.tex -2022/10/01 | 852659 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf 2022/10/01 | 8360 | macros/latex/contrib/iexec/iexec.dtx 2022/10/01 | 812 | macros/latex/contrib/dijkstra/README 2022/10/01 | 807036 | systems/texlive/tlnet/archive/install-latex-guide-zh-cn.doc.r64560.tar.xz -2022/10/01 | 78071 | macros/latex/contrib/proflycee/tex/ProfLycee.sty 2022/10/01 | 779595 | info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf -2022/10/01 | 75 | macros/generic/markdown/examples/scientists.csv -2022/10/01 | 736 | macros/latex/contrib/proflycee/doc/perroquet.csv -2022/10/01 | 733155 | macros/generic/markdown/markdown.html -2022/10/01 | 7182 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl -2022/10/01 | 687161 | macros/generic/markdown/markdown.dtx 2022/10/01 | 6833668 | systems/texlive/tlnet/archive/coelacanth.r64558.tar.xz 2022/10/01 | 67104 | systems/texlive/tlnet/archive/coelacanth.doc.r64558.tar.xz -2022/10/01 | 670679 | macros/latex/contrib/teubner/teubner.pdf 2022/10/01 | 616 | macros/generic/simplekv/README 2022/10/01 | 5780 | systems/texlive/tlnet/archive/abntexto.r64561.tar.xz 2022/10/01 | 568 | systems/texlive/tlnet/archive/install-latex-guide-zh-cn.r64560.tar.xz -2022/10/01 | 529 | macros/latex/contrib/proflycee/doc/testscript.py 2022/10/01 | 508108 | info/mathtrip.zip 2022/10/01 | 46154 | info/mathtrip/doc/HowtoModify.pdf -2022/10/01 | 4530 | macros/generic/markdown/markdown.css 2022/10/01 | 4490 | fonts/josefin/latex/josefin.sty 2022/10/01 | 439 | info/mathtrip/src/version.tex -2022/10/01 | 4377 | macros/generic/markdown/docstrip.cfg -2022/10/01 | 431632 | macros/latex/contrib/teubner/teubner-doc.pdf 2022/10/01 | 4152828 | install/fonts/imfellEnglish.tds.zip 2022/10/01 | 4142832 | fonts/imfellenglish.zip 2022/10/01 | 40 | macros/latex/contrib/iexec/DEPENDS.txt 2022/10/01 | 4023 | fonts/gandhi/latex/gandhi.sty 2022/10/01 | 367337 | macros/latex/contrib/bibarts/bibarts.tex -2022/10/01 | 3561 | macros/generic/markdown/examples/example.md 2022/10/01 | 34252 | systems/texlive/tlnet/archive/crimson.doc.r64559.tar.xz 2022/10/01 | 336771 | macros/latex/contrib/bibarts/ba-short.pdf 2022/10/01 | 33013 | macros/latex/contrib/bibarts/ba-short.tex -2022/10/01 | 32 | macros/latex/contrib/proflycee/doc/basique.csv -2022/10/01 | 31 | macros/generic/markdown/VERSION 2022/10/01 | 310294 | macros/latex/contrib/bibarts/bibsort.c 2022/10/01 | 304211 | macros/latex/contrib/flexipage.zip 2022/10/01 | 3005 | fonts/ibarra/latex/ibarra.sty @@ -374,12 +615,9 @@ 2022/10/01 | 2747939 | fonts/gandhi.zip 2022/10/01 | 269146 | macros/latex/contrib/flexipage/flexipage.pdf 2022/10/01 | 2641 | macros/latex/contrib/iexec/iexec.ins -2022/10/01 | 26269 | macros/generic/markdown/CHANGES.md 2022/10/01 | 25892 | info/mathtrip/src/MathTrip.sty -2022/10/01 | 2483 | macros/latex/contrib/teubner/README 2022/10/01 | 233472 | macros/latex/contrib/bibarts/bibsort.exe 2022/10/01 | 2244 | fonts/josefin/README -2022/10/01 | 22371 | macros/generic/markdown/libraries/markdown-tinyyaml.lua 2022/10/01 | 2088670 | install/fonts/ibarra.tds.zip 2022/10/01 | 2075 | fonts/gandhi/README 2022/10/01 | 2061248 | fonts/ibarra.zip @@ -387,36 +625,25 @@ 2022/10/01 | 18273 | macros/latex/contrib/dijkstra/dijkstra.sty 2022/10/01 | 1811 | fonts/imfellenglish/README 2022/10/01 | 177564 | info/mathtrip/MathTrip_lualatex.pdf -2022/10/01 | 17604 | macros/generic/markdown/README.md -2022/10/01 | 1737 | macros/generic/markdown/examples/latex.tex 2022/10/01 | 1716750 | install/fonts/josefin.tds.zip -2022/10/01 | 1699 | macros/generic/markdown/examples/context-mkiv.tex 2022/10/01 | 1699314 | fonts/josefin.zip -2022/10/01 | 164470 | macros/latex/contrib/teubner/teubner.dtx 2022/10/01 | 163948 | macros/latex/contrib/dijkstra.zip 2022/10/01 | 161 | macros/generic/simplekv/simplekv.sty -2022/10/01 | 161293 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex 2022/10/01 | 15796 | macros/generic/simplekv/simplekv-fr.tex 2022/10/01 | 155405 | macros/latex/contrib/dijkstra/dijkstra-fr.pdf -2022/10/01 | 1508 | macros/generic/markdown/examples/context-mkii.tex 2022/10/01 | 14998 | macros/latex/contrib/dijkstra/dijkstra-fr.tex 2022/10/01 | 148995 | macros/latex/contrib/bibarts/bibarts.sty 2022/10/01 | 142334 | info/mathtrip/MathTrip_xelatex.pdf -2022/10/01 | 140951 | macros/generic/markdown/markdown.png 2022/10/01 | 1393 | fonts/imfellenglish/latex/imfellEnglish.sty 2022/10/01 | 1383500 | systems/texlive/tlnet/archive/crimson.r64559.tar.xz 2022/10/01 | 137064 | systems/texlive/tlnet/archive/abntexto.doc.r64561.tar.xz 2022/10/01 | 1369 | macros/latex/contrib/iexec/README.md 2022/10/01 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r64562.tar.xz -2022/10/01 | 1333 | macros/generic/markdown/markdown.ins 2022/10/01 | 133045 | macros/generic/simplekv.zip -2022/10/01 | 1281969 | install/macros/generic/markdown.tds.zip 2022/10/01 | 1269772 | systems/texlive/tlnet/archive/tex4ht.source.r64562.tar.xz 2022/10/01 | 126106 | macros/generic/simplekv/simplekv-fr.pdf 2022/10/01 | 12460 | macros/latex/contrib/bibarts/README.txt 2022/10/01 | 1224 | info/mathtrip/README.txt -2022/10/01 | 1215194 | macros/generic/markdown.zip -2022/10/01 | 1155211 | macros/latex/contrib/teubner.zip 2022/10/01 | 1103 | macros/latex/contrib/flexipage/README.txt 2022/10/01 | 1083 | macros/latex/contrib/iexec/LICENSE.txt 2022/10/01 | 1071753 | macros/latex/contrib/bibarts/bibarts.pdf @@ -1028,213 +1255,3 @@ 2022/09/27 | 1125 | macros/generic/chemfig/README 2022/09/27 | 1122712 | macros/latex/contrib/se2thesis/se2thesis-master-thesis-example.pdf 2022/09/27 | 1022 | macros/latex/contrib/media4svg/ChangeLog -2022/09/26 | 9928 | usergrps/usergrps/de.html -2022/09/26 | 9866 | usergrps/usergrps/pl.html -2022/09/26 | 9861 | usergrps/usergrps/hu.html -2022/09/26 | 9853 | macros/latex/contrib/wargame/source/hex/terrain/swamp.dtx -2022/09/26 | 9803 | usergrps/usergrps/cz.html -2022/09/26 | 9701 | usergrps/usergrps/kr.html -2022/09/26 | 9682 | usergrps/usergrps/fr.html -2022/09/26 | 9678 | usergrps/usergrps/bg.html -2022/09/26 | 9640 | usergrps/usergrps/cn.html -2022/09/26 | 9637 | usergrps/usergrps/nl.html -2022/09/26 | 961699 | macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf -2022/09/26 | 95932 | systems/texlive/tlnet/archive/luatruthtable.doc.r64508.tar.xz -2022/09/26 | 9584 | usergrps/usergrps/it.html -2022/09/26 | 9581 | usergrps/usergrps/es.html -2022/09/26 | 9542 | usergrps/usergrps/labels.pdf -2022/09/26 | 9472 | usergrps/usergrps/us.html -2022/09/26 | 9457 | usergrps/usergrps/gr.html -2022/09/26 | 9436 | usergrps/usergrps/esc.html -2022/09/26 | 9430 | usergrps/usergrps/pt.html -2022/09/26 | 9412 | usergrps/usergrps/vn.html -2022/09/26 | 9402 | usergrps/usergrps/no.html -2022/09/26 | 9357 | usergrps/usergrps/ie.html -2022/09/26 | 9351 | usergrps/usergrps/za.html -2022/09/26 | 9348 | usergrps/usergrps/lt.html -2022/09/26 | 9347 | usergrps/usergrps/br.html -2022/09/26 | 9341 | usergrps/usergrps/uy.html -2022/09/26 | 9332 | usergrps/usergrps/is.html -2022/09/26 | 932 | macros/latex/contrib/wargame/source/package.dtx -2022/09/26 | 9307 | usergrps/usergrps/dk.html -2022/09/26 | 9301 | usergrps/usergrps/kh.html -2022/09/26 | 9291 | usergrps/usergrps/mx.html -2022/09/26 | 9286 | usergrps/usergrps/tw.html -2022/09/26 | 9211 | usergrps/usergrps/ee.html -2022/09/26 | 89859 | macros/latex/contrib/wargame/source/natoapp6c/symbols.dtx -2022/09/26 | 88197 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx -2022/09/26 | 8618 | macros/latex/contrib/wargame/source/Makefile -2022/09/26 | 84739 | macros/latex/contrib/wargame/source/wargame.dtx -2022/09/26 | 833394 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf -2022/09/26 | 8296 | macros/latex/contrib/wargame/source/hex/terrain/village.dtx -2022/09/26 | 821 | macros/latex/contrib/wargame/doc/tutorial/patch.py -2022/09/26 | 8205 | macros/latex/contrib/wargame/source/hex/terrain.dtx -2022/09/26 | 8007 | macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md -2022/09/26 | 7889 | macros/latex/contrib/wargame/source/hex/board.dtx -2022/09/26 | 7654 | macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty -2022/09/26 | 749246 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf -2022/09/26 | 742 | macros/latex/contrib/wargame/source/natoapp6c/compat/seamine.dtx -2022/09/26 | 72949 | macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx -2022/09/26 | 7250827 | macros/latex-dev/required/tools.zip -2022/09/26 | 7224 | systems/texlive/tlnet/archive/lettrine.r64511.tar.xz -2022/09/26 | 7200 | systems/texlive/tlnet/archive/udes-genie-these.r64509.tar.xz -2022/09/26 | 7038 | macros/latex/contrib/wargame/source/wargame.ins -2022/09/26 | 686251 | macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf -2022/09/26 | 681205 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf -2022/09/26 | 67833 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx -2022/09/26 | 6776 | systems/texlive/tlnet/archive/collection-latexextra.r64512.tar.xz -2022/09/26 | 6684 | systems/texlive/tlnet/archive/texfot.r64507.tar.xz -2022/09/26 | 66295 | macros/latex/contrib/wargame/doc/tutorial/game.sty -2022/09/26 | 662797 | install/fonts/theanooldstyle.tds.zip -2022/09/26 | 6573 | macros/latex/contrib/wargame/source/natoapp6c/core.dtx -2022/09/26 | 654847 | fonts/theanooldstyle.zip -2022/09/26 | 642 | macros/latex/contrib/wargame/source/hex/terrain/tree.dtx -2022/09/26 | 6413 | macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx -2022/09/26 | 6409 | usergrps/usergrps/index.html -2022/09/26 | 63555 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx -2022/09/26 | 61943 | macros/latex/contrib/wargame/source/hex/terrain/rough.dtx -2022/09/26 | 61900 | systems/texlive/tlnet/archive/crefthe.doc.r64498.tar.xz -2022/09/26 | 618 | macros/latex/contrib/wargame/source/hex/terrain/mountain.dtx -2022/09/26 | 591324 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf -2022/09/26 | 590276 | systems/texlive/tlnet/archive/overlock.r64495.tar.xz -2022/09/26 | 586518 | macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf -2022/09/26 | 583838 | macros/latex/contrib/wargame/doc/tutorial/game.pdf -2022/09/26 | 582749 | macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf -2022/09/26 | 580 | macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty -2022/09/26 | 5683 | macros/latex/contrib/wargame/doc/tutorial/game.tex -2022/09/26 | 562768 | install/fonts/theanomodern.tds.zip -2022/09/26 | 560813 | macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf -2022/09/26 | 557451 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf -2022/09/26 | 554814 | fonts/theanomodern.zip -2022/09/26 | 550143 | install/fonts/theanodidot.tds.zip -2022/09/26 | 543714 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf -2022/09/26 | 543200 | systems/texlive/tlnet/archive/sanskrit.doc.r64502.tar.xz -2022/09/26 | 542187 | fonts/theanodidot.zip -2022/09/26 | 540495 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf -2022/09/26 | 535895 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf -2022/09/26 | 526052 | macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf -2022/09/26 | 5228 | macros/latex/contrib/wargame/source/natoapp6c/compat/seasurface.dtx -2022/09/26 | 515125 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf -2022/09/26 | 514280 | macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf -2022/09/26 | 514004 | systems/texlive/tlnet/archive/universalis.r64505.tar.xz -2022/09/26 | 5043 | macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx -2022/09/26 | 48927 | usergrps/usergrps/lugs.pdf -2022/09/26 | 4884 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.ins -2022/09/26 | 483896 | systems/texlive/tlnet/archive/tikz-ext.doc.r64506.tar.xz -2022/09/26 | 4715 | macros/latex/contrib/wargame/source/natoapp6c/compat/equipment.dtx -2022/09/26 | 46705 | macros/latex/contrib/wargame/source/hex/terrain/woods.dtx -2022/09/26 | 462 | macros/latex/contrib/wargame/source/hex/tile.dtx -2022/09/26 | 4579 | fonts/neo-euler/neo-euler.sty -2022/09/26 | 455669 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf -2022/09/26 | 4514 | macros/latex/contrib/wargame/source/hex/labels.dtx -2022/09/26 | 4491 | macros/latex/contrib/wargame/source/natoapp6c/list.dtx -2022/09/26 | 440624 | systems/texlive/tlnet/archive/jobname-suffix.doc.r64512.tar.xz -2022/09/26 | 4405 | macros/latex/contrib/wargame/source/tests/test.tex -2022/09/26 | 438548 | fonts/neo-euler/Neo-Euler.otf -2022/09/26 | 436654 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf -2022/09/26 | 432806 | macros/latex/contrib/wargame/doc/compat.pdf -2022/09/26 | 426054 | macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf -2022/09/26 | 419900 | systems/texlive/tlnet/archive/semantex.doc.r64510.tar.xz -2022/09/26 | 413 | macros/latex/contrib/wargame/source/natoapp6c/compat/missile.dtx -2022/09/26 | 41240 | macros/latex/contrib/wargame/source/util/core.dtx -2022/09/26 | 4041 | macros/latex/contrib/pdfmanagement-testphase/l3ref-tmp.sty -2022/09/26 | 39916 | systems/texlive/tlnet/archive/overlock.doc.r64495.tar.xz -2022/09/26 | 39588 | macros/latex/contrib/wargame/source/hex/terrain/light_woods.dtx -2022/09/26 | 385718 | macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf -2022/09/26 | 38412818 | macros/latex-dev/base.zip -2022/09/26 | 37441 | macros/latex/contrib/wargame/source/hex/terrain/beach.dtx -2022/09/26 | 37340 | macros/latex/contrib/wargame/source/hex/terrain/mountains.dtx -2022/09/26 | 3658 | macros/latex/contrib/wargame/source/hex/ridges.dtx -2022/09/26 | 35596 | systems/texlive/tlnet/archive/universalis.doc.r64505.tar.xz -2022/09/26 | 33712 | systems/texlive/tlnet/archive/texfot.doc.r64507.tar.xz -2022/09/26 | 336512 | systems/texlive/tlnet/archive/plex.doc.r64496.tar.xz -2022/09/26 | 33099 | usergrps/usergrps/lugs.html -2022/09/26 | 3244 | systems/texlive/tlnet/archive/crefthe.r64498.tar.xz -2022/09/26 | 3230740 | systems/texlive/tlnet/archive/tinos.r64504.tar.xz -2022/09/26 | 3210 | macros/latex/contrib/wargame/source/natoapp6c/weaponry.dtx -2022/09/26 | 3209 | macros/latex/contrib/wargame/source/natoapp6c/compat/air.dtx -2022/09/26 | 30678 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx -2022/09/26 | 3022 | macros/latex/contrib/wargame/source/chit/elements.dtx -2022/09/26 | 29268 | systems/texlive/tlnet/archive/tinos.doc.r64504.tar.xz -2022/09/26 | 2901441 | install/macros/latex/contrib/wargame.tds.zip -2022/09/26 | 2888 | macros/latex/contrib/wargame/source/natoapp6c/compat/subsurface.dtx -2022/09/26 | 2880 | macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty -2022/09/26 | 286324 | systems/texlive/tlnet/archive/lettrine.doc.r64511.tar.xz -2022/09/26 | 28627 | macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx -2022/09/26 | 2846 | macros/latex/contrib/wargame/source/natoapp6c/echelon.dtx -2022/09/26 | 2835 | macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty -2022/09/26 | 27907 | macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx -2022/09/26 | 26550 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx -2022/09/26 | 26540 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx -2022/09/26 | 2651836 | macros/latex/contrib/wargame.zip -2022/09/26 | 26344 | systems/texlive/tlnet/archive/semantex.r64510.tar.xz -2022/09/26 | 2493 | fonts/theanooldstyle/latex/TheanoOldStyle.sty -2022/09/26 | 24914 | macros/latex/contrib/wargame/source/hex/terrain/town.dtx -2022/09/26 | 2450 | macros/latex/contrib/wargame/source/hex/towns.dtx -2022/09/26 | 2403 | fonts/theanomodern/latex/TheanoModern.sty -2022/09/26 | 2358 | fonts/theanodidot/latex/TheanoDidot.sty -2022/09/26 | 2311 | macros/latex/contrib/wargame/source/hex/core.dtx -2022/09/26 | 2278 | macros/latex/contrib/wargame/source/hex/extra.dtx -2022/09/26 | 2274 | macros/latex/contrib/wargame/source/natoapp6c/compat/space.dtx -2022/09/26 | 2267 | macros/latex/contrib/wargame/source/natoapp6c/frames/base.dtx -2022/09/26 | 22476 | systems/texlive/tlnet/archive/sanskrit.source.r64502.tar.xz -2022/09/26 | 2236 | systems/texlive/tlnet/archive/luatruthtable.r64508.tar.xz -2022/09/26 | 2208 | fonts/theanodidot/README -2022/09/26 | 21991 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx -2022/09/26 | 2134 | macros/latex/contrib/pdfmanagement-testphase/luaotfload-l3color-tmp.lua -2022/09/26 | 20960 | usergrps/usergrps/lugs.tex -2022/09/26 | 20824 | systems/texlive/tlnet/archive/tikz-ext.r64506.tar.xz -2022/09/26 | 20779 | macros/latex/contrib/wargame/source/natoapp6c/shape.dtx -2022/09/26 | 20435 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx -2022/09/26 | 2014 | fonts/neo-euler/README.md -2022/09/26 | 2009 | macros/latex/contrib/wargame/source/tests/chits.dtx -2022/09/26 | 19820 | macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx -2022/09/26 | 1944 | macros/latex/contrib/wargame/source/tests/map.dtx -2022/09/26 | 1911 | macros/latex/contrib/wargame/source/natoapp6c/util.dtx -2022/09/26 | 1878261 | fonts/neo-euler.zip -2022/09/26 | 184493 | macros/latex/contrib/wargame/doc/symbols.pdf -2022/09/26 | 1822 | macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty -2022/09/26 | 18195 | macros/latex/contrib/wargame/source/natoapp6c/frames/unknown.dtx -2022/09/26 | 18170 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx -2022/09/26 | 18121 | macros/latex/contrib/wargame/source/chit/shape.dtx -2022/09/26 | 1807 | macros/latex/contrib/wargame/source/natoapp6c/text.dtx -2022/09/26 | 18021 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx -2022/09/26 | 18011 | fonts/neo-euler/Neo-Euler.ltx -2022/09/26 | 176582 | macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx -2022/09/26 | 1752 | systems/texlive/tlnet/archive/jobname-suffix.r64512.tar.xz -2022/09/26 | 17304 | macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx -2022/09/26 | 17184 | systems/texlive/tlnet/archive/lettrine.source.r64511.tar.xz -2022/09/26 | 1686 | fonts/theanooldstyle/README -2022/09/26 | 16836 | fonts/neo-euler/unimath-euler.ltx -2022/09/26 | 1670 | fonts/theanomodern/README -2022/09/26 | 1653 | macros/latex/contrib/wargame/source/natoapp6c/compat/installation.dtx -2022/09/26 | 1648 | systems/texlive/tlnet/archive/collection-publishers.r64513.tar.xz -2022/09/26 | 16328 | systems/texlive/tlnet/archive/sanskrit.r64502.tar.xz -2022/09/26 | 15937 | macros/latex/contrib/wargame/source/natoapp6c/frames/hostile.dtx -2022/09/26 | 15651 | macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx -2022/09/26 | 15175 | macros/latex/contrib/wargame/source/natoapp6c/frames/neutral.dtx -2022/09/26 | 15054 | macros/latex/contrib/wargame/source/natoapp6c/frames/friendly.dtx -2022/09/26 | 150154 | macros/latex/contrib/pdfmanagement-testphase/fontspec-luatex-tmp-ltx.sty -2022/09/26 | 1452646 | fonts/neo-euler/unimath-euler.pdf -2022/09/26 | 14480 | systems/texlive/tlnet/archive/udes-genie-these.source.r64509.tar.xz -2022/09/26 | 13995 | macros/latex/contrib/wargame/doc/tutorial/export.tex -2022/09/26 | 1359 | macros/latex/contrib/wargame/source/natoapp6c/compat/activity.dtx -2022/09/26 | 134087 | fonts/neo-euler/Neo-Euler.pdf -2022/09/26 | 133283 | macros/latex/contrib/wargame/source/utils/wgexport.py -2022/09/26 | 1310006 | macros/latex/contrib/wargame/doc/wargame.pdf -2022/09/26 | 127040 | systems/texlive/tlnet/archive/udes-genie-these.doc.r64509.tar.xz -2022/09/26 | 12681 | macros/latex/contrib/wargame/source/chit/misc.dtx -2022/09/26 | 1256 | macros/latex/contrib/wargame/doc/tutorial/README.md -2022/09/26 | 12168 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx -2022/09/26 | 1200 | macros/latex/contrib/pdfmanagement-testphase/README.md -2022/09/26 | 11934 | macros/latex/contrib/wargame/source/hex/shape.dtx -2022/09/26 | 119307 | macros/latex/contrib/wargame/source/hex/terrain/city.dtx -2022/09/26 | 1191 | macros/latex/contrib/wargame/source/chit/core.dtx -2022/09/26 | 11607 | macros/latex/contrib/wargame/source/hex/coord.dtx -2022/09/26 | 11385678 | macros/latex/contrib/pdfmanagement-testphase.zip -2022/09/26 | 11120 | macros/latex/contrib/wargame/source/natoapp6c/compat/land.dtx -2022/09/26 | 10843 | macros/latex/contrib/wargame/README.md -2022/09/26 | 1056 | macros/latex/contrib/wargame/doc/tutorial/Makefile -2022/09/26 | 10488340 | systems/texlive/tlnet/archive/plex.r64496.tar.xz -2022/09/26 | 10300 | macros/latex/contrib/wargame/source/utils/wgsvg2tikz.py -2022/09/26 | 10124 | macros/latex/contrib/wargame/source/hex/paths.dtx diff --git a/biblio/bibtex/contrib/gbt7714/CHANGELOG.md b/biblio/bibtex/contrib/gbt7714/CHANGELOG.md index 5b19827d80..afd2d5c033 100644 --- a/biblio/bibtex/contrib/gbt7714/CHANGELOG.md +++ b/biblio/bibtex/contrib/gbt7714/CHANGELOG.md @@ -7,13 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [v2.1.5] - 2022-10-03 + +### Changed + +- “volume”和“number”改为缩写“Vol.”和“No.”([#104](https://github.com/zepinglee/gbt7714-bibtex-style/issues/104))。 +- 纯电子文献缺失“出版日期”时不再警告。 + ## [v2.1.4] - 2022-03-21 ### Added -- 新增选项 `component.part.label` 控制表示析出文献的符号,可选 `“slash”`, `"in"`, `"none"`。 -- 新增 `entrysubtype` 域的支持([hushidong/biblatex-gb7714-2015/#113](https://github.com/hushidong/biblatex-gb7714-2015/issues/113))。 -- 不著录第 1 版([hushidong/biblatex-gb7714-2015#117](https://github.com/hushidong/biblatex-gb7714-2015/issues/117)。 +- 新增选项 `component.part.label` 控制表示析出文献的符号,可选 `"slash"`, `"in"`, `"none"`。 +- 新增 `entrysubtype` 域的支持([hushidong/biblatex-gb7714-2015#113](https://github.com/hushidong/biblatex-gb7714-2015/issues/113))。 +- 不著录第 1 版([hushidong/biblatex-gb7714-2015#117](https://github.com/hushidong/biblatex-gb7714-2015/issues/117))。 ### Changed @@ -226,7 +233,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Initial release.。 -[Unreleased]: https://github.com/zepinglee/gbt7714-bibtex-style/compare/v2.1.4...HEAD +[Unreleased]: https://github.com/zepinglee/gbt7714-bibtex-style/compare/v2.1.5...HEAD +[v2.1.5]: https://github.com/zepinglee/gbt7714-bibtex-style/compare/v2.1.4...v2.1.5 [v2.1.4]: https://github.com/zepinglee/gbt7714-bibtex-style/compare/v2.1.3...v2.1.4 [v2.1.3]: https://github.com/zepinglee/gbt7714-bibtex-style/compare/v2.1.2...v2.1.3 [v2.1.2]: https://github.com/zepinglee/gbt7714-bibtex-style/compare/v2.1.1...v2.1.2 diff --git a/biblio/bibtex/contrib/gbt7714/DEPENDS.txt b/biblio/bibtex/contrib/gbt7714/DEPENDS.txt new file mode 100644 index 0000000000..f3836ef52d --- /dev/null +++ b/biblio/bibtex/contrib/gbt7714/DEPENDS.txt @@ -0,0 +1,5 @@ +# The format of this file is described in https://www.tug.org/texlive/pkgcontrib.html#deps. + +hard bibtex +hard natbib +hard url diff --git a/biblio/bibtex/contrib/gbt7714/README.md b/biblio/bibtex/contrib/gbt7714/README.md index 3f6e2130c4..193d17e26e 100644 --- a/biblio/bibtex/contrib/gbt7714/README.md +++ b/biblio/bibtex/contrib/gbt7714/README.md @@ -44,7 +44,7 @@ GB/T 7714—2015 《信息与文献 参考文献著录规则》是中国的参 ## 使用方法 -以下是 \pkg{gbt7714} 宏包的一个简单示例。 +以下是 `gbt7714` 宏包的一个简单示例。 ```latex \begin{latex} \documentclass{ctexart} @@ -60,9 +60,9 @@ GB/T 7714—2015 《信息与文献 参考文献著录规则》是中国的参 1. 在导言区调用宏包 `gbt7714`; -2. 在正文中 `\cite` 文献; +2. 使用 `\bibliographystyle` 选择参考文献的样式; -3. 使用 `\bibliographystyle` 选择参考文献表的样式; +3. 在正文中 `\cite` 文献; 4. 使用 `\bibliography` 命令生成参考文献表。 diff --git a/biblio/bibtex/contrib/gbt7714/gbt7714-2005-author-year.bst b/biblio/bibtex/contrib/gbt7714/gbt7714-2005-author-year.bst index fd4f0c4c05..fdd048d026 100644 --- a/biblio/bibtex/contrib/gbt7714/gbt7714-2005-author-year.bst +++ b/biblio/bibtex/contrib/gbt7714/gbt7714-2005-author-year.bst @@ -8,7 +8,7 @@ %% ------------------------------------------------------------------- %% GB/T 7714 BibTeX Style %% https://github.com/zepinglee/gbt7714-bibtex-style -%% Version: 2022/03/21 v2.1.4 +%% Version: 2022/10/03 v2.1.5 %% ------------------------------------------------------------------- %% Copyright (C) 2016--2022 by Zeping Lee %% ------------------------------------------------------------------- @@ -887,7 +887,7 @@ FUNCTION {format.volume} { volume is.number { entry.lang lang.zh = { "第 " volume * " 卷" * } - { "volume" volume tie.or.space.connect } + { "Vol." volume tie.or.space.connect } if$ } { volume } @@ -902,7 +902,7 @@ FUNCTION {format.number} { number is.number { entry.lang lang.zh = { "第 " number * " 册" * } - { "number" number tie.or.space.connect } + { "No." number tie.or.space.connect } if$ } { number } @@ -1311,7 +1311,10 @@ FUNCTION {format.year} { year extract.before.slash extra.label * } { date empty$ not { date extract.before.dash extra.label * } - { "empty year in " cite$ * warning$ + { entry.is.electronic not + { "empty year in " cite$ * warning$ } + 'skip$ + if$ urldate empty$ not { "[" urldate extract.before.dash * extra.label * "]" * } { "" } diff --git a/biblio/bibtex/contrib/gbt7714/gbt7714-2005-numerical.bst b/biblio/bibtex/contrib/gbt7714/gbt7714-2005-numerical.bst index 3b4b5c0eee..f0baa3b39d 100644 --- a/biblio/bibtex/contrib/gbt7714/gbt7714-2005-numerical.bst +++ b/biblio/bibtex/contrib/gbt7714/gbt7714-2005-numerical.bst @@ -8,7 +8,7 @@ %% ------------------------------------------------------------------- %% GB/T 7714 BibTeX Style %% https://github.com/zepinglee/gbt7714-bibtex-style -%% Version: 2022/03/21 v2.1.4 +%% Version: 2022/10/03 v2.1.5 %% ------------------------------------------------------------------- %% Copyright (C) 2016--2022 by Zeping Lee %% ------------------------------------------------------------------- @@ -877,7 +877,7 @@ FUNCTION {format.volume} { volume is.number { entry.lang lang.zh = { "第 " volume * " 卷" * } - { "volume" volume tie.or.space.connect } + { "Vol." volume tie.or.space.connect } if$ } { volume } @@ -892,7 +892,7 @@ FUNCTION {format.number} { number is.number { entry.lang lang.zh = { "第 " number * " 册" * } - { "number" number tie.or.space.connect } + { "No." number tie.or.space.connect } if$ } { number } @@ -1301,7 +1301,10 @@ FUNCTION {format.year} { year extract.before.slash extra.label * } { date empty$ not { date extract.before.dash extra.label * } - { "empty year in " cite$ * warning$ + { entry.is.electronic not + { "empty year in " cite$ * warning$ } + 'skip$ + if$ urldate empty$ not { "[" urldate extract.before.dash * extra.label * "]" * } { "" } diff --git a/biblio/bibtex/contrib/gbt7714/gbt7714-author-year.bst b/biblio/bibtex/contrib/gbt7714/gbt7714-author-year.bst index 4637e4d270..51843b4f5e 100644 --- a/biblio/bibtex/contrib/gbt7714/gbt7714-author-year.bst +++ b/biblio/bibtex/contrib/gbt7714/gbt7714-author-year.bst @@ -8,7 +8,7 @@ %% ------------------------------------------------------------------- %% GB/T 7714 BibTeX Style %% https://github.com/zepinglee/gbt7714-bibtex-style -%% Version: 2022/03/21 v2.1.4 +%% Version: 2022/10/03 v2.1.5 %% ------------------------------------------------------------------- %% Copyright (C) 2016--2022 by Zeping Lee %% ------------------------------------------------------------------- @@ -887,7 +887,7 @@ FUNCTION {format.volume} { volume is.number { entry.lang lang.zh = { "第 " volume * " 卷" * } - { "volume" volume tie.or.space.connect } + { "Vol." volume tie.or.space.connect } if$ } { volume } @@ -902,7 +902,7 @@ FUNCTION {format.number} { number is.number { entry.lang lang.zh = { "第 " number * " 册" * } - { "number" number tie.or.space.connect } + { "No." number tie.or.space.connect } if$ } { number } @@ -1311,7 +1311,10 @@ FUNCTION {format.year} { year extract.before.slash extra.label * } { date empty$ not { date extract.before.dash extra.label * } - { "empty year in " cite$ * warning$ + { entry.is.electronic not + { "empty year in " cite$ * warning$ } + 'skip$ + if$ urldate empty$ not { "[" urldate extract.before.dash * extra.label * "]" * } { "" } diff --git a/biblio/bibtex/contrib/gbt7714/gbt7714-numerical.bst b/biblio/bibtex/contrib/gbt7714/gbt7714-numerical.bst index daeb70f367..173c6c3648 100644 --- a/biblio/bibtex/contrib/gbt7714/gbt7714-numerical.bst +++ b/biblio/bibtex/contrib/gbt7714/gbt7714-numerical.bst @@ -8,7 +8,7 @@ %% ------------------------------------------------------------------- %% GB/T 7714 BibTeX Style %% https://github.com/zepinglee/gbt7714-bibtex-style -%% Version: 2022/03/21 v2.1.4 +%% Version: 2022/10/03 v2.1.5 %% ------------------------------------------------------------------- %% Copyright (C) 2016--2022 by Zeping Lee %% ------------------------------------------------------------------- @@ -877,7 +877,7 @@ FUNCTION {format.volume} { volume is.number { entry.lang lang.zh = { "第 " volume * " 卷" * } - { "volume" volume tie.or.space.connect } + { "Vol." volume tie.or.space.connect } if$ } { volume } @@ -892,7 +892,7 @@ FUNCTION {format.number} { number is.number { entry.lang lang.zh = { "第 " number * " 册" * } - { "number" number tie.or.space.connect } + { "No." number tie.or.space.connect } if$ } { number } @@ -1301,7 +1301,10 @@ FUNCTION {format.year} { year extract.before.slash extra.label * } { date empty$ not { date extract.before.dash extra.label * } - { "empty year in " cite$ * warning$ + { entry.is.electronic not + { "empty year in " cite$ * warning$ } + 'skip$ + if$ urldate empty$ not { "[" urldate extract.before.dash * extra.label * "]" * } { "" } diff --git a/biblio/bibtex/contrib/gbt7714/gbt7714.dtx b/biblio/bibtex/contrib/gbt7714/gbt7714.dtx new file mode 100644 index 0000000000..d3e4ff98a6 --- /dev/null +++ b/biblio/bibtex/contrib/gbt7714/gbt7714.dtx @@ -0,0 +1,4812 @@ +% \iffalse meta-comment +% GB/T 7714 BibTeX Style +% https://github.com/zepinglee/gbt7714-bibtex-style +% +% Copyright (C) 2016--2022 by Zeping Lee +% +% This file 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 +% https://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2008 or later. +% +% \fi +% +% \iffalse +%\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%\ProvidesPackage{gbt7714} +% [2022/10/03 v2.1.5 GB/T 7714 BibTeX Style] +% +%<*driver> +\documentclass[a4paper]{l3doc} +\usepackage{hypdoc} +\usepackage[UTF8]{ctex} +\usepackage{caption} +\usepackage{booktabs} +\usepackage{gbt7714} +\usepackage{hologo} +\usepackage{listings} +\makeatletter +\hypersetup{allcolors=blue} +\IfFileExists{/System/Library/Fonts/Times.ttc}{ + \setmainfont{Times} + \setsansfont[Scale=MatchLowercase]{Helvetica} + \setmonofont[Scale=MatchLowercase]{Menlo} +}{} +\citestyle{super} +\lstnewenvironment{latex}{% + \lstset{ + basicstyle = \ttfamily\small, + language = [LaTeX]TeX, + gobble = 4, + frame = single, + }% +}{} +\lstnewenvironment{pseudocode}{% + \lstset{ + basicstyle=\ttfamily\small, + language=bash, + gobble=2, + frame=single, + }% +}{} +\DeclareRobustCommand\file{\nolinkurl} +\DeclareRobustCommand\env{\texttt} +\DeclareRobustCommand\pkg{\textsf} +\DeclareRobustCommand\cls{\textsf} +\DeclareRobustCommand\opt{\texttt} +\setlength\partopsep{\z@} +\def\@listi{\leftmargin\leftmargini + \parsep \z@ + \topsep 5\p@ \@plus2\p@ \@minus3\p@ + \itemsep\z@} +\let\@listI\@listi +\@listi +\makeatother +\EnableCrossrefs +\CodelineIndex +% \OnlyDescription + +\begin{document} + \DocInput{\jobname.dtx} +\end{document} +% +% \fi +% +% +% +% \GetFileInfo{gbt7714.sty} +% +% \title{GB/T 7714 \hologo{BibTeX} style} +% \author{Zeping Lee\thanks{zepinglee AT gmail.com}} +% \date{\filedate\qquad\fileversion} +% \maketitle +% +% +% +% \begin{abstract} +% The \pkg{gbt7714} package provides a \BibTeX{} implementation for the China's +% national bibliography style standard GB/T 7714. +% It consists of \file{.bst} files for numeric and author-date styles as well as a +% \LaTeX{} package which provides the citation style defined in the standard. +% It is compatible with \pkg{natbib} and supports language detection (Chinese +% and English) for each biblilography entry. +% \end{abstract} +% +% \section{简介} +% +% GB/T 7714—2015 《信息与文献\quad 参考文献著录规则》\cite{gbt7714-2015} +% (以下简称“国标”)是中国的参考文献格式推荐标准。 +% 国内的绝大部分学术期刊、学位论文都使用了基于该标准的格式。 +% 本宏包是国标的 \BibTeX{}\cite{bibtex} 实现,具有以下特性: +% \begin{itemize} +% \item 兼容 \pkg{natbib} 宏包\cite{natbib}。 +% \item 支持“顺序编码制”和“著者-出版年制”两种风格。 +% \item 自动识别语言并进行相应处理。 +% \item 提供了简单的接口供用户修改样式。 +% \item 同时提供了 2005 版的 \file{.bst} 文件。 +% \end{itemize} +% 本宏包的主页:\url{https://github.com/zepinglee/gbt7714-bibtex-style}。 +% +% +% \section{版本 v2.0 的重要修改} +% +% 从 v2.0 版本开始(2020-03-04),用户必须在文档中使用 \cs{biblilographystyle} 命令选择参考文献样式, +% 如 \opt{gbt7714-numerical} 或 \opt{gbt7714-author-year}。 +% 在早期的版本中,选择文献样式的方法是将 \opt{numbers} 或 \opt{super} 等参数传递给 +% \pkg{gbt7714}, +% 而不能使用 \cs{bibliographystyle}。 +% 这跟标准的 LaTeX 接口不一致,所以将被弃用。 +% +% +% \section{使用方法} +% +% 以下是 \pkg{gbt7714} 宏包的一个简单示例。 +% \begin{latex} +% \documentclass{ctexart} +% \usepackage{gbt7714} +% \bibliographystyle{gbt7714-numerical} +% \begin{document} +% \cite{...} +% ... +% \bibliography{bibfile} +% \end{document} +% \end{latex} +% +% 按照国标的规定,参考文献的标注体系分为“顺序编码制”和 +% “著者-出版年制”。 +% 用户应在导言区调用宏包 \pkg{gbt7714},并且使用 \cs{bibliographystyle} +% 命令选择参考文献表的样式,比如: +% \begin{latex} +% \bibliographystyle{gbt7714-numerical} % 顺序编码制 +% \end{latex} +% 或者 +% \begin{latex} +% \bibliographystyle{gbt7714-author-year} % 著者-出版年制 +% \end{latex} +% 此外还可以使用 2005 版的格式 \file{gbt7714-2005-numerical} 和 +% \file{gbt7714-2005-author-year}。 +% +% 注意,版本 v2.0 更改了设置参考文献表样式的方法, +% 要求直接使用 \cs{bibliographystyle},不再使用宏包的参数, +% 而且更改了 \file{bst} 的文件名。 +% +% \begin{function}{\citestyle} +% \begin{syntax} +% |\citestyle|\Arg{citation style} +% \end{syntax} +% 可选:\opt{super}, \opt{numbers}, \opt{author-year}。 +% 使用 \cs{bibliography} 选择参考文献表的样式时会自动设置对应的引用样式。 +% 顺序编码制的引用标注默认使用角标式(\opt{super}), +% 如“张三\textsuperscript{[2]}提出”。 +% 如果要使用正文模式,如“文献 [3] 中说明”, +% 可以使用 \cs{citestyle} 命令切换为数字式(\opt{numbers})。 +% \begin{latex} +% \citestyle{numbers} +% \end{latex} +% 著者-出版年制通常不需要修改引用样式。 +% \end{function} +% +% \DescribeEnv{sort\&compress} +% 同一处引用多篇文献时,应当将各篇文献的 key 一同写在 \cs{cite} 命令中。 +% 如遇连续编号,默认会自动转为起讫序号并用短横线连接 +% (见\pkg{natbib} 的 \opt{compress} 选项)。 +% 如果要对引用的编号进行自动排序,需要在调用 \pkg{gbt7714} 时加 +% \opt{sort\&compress} 参数, +% 这些参数会传给 \pkg{natbib} 处理。 +% \begin{latex} +% \usepackage[sort&compress]{gbt7714} +% \end{latex} +% 注意国标中要求 2 个或以上的连续编号用连接号,不同于 \pkg{natbib} 默认的 3 个或以上。 +% 宏包中已经作了修改。 +% +% 若需要标出引文的页码,可以标在 \cs{cite} 的可选参数中,如 +% |\cite[42]{knuth84}|。 +% 更多的引用标注方法可以参考 \pkg{natbib} 宏包的使用说明\cite{natbib}。 +% +% 使用时需要注意以下几点: +% \begin{itemize} +% \item \file{.bib} 数据库应使用 UTF-8 编码。 +% \item 使用著者-出版年制参考文献表时,中文的文献\emph{必须} +% 在 key 域填写作者姓名的拼音,才能按照拼音排序, +% 详见第~\ref{sec:sort}~节。 +% \end{itemize} +% +% +% \section{文献类型} +% +% 国标中规定了 16 种参考文献类型, +% 表~\ref{tab:entry-types} 列举了 \file{bib} 数据库中对应的文献类型。 +% 这些尽可能兼容 \BibTeX{} 和 \pkg{biblatex} 的标准类型,但是新增了若干文献类型(带 * 号)。 +% +% \begin{table}[htb] +% \centering\small +% \caption{全部文献类型} +% \label{tab:entry-types} +% \begin{tabular}{lcl} +% \toprule +% 文献类型 & 标识代码 & Entry Type \\ +% \midrule +% 普通图书 & M & book \\ +% 图书的析出文献 & M & incollection \\ +% 会议录 & C & proceedings \\ +% 会议录的析出文献 & C & inproceedings 或 conference \\ +% 汇编 & G & collection* \\ +% 报纸 & N & newspaper* \\ +% 期刊的析出文献 & J & article \\ +% 学位论文 & D & mastersthesis 或 phdthesis \\ +% 报告 & R & techreport \\ +% 标准 & S & standard* \\ +% 专利 & P & patent* \\ +% 数据库 & DB & database* \\ +% 计算机程序 & CP & software* \\ +% 电子公告 & EB & online* \\ +% 档案 & A & archive* \\ +% 舆图 & CM & map* \\ +% 数据集 & DS & dataset* \\ +% 其他 & Z & misc \\ +% \bottomrule +% \end{tabular} +% \end{table} +% +% +% \section{著录项目} +% +% 由于国标中规定的著录项目多于 \BibTeX{} 的标准域, +% 必须新增一些著录项目(带 * 号), +% 这些新增的类型在设计时参考了 BibLaTeX,如 date 和 urldate。 +% 本宏包支持的全部域如下: +% \begin{description} +% \item[author] 主要责任者 +% \item[title] 题名 +% \item[mark*] 文献类型标识 +% \item[medium*] 载体类型标识 +% \item[translator*] 译者 +% \item[editor] 编辑 +% \item[organization] 组织(用于会议) +% \item[booktitle] 图书题名 +% \item[series] 系列 +% \item[journal] 期刊题名 +% \item[edition] 版本 +% \item[address] 出版地 +% \item[publisher] 出版者 +% \item[school] 学校(用于 \texttt{@phdthesis}) +% \item[institution] 机构(用于 \texttt{@techreport}) +% \item[year] 出版年 +% \item[volume] 卷 +% \item[number] 期(或者专利号) +% \item[pages] 引文页码 +% \item[date*] 更新或修改日期 +% \item[urldate*] 引用日期 +% \item[url] 获取和访问路径 +% \item[doi] 数字对象唯一标识符 +% \item[langid*] 语言 +% \item[key] 拼音(用于排序) +% \end{description} +% 不支持的 \BibTeX{} 标准著录项目有 annote, chapter, crossref, month, type。 +% +% 本宏包默认情况下可以自动识别文献语言,并自动处理文献类型和载体类型标识, +% 但是在少数情况下需要用户手动指定,如: +% \begin{latex} +% @misc{citekey, +% langid = {japanese}, +% mark = {Z}, +% medium = {DK}, +% ... +% } +% \end{latex} +% 可选的语言有 english, chinese, japanese, russian。 +% +% +% \section{文献列表的排序} +% \label{sec:sort} +% +% 国标规定参考文献表采用著者-出版年制组织时,各篇文献首先按文种集中, +% 然后按著者字顺和出版年排列; +% 中文文献可以按著者汉语拼音字顺排列,也可以按著者的笔画笔顺排列。 +% 然而由于 \BibTeX{} 功能的局限性,无法自动获取著者姓名的拼音或笔画笔顺, +% 所以\emph{必须}在 bib 数据库中的 key 域手动录入著者姓名的拼音用于排序,如: +% \begin{latex} +% @book{capital, +% author = {马克思 and 恩格斯}, +% key = {ma3 ke4 si1 & en1 ge2 si1}, +% ... +% } +% \end{latex} +% +% 对于著者-出版年的样式,如果中文文献较多时更推荐使用 \pkg{biblatex} 宏包, +% 其后端 \file{biber} 可以自动处理中文按照拼音排序,无须手动填写拼音。 +% +% +% \section{自定义样式} +% +% \BibTeX{} 对自定义样式的支持比较有限, +% 所以用户只能通过修改 \file{bst} 文件来修改文献列表的格式。 +% 本宏包提供了一些接口供用户更方便地修改。 +% +% 在 \file{bst} 文件开始处的 |load.config| 函数中, +% 有一组配置参数用来控制样式,表~\ref{tab:config} 列出了每一项的默认值和功能。 +% 若变量被设为 |#1| 则表示该项被启用,设为 |#0| 则不启用。 +% 默认的值是严格遵循国标的配置。 +% +% \begin{table}[htb] +% \centering\small +% \caption{参考文献表样式的配置参数} +% \label{tab:config} +% \begin{tabular}{lcl} +% \toprule +% 参数值 & 默认值 & 功能 \\ +% \midrule +% uppercase.name & |#1| & 将著者姓名转为大写 \\ +% max.num.authors & |#3| & 输出著者的最多数量 \\ +% year.after.author & |#0| & 年份置于著者之后 \\ +% period.after.author & |#0| & 著者和年份之间使用句点连接 \\ +% italic.book.title & |#0| & 西文书籍名使用斜体 \\ +% sentence.case.title & |#1| & 将西文的题名转为 sentence case \\ +% link.title & |#0| & 在题名上添加 url 的超链接 \\ +% title.in.journal & |#1| & 期刊是否显示标题 \\ +% show.patent.country & |#0| & 专利题名是否含国别 \\ +% space.before.mark & |#0| & 文献类型标识前是否有空格 \\ +% show.mark & |#1| & 显示文献类型标识 \\ +% show.medium.type & |#1| & 显示载体类型标识 \\ +% component.part.label & |"slash"| & 表示析出文献的符号,可选:|"in"|, |"none"| \\ +% italic.journal & |#0| & 西文期刊名使用斜体 \\ +% show.missing.address.publisher & |#0| & 出版项缺失时显示“出版者不详” \\ +% space.before.pages & |#1| & 页码与前面的冒号之间有空格 \\ +% only.start.page & |#0| & 只显示起始页码 \\ +% wave.dash.in.pages & |#0| & 起止页码使用波浪号 \\ +% show.urldate & |#1| & 显示引用日期 urldate \\ +% show.url & |#1| & 显示 url \\ +% show.doi & |#1| & 显示 DOI \\ +% show.preprint & |#1| & 显示预印本信息 \\ +% show.note & |#0| & 显示 note 域的信息 \\ +% end.with.period & |#1| & 结尾加句点 \\ +% \bottomrule +% \end{tabular} +% \end{table} +% +% 若用户需要定制更多内容,可以学习 \file{bst} 文件的语法并修改 +% \cite{btxhak,ttb,tlc2},或者联系作者。 +% +% +% \section{相关工作} +% +% TeX 社区也有其他关于 GB/T 7714 系列参考文献标准的工作。 +% 2005 年吴凯\cite{wk2006}发布了基于 GB/T 7714—2005 的 \BibTeX{} 样式, +% 支持顺序编码制和著者出版年制两种风格。 +% 李志奇\cite{lqz2013}发布了严格遵循 GB/T 7714—2005 的 BibLaTeX 的样式。 +% 胡海星\cite{hhx2013}提供了另一个 \BibTeX{} 实现, +% 还给每行 bst 代码写了 java 语言注释。 +% 沈周\cite{sz2016}基于 \pkg{biblatex-caspervector}\cite{vector2012} 进行修改, +% 以符合国标的格式。 +% 胡振震发布了符合 GB/T 7714—2015 标准的 BibLaTeX 参考文献样式\cite{hzz2016}, +% 并进行了比较完善的持续维护。 +% +% +% \begin{thebibliography}{12} +% \providecommand{\natexlab}[1]{#1} +% \providecommand{\url}[1]{#1} +% \expandafter\ifx\csname urlstyle\endcsname\relax\relax\else +% \urlstyle{same}\fi +% \providecommand{\href}[2]{\url{#2}} +% \providecommand{\doi}[1]{\href{https://doi.org/#1}{#1}} +% +% \bibitem[{中国国家标准化委员会}(2015)]{gbt7714-2015} +% {中国国家标准化委员会}. +% \newblock 信息与文献\quad 参考文献著录规则: GB/T +% 7714—2015[S]. +% \newblock 北京: 中国标准出版社, 2015. +% +% \bibitem[Patashnik(1988{\natexlab{a}})]{bibtex} +% PATASHNIK~O. +% \newblock {\BibTeX}ing[M/OL]. +% \newblock 1988{\natexlab{a}}. +% \newblock \url{http://mirrors.ctan.org/biblio/bibtex/base/btxdoc.pdf}. +% +% \bibitem[Daly(1999)]{natbib} +% DALY~P~W. +% \newblock Natural sciences citations and references[M/OL]. +% \newblock 1999. +% \newblock \url{http://mirrors.ctan.org/macros/latex/contrib/natbib/natbib.pdf}. +% +% \bibitem[Patashnik(1988{\natexlab{b}})]{btxhak} +% PATASHNIK~O. +% \newblock Designing {\BibTeX} styles[M/OL]. +% \newblock 1988{\natexlab{b}}. +% \newblock \url{http://mirrors.ctan.org/biblio/bibtex/base/btxhak.pdf}. +% +% \bibitem[Markey(2003)]{ttb} +% MARKEY~N. +% \newblock Tame the beast[M/OL]. +% \newblock 2003. +% \newblock \url{http://mirrors.ctan.org/info/bibtex/tamethebeast/ttb_en.pdf}. +% +% \bibitem[Mittelbach et~al.(2004)Mittelbach, Goossens, Braams, Carlisle, and +% Rowley]{tlc2} +% MITTELBACH~F, GOOSSENS~M, BRAAMS~J, et~al. +% \newblock The {\LaTeX} companion[M]. +% \newblock 2nd ed. +% \newblock Reading, MA, USA: Addison-Wesley, 2004. +% +% \bibitem[吴凯(2006)]{wk2006} +% 吴凯. +% \newblock 发布GBT7714-2005.bst version1 Beta版[EB/OL]. +% \newblock 2006. +% \newblock CTeX 论坛(已关闭). +% +% \bibitem[李志奇(2013)]{lqz2013} +% 李志奇. +% \newblock +% 基于biblatex的符合GBT7714—2005的中文文献生成工具[EB/OL]. +% \newblock 2013. +% \newblock CTeX 论坛(已关闭). +% +% \bibitem[胡海星(2013)]{hhx2013} +% 胡海星. +% \newblock A GB/T 7714—2005 national standard compliant BibTeX +% style[EB/OL]. +% \newblock 2013. +% \newblock \url{https://github.com/Haixing-Hu/GBT7714-2005-BibTeX-Style}. +% +% \bibitem[沈周(2016)]{sz2016} +% 沈周. +% \newblock 基于caspervector改写的符合GB/T +% 7714—2005标准的参考文献格式[EB/OL]. +% \newblock 2016. +% \newblock \url{https://github.com/szsdk/biblatex-gbt77142005}. +% +% \bibitem[Vector(2012)]{vector2012} +% VECTOR~C~T. +% \newblock biblatex 参考文献和引用样式: caspervector[M/OL]. +% \newblock 2012. +% \newblock +% \url{http://mirrors.ctan.org/macros/latex/contrib/biblatex-contrib/biblatex-caspervector/doc/caspervector.pdf}. +% +% \bibitem[胡振震(2016)]{hzz2016} +% 胡振震. +% \newblock 符合 GB/T 7714—2015 标准的 biblatex +% 参考文献样式[M/OL]. +% \newblock 2016. +% \newblock +% \url{http://mirrors.ctan.org/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf}. +% +% \end{thebibliography} +% +% +% +% +% \clearpage +% \appendix +% \StopEventually{} +% +% \section{宏包的代码实现} +% +% 兼容过时的接口 +% \begin{macrocode} +%<*package> +\newif\ifgbt@legacy@interface +\newif\ifgbt@mmxv +\newif\ifgbt@numerical +\newif\ifgbt@super +\newcommand\gbt@obsolete@option[1]{% + \PackageWarning{gbt7714}{The option "#1" is obsolete}% +} +\DeclareOption{2015}{% + \gbt@obsolete@option{2015}% + \gbt@legacy@interfacetrue + \gbt@mmxvtrue +} +\DeclareOption{2005}{% + \gbt@obsolete@option{2005}% + \gbt@legacy@interfacetrue + \gbt@mmxvfalse +} +\DeclareOption{super}{% + \gbt@obsolete@option{super}% + \gbt@legacy@interfacetrue + \gbt@numericaltrue + \gbt@supertrue +} +\DeclareOption{numbers}{% + \gbt@obsolete@option{numbers}% + \gbt@legacy@interfacetrue + \gbt@numericaltrue + \gbt@superfalse +} +\DeclareOption{authoryear}{% + \gbt@obsolete@option{authoryear}% + \gbt@legacy@interfacetrue + \gbt@numericalfalse +} +% \end{macrocode} +% +% 将选项传递给 \pkg{natbib} +% \begin{macrocode} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{natbib}} +\ProcessOptions\relax +% \end{macrocode} +% +% 调用宏包,注意只需要 \opt{compress} 不需要 \opt{sort}。 +% \begin{macrocode} +\RequirePackage{natbib} +\RequirePackage{url} +% \end{macrocode} +% +% 如果将 \opt{compress} 传给 \pkg{natbib} 容易导致 option clash。 +% 这里直接修改内部命令。 +% \begin{macrocode} +\def\NAT@cmprs{\@ne} +% \end{macrocode} +% +% \begin{macro}{\citestyle} +% 定义接口切换引用文献的标注法,可用 \cs{citestyle} 调用 \opt{numerical} +% 或 \opt{authoryear},参见 \pkg{natbib}。 +% \begin{macrocode} +\renewcommand\newblock{\space} +\newcommand\bibstyle@super{\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}} +\newcommand\bibstyle@numbers{\bibpunct{[}{]}{,}{n}{,}{,}} +\newcommand\bibstyle@authoryear{\bibpunct{(}{)}{;}{a}{,}{,}} +\newcommand\bibstyle@inline{\bibstyle@numbers} +% \end{macrocode} +% \end{macro} +% +% 在使用 \cs{bibliographystyle} 时自动切换引用文献的标注的样式。 +% \begin{macrocode} +\@namedef{bibstyle@gbt7714-numerical}{\bibstyle@super} +\@namedef{bibstyle@gbt7714-author-year}{\bibstyle@authoryear} +\@namedef{bibstyle@gbt7714-2005-numerical}{\bibstyle@super} +\@namedef{bibstyle@gbt7714-2005-author-year}{\bibstyle@authoryear} +% \end{macrocode} +% +% \begin{macro}{\cite} +% 下面修改 \pkg{natbib} 的引用格式。 +% 为了减少依赖的宏包,这里直接重定义命令不使用 \pkg{etoolbox} 的 \cs{patchcmd}。 +% +% Super 样式的 \cs{citep} 的页码也为上标。 +% 另外加上 |\kern\p@| 去掉上标式引用后与中文之间多余的空格, +% 参考 \href{https://github.com/tuna/thuthesis/issues/624}{tuna/thuthesis\#624}。 +% \begin{macrocode} +\renewcommand\NAT@citesuper[3]{% + \ifNAT@swa + \if*#2*\else + #2\NAT@spacechar + \fi + % \unskip\kern\p@\textsuperscript{\NAT@@open#1\NAT@@close}% + % \if*#3*\else\NAT@spacechar#3\fi\else #1\fi\endgroup} + \unskip\kern\p@ + \textsuperscript{% + \NAT@@open + #1% + \NAT@@close + \if*#3*\else + #3% + \fi + }% + \kern\p@ + \else + #1% + \fi + \endgroup +} +% \end{macrocode} +% +% 将 numbers 样式的 \cs{citep} 的页码置于括号外。 +% \begin{macrocode} +\renewcommand\NAT@citenum[3]{% + \ifNAT@swa + \NAT@@open + \if*#2*\else + #2\NAT@spacechar + \fi + % #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close\else#1\fi\endgroup} + #1\NAT@@close + \if*#3*\else + \textsuperscript{#3}% + \fi + \else + #1% + \fi + \endgroup +} +% \end{macrocode} +% +% Numerical 模式的 \cs{citet} 的页码: +% \begin{macrocode} +\def\NAT@citexnum[#1][#2]#3{% + \NAT@reset@parser + \NAT@sort@cites{#3}% + \NAT@reset@citea + \@cite{\def\NAT@num{-1}\let\NAT@last@yr\relax\let\NAT@nm\@empty + \@for\@citeb:=\NAT@cite@list\do + {\@safe@activestrue + \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% + \@safe@activesfalse + \@ifundefined{b@\@citeb\@extra@b@citeb}{% + {\reset@font\bfseries?} + \NAT@citeundefined\PackageWarning{natbib}% + {Citation `\@citeb' on page \thepage \space undefined}}% + {\let\NAT@last@num\NAT@num\let\NAT@last@nm\NAT@nm + \NAT@parse{\@citeb}% + \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{% + \let\NAT@name=\NAT@all@names + \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}% + \fi + \ifNAT@full\let\NAT@nm\NAT@all@names\else + \let\NAT@nm\NAT@name\fi + \ifNAT@swa + \@ifnum{\NAT@ctype>\@ne}{% + \@citea + \NAT@hyper@{\@ifnum{\NAT@ctype=\tw@}{\NAT@test{\NAT@ctype}}{\NAT@alias}}% + }{% + \@ifnum{\NAT@cmprs>\z@}{% + \NAT@ifcat@num\NAT@num + {\let\NAT@nm=\NAT@num}% + {\def\NAT@nm{-2}}% + \NAT@ifcat@num\NAT@last@num + {\@tempcnta=\NAT@last@num\relax}% + {\@tempcnta\m@ne}% + \@ifnum{\NAT@nm=\@tempcnta}{% + \@ifnum{\NAT@merge>\@ne}{}{\NAT@last@yr@mbox}% + }{% + \advance\@tempcnta by\@ne + \@ifnum{\NAT@nm=\@tempcnta}{% +% \end{macrocode} +% +% 在顺序编码制下,\pkg{natbib} 只有在三个以上连续文献引用才会使用连接号, +% 这里修改为允许两个引用使用连接号。 +% \begin{macrocode} + % \ifx\NAT@last@yr\relax + % \def@NAT@last@yr{\@citea}% + % \else + % \def@NAT@last@yr{--\NAT@penalty}% + % \fi + \def@NAT@last@yr{-\NAT@penalty}% + }{% + \NAT@last@yr@mbox + }% + }% + }{% + \@tempswatrue + \@ifnum{\NAT@merge>\@ne}{\@ifnum{\NAT@last@num=\NAT@num\relax}{\@tempswafalse}{}}{}% + \if@tempswa\NAT@citea@mbox\fi + }% + }% + \NAT@def@citea + \else + \ifcase\NAT@ctype + \ifx\NAT@last@nm\NAT@nm \NAT@yrsep\NAT@penalty\NAT@space\else + \@citea \NAT@test{\@ne}\NAT@spacechar\NAT@mbox{\NAT@super@kern\NAT@@open}% + \fi + \if*#1*\else#1\NAT@spacechar\fi + \NAT@mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}}% + \NAT@def@citea@box + \or + \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}% + \or + \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}% + \or + \NAT@hyper@citea@space\NAT@alias + \fi + \fi + }% + }% + \@ifnum{\NAT@cmprs>\z@}{\NAT@last@yr}{}% + \ifNAT@swa\else +% \end{macrocode} +% +% 将页码放在括号外边,并且置于上标。 +% \begin{macrocode} + % \@ifnum{\NAT@ctype=\z@}{% + % \if*#2*\else\NAT@cmt#2\fi + % }{}% + \NAT@mbox{\NAT@@close}% + \@ifnum{\NAT@ctype=\z@}{% + \if*#2*\else + \textsuperscript{#2}% + \fi + }{}% + \NAT@super@kern + \fi + }{#1}{#2}% +}% +% \end{macrocode} +% +% Author-year 模式的 \cs{citep} 的页码: +% \begin{macrocode} +\renewcommand\NAT@cite% + [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi + #1\NAT@@close\if*#3*\else\textsuperscript{#3}\fi\else#1\fi\endgroup} +% \end{macrocode} +% \end{macro} +% +% Author-year 模式的 \cs{citet} 的页码: +% \begin{macrocode} +\def\NAT@citex% + [#1][#2]#3{% + \NAT@reset@parser + \NAT@sort@cites{#3}% + \NAT@reset@citea + \@cite{\let\NAT@nm\@empty\let\NAT@year\@empty + \@for\@citeb:=\NAT@cite@list\do + {\@safe@activestrue + \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% + \@safe@activesfalse + \@ifundefined{b@\@citeb\@extra@b@citeb}{\@citea% + {\reset@font\bfseries ?}\NAT@citeundefined + \PackageWarning{natbib}% + {Citation `\@citeb' on page \thepage \space undefined}\def\NAT@date{}}% + {\let\NAT@last@nm=\NAT@nm\let\NAT@last@yr=\NAT@year + \NAT@parse{\@citeb}% + \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{% + \let\NAT@name=\NAT@all@names + \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}% + \fi + \ifNAT@full\let\NAT@nm\NAT@all@names\else + \let\NAT@nm\NAT@name\fi + \ifNAT@swa\ifcase\NAT@ctype + \if\relax\NAT@date\relax + \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}\NAT@date}% + \else + \ifx\NAT@last@nm\NAT@nm\NAT@yrsep + \ifx\NAT@last@yr\NAT@year + \def\NAT@temp{{?}}% + \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}% + {Multiple citation on page \thepage: same authors and + year\MessageBreak without distinguishing extra + letter,\MessageBreak appears as question mark}\fi + \NAT@hyper@{\NAT@exlab}% + \else\unskip\NAT@spacechar + \NAT@hyper@{\NAT@date}% + \fi + \else + \@citea\NAT@hyper@{% + \NAT@nmfmt{\NAT@nm}% + \hyper@natlinkbreak{% + \NAT@aysep\NAT@spacechar}{\@citeb\@extra@b@citeb + }% + \NAT@date + }% + \fi + \fi + \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}% + \or\@citea\NAT@hyper@{\NAT@date}% + \or\@citea\NAT@hyper@{\NAT@alias}% + \fi \NAT@def@citea + \else + \ifcase\NAT@ctype + \if\relax\NAT@date\relax + \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}% + \else + \ifx\NAT@last@nm\NAT@nm\NAT@yrsep + \ifx\NAT@last@yr\NAT@year + \def\NAT@temp{{?}}% + \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}% + {Multiple citation on page \thepage: same authors and + year\MessageBreak without distinguishing extra + letter,\MessageBreak appears as question mark}\fi + \NAT@hyper@{\NAT@exlab}% + \else + \unskip\NAT@spacechar + \NAT@hyper@{\NAT@date}% + \fi + \else + \@citea\NAT@hyper@{% + \NAT@nmfmt{\NAT@nm}% + \hyper@natlinkbreak{\NAT@spacechar\NAT@@open\if*#1*\else#1\NAT@spacechar\fi}% + {\@citeb\@extra@b@citeb}% + \NAT@date + }% + \fi + \fi + \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}% + \or\@citea\NAT@hyper@{\NAT@date}% + \or\@citea\NAT@hyper@{\NAT@alias}% + \fi + \if\relax\NAT@date\relax + \NAT@def@citea + \else + \NAT@def@citea@close + \fi + \fi + }}\ifNAT@swa\else +% \end{macrocode} +% +% 将页码放在括号外边,并且置于上标。 +% \begin{macrocode} + % \if*#2*\else\NAT@cmt#2\fi + \if\relax\NAT@date\relax\else\NAT@@close\fi + \if*#2*\else\textsuperscript{#2}\fi + \fi}{#1}{#2}} +% \end{macrocode} +% +% \begin{environment}{thebibliography} +% 参考文献列表的标签左对齐 +% \begin{macrocode} +\renewcommand\@biblabel[1]{[#1]\hfill} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\url} +% 使用 \pkg{xurl} 宏包的方法,增加 URL 可断行的位置。 +% \begin{macrocode} +\g@addto@macro\UrlBreaks{% + \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9% + \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M + \do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X\do\Y\do\Z + \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j\do\k\do\l\do\m + \do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w\do\x\do\y\do\z +} +\Urlmuskip=0mu plus 0.1mu +% \end{macrocode} +% \end{macro} +% +% 兼容 v2.0 前过时的接口: +% \begin{macrocode} +\newif\ifgbt@bib@style@written +\@ifpackageloaded{chapterbib}{}{% + \def\bibliography#1{% + \ifgbt@bib@style@written\else + \bibliographystyle{gbt7714-numerical}% + \fi + \if@filesw + \immediate\write\@auxout{\string\bibdata{\zap@space#1 \@empty}}% + \fi + \@input@{\jobname.bbl}} + \def\bibliographystyle#1{% + \gbt@bib@style@writtentrue + \ifx\@begindocumenthook\@undefined\else + \expandafter\AtBeginDocument + \fi + {\if@filesw + \immediate\write\@auxout{\string\bibstyle{#1}}% + \fi}% + }% +} +\ifgbt@legacy@interface + \ifgbt@numerical + \ifgbt@super\else + \citestyle{numbers} + \fi + \bibliographystyle{gbt7714-numerical} + \else + \bibliographystyle{gbt7714-author-year} + \fi +\fi +% +% \end{macrocode} +% +% +% +% \section{BibTeX 样式的代码实现} +% \label{bst-implementation} +% \linespread{1} +% +% \subsection{自定义选项} +% \label{sec:options} +% +% \begin{environment}{bst} +% 这里定义了一些变量用于定制样式, +% 可以在下面的 |load.config| 函数中选择是否启用。 +% \begin{macrocode} +%<*author-year|numerical> +INTEGERS { + citation.et.al.min + citation.et.al.use.first + bibliography.et.al.min + bibliography.et.al.use.first + uppercase.name + terms.in.macro + year.after.author + period.after.author + italic.book.title + sentence.case.title + link.title + title.in.journal + show.patent.country + show.mark + space.before.mark + show.medium.type + short.journal + italic.journal + bold.journal.volume + show.missing.address.publisher + space.before.pages + only.start.page + wave.dash.in.pages + show.urldate + show.url + show.doi + show.preprint + show.note + show.english.translation + end.with.period +%<*author-year> + lang.zh.order + lang.ja.order + lang.en.order + lang.ru.order + lang.other.order +% +} + +STRINGS { + component.part.label +} + +% \end{macrocode} +% +% 下面每个变量若被设为 |#1| 则启用该项,若被设为 |#0| 则不启用。 +% 默认的值是严格遵循国标的配置。 +% \begin{macrocode} +FUNCTION {load.config} +{ +% \end{macrocode} +% +% 如果姓名的数量大于等于 |et.al.min|,只著录前 |et.al.use.first| 个, +% 其后加“et al.”或“等”。 +% \begin{macrocode} +%<*!ucas> + #2 'citation.et.al.min := + #1 'citation.et.al.use.first := +% +%<*ucas> + #3 'citation.et.al.min := + #1 'citation.et.al.use.first := +% + #4 'bibliography.et.al.min := + #3 'bibliography.et.al.use.first := +% \end{macrocode} +% +% 英文姓名转为全大写: +% \begin{macrocode} +%<*!(no-uppercase|thu)> + #1 'uppercase.name := +% +%<*no-uppercase|thu> + #0 'uppercase.name := +% +% \end{macrocode} +% +% 使用 TeX 宏输出“和”、“等” +% \begin{macrocode} +%<*!(macro|ucas)> + #0 'terms.in.macro := +% +%<*macro|ucas> + #1 'terms.in.macro := +% +% \end{macrocode} +% +% 将年份置于著者后面(著者-出版年制默认) +% \begin{macrocode} +%<*numerical|ucas> + #0 'year.after.author := +% +%<*author-year&!ucas> + #1 'year.after.author := +% +% \end{macrocode} +% +% 采用著者-出版年制时,作者姓名与年份之间使用句点连接: +% \begin{macrocode} +%<*numerical> + #1 'period.after.author := +% +%<*author-year> +%<*2015&!(period|ustc)> + #0 'period.after.author := +% +%<*period|2005|ustc> + #1 'period.after.author := +% +% +% \end{macrocode} +% +% 书名使用斜体: +% \begin{macrocode} +%<*!italic-book-title> + #0 'italic.book.title := +% +%<*italic-book-title> + #1 'italic.book.title := +% +% \end{macrocode} +% +% 英文标题转为 sentence case (句首字母大写,其余小写): +% \begin{macrocode} +%<*!no-sentence-case> + #1 'sentence.case.title := +% +%<*no-sentence-case> + #0 'sentence.case.title := +% +% \end{macrocode} +% +% 在标题添加超链接: +% \begin{macrocode} +%<*!link-title> + #0 'link.title := +% +%<*link-title> + #1 'link.title := +% +% \end{macrocode} +% +% 期刊是否含标题: +% \begin{macrocode} +%<*!no-title-in-journal> + #1 'title.in.journal := +% +%<*no-title-in-journal> + #0 'title.in.journal := +% +% \end{macrocode} +% +% 专利题名是否含专利国别 +% \begin{macrocode} +%<*!(show-patent-country|2005|ustc|thu)> + #0 'show.patent.country := +% +%<*(show-patent-country|2005|ustc|thu)> + #1 'show.patent.country := +% +% \end{macrocode} +% +% 著录文献类型标识(比如“[M/OL]“): +% \begin{macrocode} +%<*!no-mark> + #1 'show.mark := +% +%<*no-mark> + #0 'show.mark := +% +% \end{macrocode} +% +% 文献类型标识前是否有空格: +% \begin{macrocode} +%<*!space-before-mark> + #0 'space.before.mark := +% +%<*space-before-mark> + #1 'space.before.mark := +% +% \end{macrocode} +% +% 是否显示载体类型标识(比如“/OL“): +% \begin{macrocode} +%<*!no-medium-type> + #1 'show.medium.type := +% +%<*no-medium-type> + #0 'show.medium.type := +% +% \end{macrocode} +% +% 使用“//”表示析出文献 +% \begin{macrocode} +%<*!(in-collection|no-slash)> + "slash" 'component.part.label := +% +%<*in-collection> + "in" 'component.part.label := +% +%<*no-slash> + "none" 'component.part.label := +% +% \end{macrocode} +% +% 期刊名使用缩写: +% \begin{macrocode} +%<*!short-journal> + #0 'short.journal := +% +%<*short-journal> + #1 'short.journal := +% +% \end{macrocode} +% +% 期刊名使用斜体: +% \begin{macrocode} +%<*!italic-journal> + #0 'italic.journal := +% +%<*italic-journal> + #1 'italic.journal := +% +% \end{macrocode} +% +% 期刊的卷使用粗体: +% \begin{macrocode} + #0 'bold.journal.volume := +% \end{macrocode} +% +% 无出版地或出版者时,著录“出版地不详”,“出版者不详”,“S.l.” 或 “s.n.”: +% \begin{macrocode} +%<*!sl-sn> + #0 'show.missing.address.publisher := +% +%<*sl-sn> + #1 'show.missing.address.publisher := +% +% \end{macrocode} +% +% 页码与前面的冒号之间是否有空格: +% \begin{macrocode} +%<*!no-space-before-pages> + #1 'space.before.pages := +% +%<*no-space-before-pages> + #0 'space.before.pages := +% +% \end{macrocode} +% +% 页码是否只含起始页: +% \begin{macrocode} +%<*!only-start-page> + #0 'only.start.page := +% +%<*only-start-page> + #1 'only.start.page := +% +% \end{macrocode} +% +% 起止页码使用波浪号: +% \begin{macrocode} +%<*!wave-dash-in-pages> + #0 'wave.dash.in.pages := +% +%<*wave-dash-in-pages> + #1 'wave.dash.in.pages := +% +% \end{macrocode} +% +% 是否著录非电子文献的引用日期: +% \begin{macrocode} +%<*!no-urldate> + #1 'show.urldate := +% +%<*no-urldate> + #0 'show.urldate := +% +% \end{macrocode} +% +% 是否著录 URL: +% \begin{macrocode} +%<*!no-url> + #1 'show.url := +% +%<*no-url> + #0 'show.url := +% +% \end{macrocode} +% +% 是否著录 DOI: +% \begin{macrocode} +%<*!(no-doi|2005)> + #1 'show.doi := +% +%<*no-doi|2005> + #0 'show.doi := +% +% \end{macrocode} +% +% 是否著录 e-print: +% \begin{macrocode} +%<*!preprint> + #1 'show.preprint := +% +%<*preprint> + #0 'show.preprint := +% +% \end{macrocode} +% +% 在每一条文献最后输出注释(note)的内容: +% \begin{macrocode} + #0 'show.note := +% \end{macrocode} +% +% 中文文献是否显示英文翻译 +% \begin{macrocode} +%<*!show-english-translation> + #0 'show.english.translation := +% +%<*show-english-translation> + #1 'show.english.translation := +% +% \end{macrocode} +% +% 结尾加句点 +% \begin{macrocode} +%<*!no-period-at-end> + #1 'end.with.period := +% +%<*no-period-at-end> + #0 'end.with.period := +% +% \end{macrocode} +% +% 参考文献表按照“著者-出版年”组织时,各个文种的顺序: +% \begin{macrocode} +%<*author-year> + #1 'lang.zh.order := + #2 'lang.ja.order := + #3 'lang.en.order := + #4 'lang.ru.order := + #5 'lang.other.order := +% +} + +% \end{macrocode} +% +% +% \subsection{The ENTRY declaration} +% +% Like Scribe's (according to pages 231-2 of the April '84 edition), +% but no fullauthor or editors fields because BibTeX does name handling. +% The annote field is commented out here because this family doesn't +% include an annotated bibliography style. And in addition to the fields +% listed here, BibTeX has a built-in crossref field, explained later. +% \begin{macrocode} +ENTRY + { address + archivePrefix + author + booktitle + date + doi + edition + editor + eprint + eprinttype + entrysubtype + howpublished + institution + journal + journaltitle + key + langid + language + location + mark + medium + note + number + organization + pages + publisher + school + series + shortjournal + title + translation + translator + url + urldate + volume + year + } + { entry.lang entry.is.electronic is.pure.electronic entry.numbered } +% \end{macrocode} +% +% These string entry variables are used to form the citation label. +% In a storage pinch, sort.label can be easily computed on the fly. +% \begin{macrocode} + { label extra.label sort.label short.label short.list entry.mark entry.url } + +% \end{macrocode} +% +% +% \subsection{Entry functions} +% +% Each entry function starts by calling output.bibitem, to write the +% |\bibitem| and its arguments to the .BBL file. Then the various fields +% are formatted and printed by output or output.check. Those functions +% handle the writing of separators (commas, periods, |\newblock|'s), +% taking care not to do so when they are passed a null string. +% Finally, fin.entry is called to add the final period and finish the +% entry. +% +% A bibliographic reference is formatted into a number of `blocks': +% in the open format, a block begins on a new line and subsequent +% lines of the block are indented. A block may contain more than +% one sentence (well, not a grammatical sentence, but something to +% be ended with a sentence ending period). The entry functions should +% call new.block whenever a block other than the first is about to be +% started. They should call new.sentence whenever a new sentence is +% to be started. The output functions will ensure that if two +% new.sentence's occur without any non-null string being output between +% them then there won't be two periods output. Similarly for two +% successive new.block's. +% +% The output routines don't write their argument immediately. +% Instead, by convention, that argument is saved on the stack to be +% output next time (when we'll know what separator needs to come +% after it). Meanwhile, the output routine has to pop the pending +% output off the stack, append any needed separator, and write it. +% +% To tell which separator is needed, we maintain an output.state. +% It will be one of these values: +% before.all just after the |\bibitem| +% mid.sentence in the middle of a sentence: comma needed +% if more sentence is output +% after.sentence just after a sentence: period needed +% after.block just after a block (and sentence): +% period and |\newblock| needed. +% Note: These styles don't use after.sentence +% +% VAR: output.state : INTEGER -- state variable for output +% +% The output.nonnull function saves its argument (assumed to be nonnull) +% on the stack, and writes the old saved value followed by any needed +% separator. The ordering of the tests is decreasing frequency of +% occurrence. +% +% 由于专著中的析出文献需要用到很特殊的“//”,所以我又加了一个 after.slash。 +% 其他需要在特定符号后面输出,所以写了一个 output.after。 +% +% \begin{pseudocode} +% output.nonnull(s) == +% BEGIN +% s := argument on stack +% if output.state = mid.sentence then +% write$(pop() * ", ") +% -- "pop" isn't a function: just use stack top +% else +% if output.state = after.block then +% write$(add.period$(pop())) +% newline$ +% write$("\newblock ") +% else +% if output.state = before.all then +% write$(pop()) +% else -- output.state should be after.sentence +% write$(add.period$(pop()) * " ") +% fi +% fi +% output.state := mid.sentence +% fi +% push s on stack +% END +% \end{pseudocode} +% +% The output function calls output.nonnull if its argument is non-empty; +% its argument may be a missing field (thus, not necessarily a string) +% +% \begin{pseudocode} +% output(s) == +% BEGIN +% if not empty$(s) then output.nonnull(s) +% fi +% END +% \end{pseudocode} +% +% The output.check function is the same as the output function except that, if +% necessary, output.check warns the user that the t field shouldn't be empty +% (this is because it probably won't be a good reference without the field; +% the entry functions try to make the formatting look reasonable even when +% such fields are empty). +% +% \begin{pseudocode} +% output.check(s,t) == +% BEGIN +% if empty$(s) then +% warning$("empty " * t * " in " * cite$) +% else output.nonnull(s) +% fi +% END +% \end{pseudocode} +% +% The output.bibitem function writes the |\bibitem| for the current entry +% (the label should already have been set up), and sets up the separator +% state for the output functions. And, it leaves a string on the stack +% as per the output convention. +% +% \begin{pseudocode} +% output.bibitem == +% BEGIN +% newline$ +% write$("\bibitem[") % for alphabetic labels, +% write$(label) % these three lines +% write$("]{") % are used +% write$("\bibitem{") % this line for numeric labels +% write$(cite$) +% write$("}") +% push "" on stack +% output.state := before.all +% END +% \end{pseudocode} +% +% The fin.entry function finishes off an entry by adding a period to the +% string remaining on the stack. If the state is still before.all +% then nothing was produced for this entry, so the result will look bad, +% but the user deserves it. (We don't omit the whole entry because the +% entry was cited, and a bibitem is needed to define the citation label.) +% +% \begin{pseudocode} +% fin.entry == +% BEGIN +% write$(add.period$(pop())) +% newline$ +% END +% \end{pseudocode} +% +% The new.block function prepares for a new block to be output, and +% new.sentence prepares for a new sentence. +% +% \begin{pseudocode} +% new.block == +% BEGIN +% if output.state <> before.all then +% output.state := after.block +% fi +% END +% \end{pseudocode} +% +% \begin{pseudocode} +% new.sentence == +% BEGIN +% if output.state <> after.block then +% if output.state <> before.all then +% output.state := after.sentence +% fi +% fi +% END +% \end{pseudocode} +% \begin{macrocode} +INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } + +INTEGERS { lang.zh lang.ja lang.en lang.ru lang.other } + +INTEGERS { charptr len } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'after.slash := + #3 'lang.zh := + #4 'lang.ja := + #1 'lang.en := + #2 'lang.ru := + #0 'lang.other := +} + +% \end{macrocode} +% +% 下面是一些常量的定义 +% \begin{macrocode} +FUNCTION {bbl.anonymous} +{ entry.lang lang.zh = + { "佚名" } + { "Anon" } + if$ +} + +FUNCTION {bbl.space} +{ entry.lang lang.zh = + { "\ " } + { " " } + if$ +} + +FUNCTION {bbl.and} +{ "" } + +FUNCTION {bbl.et.al} +{ entry.lang lang.zh = + { "等" } + { entry.lang lang.ja = + { "他" } + { entry.lang lang.ru = + { "идр" } + { "et~al." } + if$ + } + if$ + } + if$ +} + +FUNCTION {citation.and} +{ terms.in.macro + { "{\biband}" } + 'bbl.and + if$ +} + +FUNCTION {citation.et.al} +{ terms.in.macro + { "{\bibetal}" } + 'bbl.et.al + if$ +} + +FUNCTION {bbl.colon} { ": " } + +FUNCTION {bbl.pages.colon} +{ space.before.pages + { ": " } + { ":\allowbreak " } + if$ +} + +%<*!2005> +FUNCTION {bbl.wide.space} { "\quad " } +% +%<*2005> +FUNCTION {bbl.wide.space} { "\ " } +% + +FUNCTION {bbl.slash} { "//\allowbreak " } + +FUNCTION {bbl.sine.loco} +{ entry.lang lang.zh = + { "[出版地不详]" } + { "[S.l.]" } + if$ +} + +FUNCTION {bbl.sine.nomine} +{ entry.lang lang.zh = + { "[出版者不详]" } + { "[s.n.]" } + if$ +} + +FUNCTION {bbl.sine.loco.sine.nomine} +{ entry.lang lang.zh = + { "[出版地不详: 出版者不详]" } + { "[S.l.: s.n.]" } + if$ +} + +% \end{macrocode} +% +% These three functions pop one or two (integer) arguments from the stack +% and push a single one, either 0 or 1. +% The |'skip$| in the `and' and `or' functions are used because +% the corresponding |if$| would be idempotent +% \begin{macrocode} +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +STRINGS { x y } + +FUNCTION {contains} +{ 'y := + 'x := + y text.length$ 'len := + x text.length$ len - #1 + 'charptr := + { charptr #0 > + x charptr len substring$ y = not + and + } + { charptr #1 - 'charptr := } + while$ + charptr #0 > +} + +% \end{macrocode} +% +% the variables s and t are temporary string holders +% \begin{macrocode} +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.slash = + { bbl.slash * write$ + newline$ + } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.after} +{ 't := + duplicate$ empty$ + 'pop$ + { 's := + output.state mid.sentence = + { t * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.slash = + { bbl.slash * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s + } + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +% \end{macrocode} +% +% This function finishes all entries. +% +% \begin{macrocode} +FUNCTION {fin.entry} +{ end.with.period + 'add.period$ + 'skip$ + if$ + write$ + show.english.translation entry.lang lang.zh = and + { ")" + write$ + } + 'skip$ + if$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { output.state after.slash = + 'skip$ + { after.block 'output.state := } + if$ + } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { output.state after.slash = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ + } + if$ +} + +FUNCTION {new.slash} +{ output.state before.all = + 'skip$ + { component.part.label "slash" = + { after.slash 'output.state := } + { new.block + component.part.label "in" = + { entry.lang lang.en = + { "In: " output + write$ + "" + before.all 'output.state := + } + 'skip$ + if$ + } + 'skip$ + if$ + } + if$ + } + if$ +} + +% \end{macrocode} +% +% Sometimes we begin a new block only if the block will be big enough. The +% new.block.checka function issues a new.block if its argument is nonempty; +% new.block.checkb does the same if either of its TWO arguments is nonempty. +% \begin{macrocode} +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +% \end{macrocode} +% +% The new.sentence.check functions are analogous. +% \begin{macrocode} +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +% \end{macrocode} +% +% +% \subsection{Formatting chunks} +% +% Here are some functions for formatting chunks of an entry. +% By convention they either produce a string that can be followed by +% a comma or period (using |add.period$|, so it is OK to end in a period), +% or they produce the null string. +% +% A useful utility is the field.or.null function, which checks if the +% argument is the result of pushing a `missing' field (one for which no +% assignment was made when the current entry was read in from the database) +% or the result of pushing a string having no non-white-space characters. +% It returns the null string if so, otherwise it returns the field string. +% Its main (but not only) purpose is to guarantee that what's left on the +% stack is a string rather than a missing field. +% +% \begin{pseudocode} +% field.or.null(s) == +% BEGIN +% if empty$(s) then return "" +% else return s +% END +% \end{pseudocode} +% +% Another helper function is emphasize, which returns the argument emphazised, +% if that is non-empty, otherwise it returns the null string. Italic +% corrections aren't used, so this function should be used when punctation +% will follow the result. +% +% \begin{pseudocode} +% emphasize(s) == +% BEGIN +% if empty$(s) then return "" +% else return "{\em " * s * "}" +% \end{pseudocode} +% +% The `pop\$' in this function gets rid of the duplicate `empty' value and +% the `skip\$' returns the duplicate field value +% \begin{macrocode} +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {format.btitle} +{ italic.book.title + entry.lang lang.en = and + 'emphasize + 'skip$ + if$ +} + +% \end{macrocode} +% +% \subsubsection{Detect Language} +% \begin{macrocode} +INTEGERS { byte second.byte } + +INTEGERS { char.lang tmp.lang } + +STRINGS { tmp.str } + +FUNCTION {get.str.lang} +{ 'tmp.str := + lang.other 'tmp.lang := + #1 'charptr := + tmp.str text.length$ #1 + 'len := + { charptr len < } + { tmp.str charptr #1 substring$ chr.to.int$ 'byte := + byte #128 < + { charptr #1 + 'charptr := + byte #64 > byte #91 < and byte #96 > byte #123 < and or + { lang.en 'char.lang := } + { lang.other 'char.lang := } + if$ + } + { tmp.str charptr #1 + #1 substring$ chr.to.int$ 'second.byte := + byte #224 < +% \end{macrocode} +% 俄文西里尔字母:U+0400 到 U+052F,对应 UTF-8 从 D0 80 到 D4 AF。 +% \begin{macrocode} + { charptr #2 + 'charptr := + byte #207 > byte #212 < and + byte #212 = second.byte #176 < and or + { lang.ru 'char.lang := } + { lang.other 'char.lang := } + if$ + } + { byte #240 < +% \end{macrocode} +% CJK Unified Ideographs: U+4E00--U+9FFF; UTF-8: E4 B8 80--E9 BF BF. +% \begin{macrocode} + { charptr #3 + 'charptr := + byte #227 > byte #234 < and + { lang.zh 'char.lang := } +% \end{macrocode} +% CJK Unified Ideographs Extension A: U+3400--U+4DBF; UTF-8: E3 90 80--E4 B6 BF. +% \begin{macrocode} + { byte #227 = + { second.byte #143 > + { lang.zh 'char.lang := } +% \end{macrocode} +% 日语假名:U+3040--U+30FF, UTF-8: E3 81 80--E3 83 BF. +% \begin{macrocode} + { second.byte #128 > second.byte #132 < and + { lang.ja 'char.lang := } + { lang.other 'char.lang := } + if$ + } + if$ + } +% \end{macrocode} +% CJK Compatibility Ideographs: U+F900--U+FAFF, UTF-8: EF A4 80--EF AB BF. +% \begin{macrocode} + { byte #239 = + second.byte #163 > second.byte #172 < and and + { lang.zh 'char.lang := } + { lang.other 'char.lang := } + if$ + } + if$ + } + if$ + } +% \end{macrocode} +% CJK Unified Ideographs Extension B--F: U+20000--U+2EBEF, +% UTF-8: F0 A0 80 80--F0 AE AF AF. +% CJK Compatibility Ideographs Supplement: U+2F800--U+2FA1F, +% UTF-8: F0 AF A0 80--F0 AF A8 9F. +% \begin{macrocode} + { charptr #4 + 'charptr := + byte #240 = second.byte #159 > and + { lang.zh 'char.lang := } + { lang.other 'char.lang := } + if$ + } + if$ + } + if$ + } + if$ + char.lang tmp.lang > + { char.lang 'tmp.lang := } + 'skip$ + if$ + } + while$ + tmp.lang +} + +FUNCTION {check.entry.lang} +{ author field.or.null + title field.or.null * + get.str.lang +} + +STRINGS { entry.langid } + +FUNCTION {set.entry.lang} +{ "" 'entry.langid := + language empty$ not + { language 'entry.langid := } + 'skip$ + if$ + langid empty$ not + { langid 'entry.langid := } + 'skip$ + if$ + entry.langid empty$ + { check.entry.lang } + { entry.langid "english" = entry.langid "american" = or entry.langid "british" = or + { lang.en } + { entry.langid "chinese" = + { lang.zh } + { entry.langid "japanese" = + { lang.ja } + { entry.langid "russian" = + { lang.ru } + { check.entry.lang } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + 'entry.lang := +} + +FUNCTION {set.entry.numbered} +{ type$ "patent" = + type$ "standard" = or + type$ "techreport" = or + { #1 'entry.numbered := } + { #0 'entry.numbered := } + if$ +} + +% \end{macrocode} +% +% \subsubsection{Format names} +% +% The format.names function formats the argument (which should be in +% BibTeX name format) into "First Von Last, Junior", separated by commas +% and with an "and" before the last (but ending with "et~al." if the last +% of multiple authors is "others"). This function's argument should always +% contain at least one name. +% +% \begin{pseudocode} +% VAR: nameptr, namesleft, numnames: INTEGER +% pseudoVAR: nameresult: STRING (it's what's accumulated on the stack) +% +% format.names(s) == +% BEGIN +% nameptr := 1 +% numnames := num.names$(s) +% namesleft := numnames +% while namesleft > 0 +% do +% % for full names: +% t := format.name$(s, nameptr, "{ff~}{vv~}{ll}{, jj}") +% % for abbreviated first names: +% t := format.name$(s, nameptr, "{f.~}{vv~}{ll}{, jj}") +% if nameptr > 1 then +% if namesleft > 1 then nameresult := nameresult * ", " * t +% else if numnames > 2 +% then nameresult := nameresult * "," +% fi +% if t = "others" +% then nameresult := nameresult * " et~al." +% else nameresult := nameresult * " and " * t +% fi +% fi +% else nameresult := t +% fi +% nameptr := nameptr + 1 +% namesleft := namesleft - 1 +% od +% return nameresult +% END +% \end{pseudocode} +% +% The format.authors function returns the result of format.names(author) +% if the author is present, or else it returns the null string +% +% \begin{pseudocode} +% format.authors == +% BEGIN +% if empty$(author) then return "" +% else return format.names(author) +% fi +% END +% \end{pseudocode} +% +% Format.editors is like format.authors, but it uses the editor field, +% and appends ", editor" or ", editors" +% +% \begin{pseudocode} +% format.editors == +% BEGIN +% if empty$(editor) then return "" +% else +% if num.names$(editor) > 1 then +% return format.names(editor) * ", editors" +% else +% return format.names(editor) * ", editor" +% fi +% fi +% END +% \end{pseudocode} +% +% Other formatting functions are similar, so no "comment version" will be +% given for them. +% \begin{macrocode} +INTEGERS { nameptr namesleft numnames name.lang } + +FUNCTION {format.name} +{ "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t "others" = + { bbl.et.al } + { t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}{ f{~}}" format.name$ + uppercase.name + { "u" change.case$ } + 'skip$ + if$ + t #1 "{, jj}" format.name$ * + } + { t #1 "{ll}{ff}" format.name$ } + if$ + } + if$ +} + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + "" + numnames 'namesleft := + { namesleft #0 > } + { s nameptr format.name bbl.et.al = + numnames bibliography.et.al.min #1 - > nameptr bibliography.et.al.use.first > and or + { ", " * + bbl.et.al * + #1 'namesleft := + } + { nameptr #1 > + { namesleft #1 = bbl.and "" = not and + { bbl.and * } + { ", " * } + if$ + } + 'skip$ + if$ + s nameptr format.name * + } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +FUNCTION {format.authors} +{ author empty$ not + { author format.names } + { "empty author in " cite$ * warning$ +%<*author-year> + bbl.anonymous +% +%<*numerical> + "" +% + } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names } + if$ +} + +FUNCTION {format.translators} +{ translator empty$ + { "" } + { translator format.names + entry.lang lang.zh = + { translator num.names$ #3 > + { "译" * } + { ", 译" * } + if$ + } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.full.names} +{'s := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}" format.name$ 't := } + { t #1 "{ll}{ff}" format.name$ 't := } + if$ + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.full} +{ author empty$ + { editor empty$ + { "" } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.full} +{ author empty$ + { "" } + { author format.full.names } + if$ +} + +FUNCTION {editor.full} +{ editor empty$ + { "" } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.full + { type$ "collection" = + type$ "proceedings" = + or + 'editor.full + 'author.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem[" write$ + label ")" * + make.full.names duplicate$ short.list = + { pop$ } + { duplicate$ "]" contains + { "{" swap$ * "}" * } + 'skip$ + if$ + * + } + if$ + "]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +% \end{macrocode} +% +% \subsubsection{Format title} +% +% The |format.title| function is used for non-book-like titles. +% For most styles we convert to lowercase (except for the very first letter, +% and except for the first one after a colon (followed by whitespace)), +% and hope the user has brace-surrounded words that need to stay capitilized; +% for some styles, however, we leave it as it is in the database. +% \begin{macrocode} +FUNCTION {change.sentence.case} +{ entry.lang lang.en = + { "t" change.case$ } + 'skip$ + if$ +} + +FUNCTION {add.link} +{ url empty$ not + { "\href{" url * "}{" * swap$ * "}" * } + { doi empty$ not + { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered number empty$ not and + { bbl.colon * + type$ "patent" = show.patent.country and + { address empty$ not + { address * ", " * } + { location empty$ not + { location * ", " * } + { entry.lang lang.zh = + { "中国" * ", " * } + 'skip$ + if$ + } + if$ + } + if$ + } + 'skip$ + if$ + number * + } + 'skip$ + if$ + link.title + 'add.link + 'skip$ + if$ + } + if$ +} + +% \end{macrocode} +% +% For several functions we'll need to connect two strings with a +% tie (|~|) if the second one isn't very long (fewer than 3 characters). +% The tie.or.space.connect function does that. It concatenates the two +% strings on top of the stack, along with either a tie or space between +% them, and puts this concatenation back onto the stack: +% +% \begin{pseudocode} +% tie.or.space.connect(str1,str2) == +% BEGIN +% if text.length$(str2) < 3 +% then return the concatenation of str1, "~", and str2 +% else return the concatenation of str1, " ", and str2 +% END +% \end{pseudocode} +% \begin{macrocode} +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +% \end{macrocode} +% +% The either.or.check function complains if both fields or an either-or pair +% are nonempty. +% +% \begin{pseudocode} +% either.or.check(t,s) == +% BEGIN +% if empty$(s) then +% warning$(can't use both " * t * " fields in " * cite$) +% fi +% END +% \end{pseudocode} +% \begin{macrocode} +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +% \end{macrocode} +% +% The format.bvolume function is for formatting the volume and perhaps +% series name of a multivolume work. If both a volume and a series field +% are there, we assume the series field is the title of the whole multivolume +% work (the title field should be the title of the thing being referred to), +% and we add an "of ". This function is called in mid-sentence. +% +% The format.number.series function is for formatting the series name +% and perhaps number of a work in a series. This function is similar to +% format.bvolume, although for this one the series must exist (and the +% volume must not exist). If the number field is empty we output either +% the series field unchanged if it exists or else the null string. +% If both the number and series fields are there we assume the series field +% gives the name of the whole series (the title field should be the title +% of the work being one referred to), and we add an "in ". +% We capitilize Number when this function is used at the beginning of a block. +% \begin{macrocode} +FUNCTION {is.digit} +{ duplicate$ empty$ + { pop$ #0 } + { chr.to.int$ + duplicate$ "0" chr.to.int$ < + { pop$ #0 } + { "9" chr.to.int$ > + { #0 } + { #1 } + if$ + } + if$ + } + if$ +} + +FUNCTION {is.number} +{ 's := + s empty$ + { #0 } + { s text.length$ 'charptr := + { charptr #0 > + s charptr #1 substring$ is.digit + and + } + { charptr #1 - 'charptr := } + while$ + charptr not + } + if$ +} + +FUNCTION {format.volume} +{ volume empty$ not + { volume is.number + { entry.lang lang.zh = + { "第 " volume * " 卷" * } + { "Vol." volume tie.or.space.connect } + if$ + } + { volume } + if$ + } + { "" } + if$ +} + +FUNCTION {format.number} +{ number empty$ not + { number is.number + { entry.lang lang.zh = + { "第 " number * " 册" * } + { "No." number tie.or.space.connect } + if$ + } + { number } + if$ + } + { "" } + if$ +} + +FUNCTION {format.volume.number} +{ volume empty$ not + { format.volume } + { format.number } + if$ +} + +FUNCTION {format.title.vol.num} +{ title + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered + { number empty$ not + { bbl.colon * number * } + 'skip$ + if$ + } + { format.volume.number 's := + s empty$ not + { bbl.colon * s * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.series.vol.num.title} +{ format.volume.number 's := + series empty$ not + { series + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered + { bbl.wide.space * } + { bbl.colon * + s empty$ not + { s * bbl.wide.space * } + 'skip$ + if$ + } + if$ + title * + sentence.case.title + 'change.sentence.case + 'skip$ + if$ + entry.numbered number empty$ not and + { bbl.colon * number * } + 'skip$ + if$ + } + { format.title.vol.num } + if$ + format.btitle + link.title + 'add.link + 'skip$ + if$ +} + +FUNCTION {format.booktitle.vol.num} +{ booktitle + entry.numbered + 'skip$ + { format.volume.number 's := + s empty$ not + { bbl.colon * s * } + 'skip$ + if$ + } + if$ +} + +% \end{macrocode} +% +% \begin{macrocode} +FUNCTION {format.series.vol.num.booktitle} +{ format.volume.number 's := + series empty$ not + { series bbl.colon * + entry.numbered not s empty$ not and + { s * bbl.wide.space * } + 'skip$ + if$ + booktitle * + } + { format.booktitle.vol.num } + if$ + format.btitle +} + +FUNCTION {remove.period} +{ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ 'tmp.str := + tmp.str "." = not + { s tmp.str * 's := } + 'skip$ + if$ + t #2 global.max$ substring$ 't := + } + while$ + s +} + +FUNCTION {abbreviate} +{ remove.period + 't := + t "l" change.case$ 's := + "" + s "physical review letters" = + { "Phys Rev Lett" } + 'skip$ + if$ + 's := + s empty$ + { t } + { pop$ s } + if$ +} + +FUNCTION {get.journal.title} +{ short.journal + { shortjournal empty$ not + { shortjournal } + { journal empty$ not + { journal abbreviate } + { journaltitle empty$ not + { journaltitle abbreviate } + { "" } + if$ + } + if$ + } + if$ + } + { journal empty$ not + { journal } + { journaltitle empty$ not + { journaltitle } + { shortjournal empty$ not + { shortjournal } + { "" } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {check.arxiv.preprint} +{ #1 #5 substring$ "l" change.case$ "arxiv" = + { #1 } + { #0 } + if$ +} + +FUNCTION {format.journal} +{ get.journal.title + duplicate$ empty$ not + { italic.journal entry.lang lang.en = and + 'emphasize + 'skip$ + if$ + } + 'skip$ + if$ +} + +% \end{macrocode} +% +% \subsubsection{Format entry type mark} +% +% \begin{macrocode} +FUNCTION {set.entry.mark} +{ entry.mark empty$ not + 'pop$ + { mark empty$ not + { pop$ mark 'entry.mark := } + { 'entry.mark := } + if$ + } + if$ +} + +FUNCTION {format.mark} +{ show.mark + { entry.mark + show.medium.type + { medium empty$ not + { "/" * medium * } + { entry.is.electronic + { "/OL" * } + 'skip$ + if$ + } + if$ + } + 'skip$ + if$ + 'entry.mark := + space.before.mark + { " " } + { "\allowbreak" } + if$ + "[" * entry.mark * "]" * + } + { "" } + if$ +} + +% \end{macrocode} +% +% \subsubsection{Format edition} +% +% The format.edition function appends " edition" to the edition, if present. +% We lowercase the edition (it should be something like "Third"), because +% this doesn't start a sentence. +% \begin{macrocode} +FUNCTION {num.to.ordinal} +{ duplicate$ text.length$ 'charptr := + duplicate$ charptr #1 substring$ 's := + s "1" = + { "st" * } + { s "2" = + { "nd" * } + { s "3" = + { "rd" * } + { "th" * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { edition is.number + { edition "1" = not + { entry.lang lang.zh = + { edition " 版" * } + { edition num.to.ordinal " ed." * } + if$ + } + 'skip$ + if$ + } + { entry.lang lang.en = + { edition change.sentence.case 's := + s "Revised" = s "Revised edition" = or + { "Rev. ed." } + { s " ed." * } + if$ + } + { edition } + if$ + } + if$ + } + if$ +} + +% \end{macrocode} +% +% \subsubsection{Format publishing items} +% +% 出版地址和出版社会有 “[S.l.: s.n.]” 的情况,所以必须一起处理。 +% \begin{macrocode} +FUNCTION {format.publisher} +{ publisher empty$ not + { publisher } + { school empty$ not + { school } + { organization empty$ not + { organization } + { institution empty$ not + { institution } + { "" } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.address.publisher} +{ address empty$ not + { address } + { location empty$ not + { location } + { "" } + if$ + } + if$ + duplicate$ empty$ not + { format.publisher empty$ not + { bbl.colon * format.publisher * } + { entry.is.electronic not show.missing.address.publisher and + { bbl.colon * bbl.sine.nomine * } + 'skip$ + if$ + } + if$ + } + { pop$ + entry.is.electronic not show.missing.address.publisher and + { format.publisher empty$ not + { bbl.sine.loco bbl.colon * format.publisher * } + { bbl.sine.loco.sine.nomine } + if$ + } + { format.publisher empty$ not + { format.publisher } + { "" } + if$ + } + if$ + } + if$ +} + +% \end{macrocode} +% +% \subsubsection{Format date} +% +% The format.date function is for the month and year, but we give a warning if +% there's an empty year but the month is there, and we return the empty string +% if they're both empty. +% +% 期刊需要著录起止范围,其中年份使用“/”分隔,卷和期使用“--”分隔。 +% 版本 v2.0.2 前的年份也使用“--”分隔,仅提供兼容性,不再推荐。 +% \begin{macrocode} +FUNCTION {extract.before.dash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "-" = not + and + } + { charptr #1 + 'charptr := } + while$ + s #1 charptr #1 - substring$ + } + if$ +} + +FUNCTION {extract.after.dash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "-" = not + and + } + { charptr #1 + 'charptr := } + while$ + { charptr len < + s charptr #1 substring$ "-" = + and + } + { charptr #1 + 'charptr := } + while$ + s charptr global.max$ substring$ + } + if$ +} + +FUNCTION {extract.before.slash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "/" = not + and + } + { charptr #1 + 'charptr := } + while$ + s #1 charptr #1 - substring$ + } + if$ +} + +FUNCTION {extract.after.slash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'len := + { charptr len < + s charptr #1 substring$ "-" = not + and + s charptr #1 substring$ "/" = not + and + } + { charptr #1 + 'charptr := } + while$ + { charptr len < + s charptr #1 substring$ "-" = + s charptr #1 substring$ "/" = + or + and + } + { charptr #1 + 'charptr := } + while$ + s charptr global.max$ substring$ + } + if$ +} + +% \end{macrocode} +% +% 著者-出版年制必须提取出年份 +% \begin{macrocode} +FUNCTION {format.year} +{ year empty$ not + { year extract.before.slash extra.label * } + { date empty$ not + { date extract.before.dash extra.label * } + { entry.is.electronic not + { "empty year in " cite$ * warning$ } + 'skip$ + if$ + urldate empty$ not + { "[" urldate extract.before.dash * extra.label * "]" * } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.periodical.year} +{ year empty$ not + { year extract.before.slash + "--" * + year extract.after.slash + duplicate$ empty$ + 'pop$ + { * } + if$ + } + { date empty$ not + { date extract.before.dash } + { "empty year in " cite$ * warning$ + urldate empty$ not + { "[" urldate extract.before.dash * "]" * } + { "" } + if$ + } + if$ + } + if$ +} + +% \end{macrocode} +% +% 专利和报纸都是使用日期而不是年 +% \begin{macrocode} +FUNCTION {format.date} +{ date empty$ not + { type$ "patent" = type$ "newspaper" = or + { date } + { entrysubtype empty$ not + { type$ "article" = entrysubtype "newspaper" = and + { date } + { format.year } + if$ + } + { format.year } + if$ + } + if$ + } + { year empty$ not + { format.year } + { "" } + if$ + } + if$ +} + +% \end{macrocode} +% +% 更新、修改日期只用于电子资源 electronic +% \begin{macrocode} +FUNCTION {format.editdate} +{ date empty$ not + { "\allowbreak(" date * ")" * } + { "" } + if$ +} + +% \end{macrocode} +% +% 国标中的“引用日期”都是与 URL 同时出现的,所以其实为 urldate,这个虽然 +% 不是 \BibTeX{} 标准的域,但是实际中很常见。 +% \begin{macrocode} +FUNCTION {format.urldate} +{ show.urldate show.url and entry.url empty$ not and + is.pure.electronic or + urldate empty$ not and + { "\allowbreak[" urldate * "]" * } + { "" } + if$ +} + +% \end{macrocode} +% +% \subsubsection{Format pages} +% +% By default, BibTeX sets the global integer variable |global.max$| to the BibTeX +% constant |glob_str_size|, the maximum length of a global string variable. +% Analogously, BibTeX sets the global integer variable |entry.max$| to +% |ent_str_size|, the maximum length of an entry string variable. +% The style designer may change these if necessary (but this is unlikely) +% +% The n.dashify function makes each single |`-'| in a string a double |`--'| +% if it's not already +% +% \begin{pseudocode} +% pseudoVAR: pageresult: STRING (it's what's accumulated on the stack) +% +% n.dashify(s) == +% BEGIN +% t := s +% pageresult := "" +% while (not empty$(t)) +% do +% if (first character of t = "-") +% then +% if (next character isn't) +% then +% pageresult := pageresult * "--" +% t := t with the "-" removed +% else +% while (first character of t = "-") +% do +% pageresult := pageresult * "-" +% t := t with the "-" removed +% od +% fi +% else +% pageresult := pageresult * the first character +% t := t with the first character removed +% fi +% od +% return pageresult +% END +% \end{pseudocode} +% +% 国标里页码范围的连接号使用 hyphen,需要将 dash 转为 hyphen。 +% \begin{macrocode} +FUNCTION {hyphenate} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { wave.dash.in.pages + { "~" * } + { "-" * } + if$ + { t #1 #1 substring$ "-" = } + { t #2 global.max$ substring$ 't := } + while$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +% \end{macrocode} +% +% This function doesn't begin a sentence so "pages" isn't capitalized. +% Other functions that use this should keep that in mind. +% \begin{macrocode} +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages hyphenate } + if$ +} + +FUNCTION {format.extracted.pages} +{ pages empty$ + { "" } + { pages + only.start.page + 'extract.before.dash + 'hyphenate + if$ + } + if$ +} + +% \end{macrocode} +% +% The |format.vol.num.pages| function is for the volume, number, and page range +% of a journal article. We use the format: vol(number):pages, with some +% variations for empty fields. This doesn't begin a sentence. +% +% 报纸在卷号缺失时,期号与前面的日期直接相连,所以必须拆开输出。 +% \begin{macrocode} +FUNCTION {format.journal.volume} +{ volume empty$ not + { bold.journal.volume + { "\textbf{" volume * "}" * } + { volume } + if$ + } + { "" } + if$ +} + +FUNCTION {format.journal.number} +{ number empty$ not + { "\allowbreak (" number * ")" * } + { "" } + if$ +} + +FUNCTION {format.journal.pages} +{ pages empty$ + { "" } + { format.extracted.pages } + if$ +} + +% \end{macrocode} +% +% 连续出版物的年卷期有起止范围,需要特殊处理 +% \begin{macrocode} +FUNCTION {format.periodical.year.volume.number} +{ year empty$ not + { year extract.before.slash } + { "empty year in periodical " cite$ * warning$ } + if$ + volume empty$ not + { ", " * volume extract.before.dash * } + 'skip$ + if$ + number empty$ not + { "\allowbreak (" * number extract.before.dash * ")" * } + 'skip$ + if$ + "--" * + year extract.after.slash empty$ + volume extract.after.dash empty$ and + number extract.after.dash empty$ and not + { year extract.after.slash empty$ not + { year extract.after.slash * } + { year extract.before.slash * } + if$ + volume empty$ not + { ", " * volume extract.after.dash * } + 'skip$ + if$ + number empty$ not + { "\allowbreak (" * number extract.after.dash * ")" * } + 'skip$ + if$ + } + 'skip$ + if$ +} + +% \end{macrocode} +% +% \subsubsection{Format url and doi} +% +% 传统的 \BibTeX{} 习惯使用 howpublished 著录 url,这里提供支持。 +% \begin{macrocode} +FUNCTION {check.url} +{ url empty$ not + { "\url{" url * "}" * 'entry.url := + #1 'entry.is.electronic := + } + { howpublished empty$ not + { howpublished #1 #5 substring$ "\url{" = + { howpublished 'entry.url := + #1 'entry.is.electronic := + } + 'skip$ + if$ + } + { note empty$ not + { note #1 #5 substring$ "\url{" = + { note 'entry.url := + #1 'entry.is.electronic := + } + 'skip$ + if$ + } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {output.url} +{ show.url is.pure.electronic or + entry.url empty$ not and + { new.block + entry.url output + } + 'skip$ + if$ +} + +% \end{macrocode} +% +% 需要检测 DOI 是否已经包含在 URL 中。 +% \begin{macrocode} +FUNCTION {check.doi} +{ doi empty$ not + { #1 'entry.is.electronic := } + 'skip$ + if$ +} + +FUNCTION {is.in.url} +{ 's := + s empty$ + { #1 } + { entry.url empty$ + { #0 } + { s text.length$ 'len := + entry.url text.length$ 'charptr := + { entry.url charptr len substring$ s = not + charptr #0 > + and + } + { charptr #1 - 'charptr := } + while$ + charptr + } + if$ + } + if$ +} + +FUNCTION {format.doi} +{ "" + doi empty$ not + { "" 's := + doi 't := + #0 'numnames := + { t empty$ not} + { t #1 #1 substring$ 'tmp.str := + tmp.str "," = tmp.str " " = or t #2 #1 substring$ empty$ or + { t #2 #1 substring$ empty$ + { s tmp.str * 's := } + 'skip$ + if$ + s empty$ s is.in.url or + 'skip$ + { numnames #1 + 'numnames := + numnames #1 > + { ", " * } + { "DOI: " * } + if$ + "\doi{" s * "}" * * + } + if$ + "" 's := + } + { s tmp.str * 's := } + if$ + t #2 global.max$ substring$ 't := + } + while$ + } + 'skip$ + if$ +} + +FUNCTION {output.doi} +{ doi empty$ not show.doi and + show.english.translation entry.lang lang.zh = and not and + { new.block + format.doi output + } + 'skip$ + if$ +} + +FUNCTION {check.electronic} +{ "" 'entry.url := + #0 'entry.is.electronic := + 'check.doi + 'skip$ + if$ + 'check.url + 'skip$ + if$ + medium empty$ not + { medium "MT" = medium "DK" = or medium "CD" = or medium "OL" = or + { #1 'entry.is.electronic := } + 'skip$ + if$ + } + 'skip$ + if$ +} + +FUNCTION {format.eprint} +{ archivePrefix empty$ not + { archivePrefix } + { eprinttype empty$ not + { archivePrefix } + { "" } + if$ + } + if$ + 's := + s empty$ not + { s ": \eprint{" * + url empty$ not + { url } + { "https://" s "l" change.case$ * ".org/abs/" * eprint * } + if$ + * "}{" * + eprint * "}" * + } + { eprint } + if$ +} + +FUNCTION {output.eprint} +{ show.preprint eprint empty$ not and + { new.block + format.eprint output + } + 'skip$ + if$ +} + +FUNCTION {format.note} +{ note empty$ not show.note and + { note } + { "" } + if$ +} + +FUNCTION {output.translation} +{ show.english.translation entry.lang lang.zh = and + { translation empty$ not + { translation } + { "[English translation missing!]" } + if$ + " (in Chinese)" * output + write$ + format.doi duplicate$ empty$ not + { newline$ + write$ + } + 'pop$ + if$ + " \\" write$ + newline$ + "(" write$ + "" + before.all 'output.state := + } + 'skip$ + if$ +} + +% \end{macrocode} +% +% The function empty.misc.check complains if all six fields are empty, and +% if there's been no sorting or alphabetic-label complaint. +% \begin{macrocode} +FUNCTION {empty.misc.check} +{ author empty$ title empty$ + year empty$ + and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +% \end{macrocode} +% +% +% \subsection{Functions for all entry types} +% +% Now we define the type functions for all entry types that may appear +% in the .BIB file---e.g., functions like `article' and `book'. These +% are the routines that actually generate the .BBL-file output for +% the entry. These must all precede the READ command. In addition, the +% style designer should have a function `default.type' for unknown types. +% Note: The fields (within each list) are listed in order of appearance, +% except as described for an `inbook' or a `proceedings'. +% +% \subsubsection{专著} +% +% \begin{macrocode} +FUNCTION {monograph} +{ output.bibitem + output.translation + author empty$ not + { format.authors } + { editor empty$ not + { format.editors } + { "empty author and editor in " cite$ * warning$ +%<*author-year> + bbl.anonymous +% +%<*numerical> + "" +% + } + if$ + } + if$ + output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.series.vol.num.title "title" output.check + "M" set.entry.mark + format.mark "" output.after + new.block + format.translators output + new.sentence + format.edition output + new.block + format.address.publisher output + year.after.author not + { format.year "year" output.check } + 'skip$ + if$ + format.pages bbl.pages.colon output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +% \end{macrocode} +% +% \subsubsection{专著中的析出文献} +% +% An incollection is like inbook, but where there is a separate title +% for the referenced thing (and perhaps an editor for the whole). +% An incollection may CROSSREF a book. +% +% Required: author, title, booktitle, publisher, year +% +% Optional: editor, volume or number, series, type, chapter, pages, +% address, edition, month, note +% \begin{macrocode} +FUNCTION {incollection} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.title "title" output.check + "M" set.entry.mark + format.mark "" output.after + new.block + format.translators output + new.slash + format.editors output + new.block + format.series.vol.num.booktitle "booktitle" output.check + new.block + format.edition output + new.block + format.address.publisher output + year.after.author not + { format.year "year" output.check } + 'skip$ + if$ + format.extracted.pages bbl.pages.colon output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +% \end{macrocode} +% +% \subsubsection{连续出版物} +% +% \begin{macrocode} +FUNCTION {periodical} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.title "title" output.check + "J" set.entry.mark + format.mark "" output.after + new.block + format.periodical.year.volume.number output + new.block + format.address.publisher output + year.after.author not + { format.periodical.year "year" output.check } + 'skip$ + if$ + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +% \end{macrocode} +% +% \subsubsection{连续出版物中的析出文献} +% +% The article function is for an article in a journal. An article may +% CROSSREF another article. +% +% Required fields: author, title, journal, year +% +% Optional fields: volume, number, pages, month, note +% +% The other entry functions are all quite similar, so no "comment version" +% will be given for them. +% \begin{macrocode} +FUNCTION {journal.article} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + title.in.journal + { format.title "title" output.check + entrysubtype empty$ not + { + entrysubtype "newspaper" = + { "N" set.entry.mark } + { "J" set.entry.mark } + if$ + } + { "J" set.entry.mark } + if$ + format.mark "" output.after + new.block + } + 'skip$ + if$ + format.journal "journal" output.check + year.after.author not + { format.date "year" output.check } + 'skip$ + if$ + format.journal.volume output + format.journal.number "" output.after + format.journal.pages bbl.pages.colon output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +% \end{macrocode} +% +% \subsubsection{专利文献} +% +% number 域也可以用来表示专利号。 +% \begin{macrocode} +FUNCTION {patent} +{ output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.title "title" output.check + "P" set.entry.mark + format.mark "" output.after + new.block + format.date "year" output.check + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +% \end{macrocode} +% +% \subsubsection{电子资源} +% \begin{macrocode} +FUNCTION {electronic} +{ #1 #1 check.electronic + #1 'entry.is.electronic := + #1 'is.pure.electronic := + output.bibitem + output.translation + format.authors output + author format.key output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + format.series.vol.num.title "title" output.check + "EB" set.entry.mark + format.mark "" output.after + new.block + format.address.publisher output + year.after.author not + { date empty$ + { format.date output } + 'skip$ + if$ + } + 'skip$ + if$ + format.pages bbl.pages.colon output.after + format.editdate "" output.after + format.urldate "" output.after + output.url + output.doi + new.block + format.note output + fin.entry +} + +% \end{macrocode} +% +% \subsubsection{预印本} +% +% \begin{macrocode} +FUNCTION {preprint} +{ output.bibitem + output.translation + author empty$ not + { format.authors } + { editor empty$ not + { format.editors } + { "empty author and editor in " cite$ * warning$ +%<*author-year> + bbl.anonymous +% +%<*numerical> + "" +% + } + if$ + } + if$ + output + year.after.author + { period.after.author + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + } + 'skip$ + if$ + new.block + title.in.journal + { format.series.vol.num.title "title" output.check +%<*2015> + "A" set.entry.mark +% +%<*!2015> + "Z" set.entry.mark +% + format.mark "" output.after + new.block + } + 'skip$ + if$ + format.translators output + new.sentence + format.edition output + new.block + year.after.author not + { date empty$ + { format.date output } + 'skip$ + if$ + } + 'skip$ + if$ + format.pages bbl.pages.colon output.after + format.editdate "" output.after + format.urldate "" output.after + output.eprint + output.url + new.block + format.note output + fin.entry +} + +% \end{macrocode} +% +% \subsubsection{其他文献类型} +% +% A misc is something that doesn't fit elsewhere. +% +% Required: at least one of the `optional' fields +% +% Optional: author, title, howpublished, month, year, note +% +% Misc 用来自动判断类型。 +% \begin{macrocode} +FUNCTION {misc} +{ get.journal.title + duplicate$ empty$ not + { check.arxiv.preprint + 'preprint + 'journal.article + if$ + } + { pop$ + booktitle empty$ not + 'incollection + { publisher empty$ not + 'monograph + { eprint empty$ not archivePrefix empty$ not or + 'preprint + { entry.is.electronic + 'electronic + { +%<*!2005> + "Z" set.entry.mark +% +%<*2005> + "M" set.entry.mark +% + monograph + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + empty.misc.check +} + +FUNCTION {archive} +{ "A" set.entry.mark + misc +} + +FUNCTION {article} { misc } + +% \end{macrocode} +% +% The book function is for a whole book. A book may CROSSREF another book. +% +% Required fields: author or editor, title, publisher, year +% +% Optional fields: volume or number, series, address, edition, month, +% note +% \begin{macrocode} +FUNCTION {book} { monograph } + +% \end{macrocode} +% +% A booklet is a bound thing without a publisher or sponsoring institution. +% +% Required: title +% +% Optional: author, howpublished, address, month, year, note +% \begin{macrocode} +FUNCTION {booklet} { book } + +FUNCTION {collection} +{ "G" set.entry.mark + monograph +} + +FUNCTION {database} +{ "DB" set.entry.mark + electronic +} + +FUNCTION {dataset} +{ "DS" set.entry.mark + electronic +} + +% \end{macrocode} +% +% An inbook is a piece of a book: either a chapter and/or a page range. +% It may CROSSREF a book. If there's no volume field, the type field +% will come before number and series. +% +% Required: author or editor, title, chapter and/or pages, publisher,year +% +% Optional: volume or number, series, type, address, edition, month, note +% +% inbook 类是不含 booktitle 域的,所以不应该适用于“专著中的析出文献”,而应该是专 +% 著,即 book 类。 +% \begin{macrocode} +FUNCTION {inbook} { book } + +% \end{macrocode} +% +% An inproceedings is an article in a conference proceedings, and it may +% CROSSREF a proceedings. If there's no address field, the month (\& year) +% will appear just before note. +% +% Required: author, title, booktitle, year +% +% Optional: editor, volume or number, series, pages, address, month, +% organization, publisher, note +% \begin{macrocode} +FUNCTION {inproceedings} +{ "C" set.entry.mark + incollection +} + +% \end{macrocode} +% +% The conference function is included for Scribe compatibility. +% \begin{macrocode} +FUNCTION {conference} { inproceedings } + +FUNCTION {legislation} { archive } + + +FUNCTION {map} +{ "CM" set.entry.mark + misc +} + +% \end{macrocode} +% +% A manual is technical documentation. +% +% Required: title +% +% Optional: author, organization, address, edition, month, year, note +% \begin{macrocode} +FUNCTION {manual} { monograph } + +% \end{macrocode} +% +% A mastersthesis is a Master's thesis. +% +% Required: author, title, school, year +% +% Optional: type, address, month, note +% \begin{macrocode} +FUNCTION {mastersthesis} +{ "D" set.entry.mark + monograph +} + +FUNCTION {newspaper} +{ "N" set.entry.mark + article +} + +FUNCTION {online} +{ "EB" set.entry.mark + electronic +} + +% \end{macrocode} +% +% A phdthesis is like a mastersthesis. +% +% Required: author, title, school, year +% +% Optional: type, address, month, note +% \begin{macrocode} +FUNCTION {phdthesis} { mastersthesis } + +% \end{macrocode} +% +% A proceedings is a conference proceedings. +% If there is an organization but no editor field, the organization will +% appear as the first optional field (we try to make the first block nonempty); +% if there's no address field, the month (\& year) will appear just before note. +% +% Required: title, year +% +% Optional: editor, volume or number, series, address, month, +% organization, publisher, note +% \begin{macrocode} +FUNCTION {proceedings} +{ "C" set.entry.mark + monograph +} + +FUNCTION {software} +{ "CP" set.entry.mark + electronic +} + +FUNCTION {standard} +{ "S" set.entry.mark + misc +} + +% \end{macrocode} +% +% A techreport is a technical report. +% +% Required: author, title, institution, year +% +% Optional: type, number, address, month, note +% \begin{macrocode} +FUNCTION {techreport} +{ "R" set.entry.mark + misc +} + +% \end{macrocode} +% +% An unpublished is something that hasn't been published. +% +% Required: author, title, note +% +% Optional: month, year +% \begin{macrocode} +FUNCTION {unpublished} { misc } + +% \end{macrocode} +% +% We use entry type `misc' for an unknown type; BibTeX gives a warning. +% \begin{macrocode} +FUNCTION {default.type} { misc } + +% \end{macrocode} +% +% +% \subsection{Common macros} +% +% Here are macros for common things that may vary from style to style. +% Users are encouraged to use these macros. +% +% Months are either written out in full or abbreviated +% \begin{macrocode} +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +% \end{macrocode} +% +% Journals are either written out in full or abbreviated; +% the abbreviations are like those found in ACM publications. +% +% To get a completely different set of abbreviations, it may be best to make +% a separate .bib file with nothing but those abbreviations; users could then +% include that file name as the first argument to the \cs{bibliography} command +% \begin{macrocode} +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +% \end{macrocode} +% +% +% \subsection{Format labels} +% +% The sortify function converts to lower case after |purify$|ing; it's +% used in sorting and in computing alphabetic labels after sorting +% +% The chop.word(w,len,s) function returns either s or, if the first len +% letters of s equals w (this comparison is done in the third line of the +% function's definition), it returns that part of s after w. +% \begin{macrocode} +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +% \end{macrocode} +% +% We need the chop.word stuff for the dubious unsorted-list-with-labels case. +% \begin{macrocode} +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +% \end{macrocode} +% +% The |format.lab.names| function makes a short label by using the initials of +% the von and Last parts of the names (but if there are more than four names, +% (i.e., people) it truncates after three and adds a superscripted "+"; +% it also adds such a "+" if the last of multiple authors is "others"). +% If there is only one name, and its von and Last parts combined have just +% a single name-token ("Knuth" has a single token, "Brinch Hansen" has two), +% we take the first three letters of the last name. The boolean +% et.al.char.used tells whether we've used a superscripted "+", so that we +% know whether to include a LaTeX macro for it. +% +% \begin{pseudocode} +% format.lab.names(s) == +% BEGIN +% numnames := num.names$(s) +% if numnames > 1 then +% if numnames > 4 then +% namesleft := 3 +% else +% namesleft := numnames +% nameptr := 1 +% nameresult := "" +% while namesleft > 0 +% do +% if (name_ptr = numnames) and +% format.name$(s, nameptr, "{ff }{vv }{ll}{ jj}") = "others" +% then nameresult := nameresult * "{\etalchar{+}}" +% et.al.char.used := true +% else nameresult := nameresult * +% format.name$(s, nameptr, "{v{}}{l{}}") +% nameptr := nameptr + 1 +% namesleft := namesleft - 1 +% od +% if numnames > 4 then +% nameresult := nameresult * "{\etalchar{+}}" +% et.al.char.used := true +% else +% t := format.name$(s, 1, "{v{}}{l{}}") +% if text.length$(t) < 2 then % there's just one name-token +% nameresult := text.prefix$(format.name$(s,1,"{ll}"),3) +% else +% nameresult := t +% fi +% fi +% return nameresult +% END +% \end{pseudocode} +% +% Exactly what fields we look at in constructing the primary part of the label +% depends on the entry type; this selectivity (as opposed to, say, always +% looking at author, then editor, then key) helps ensure that "ignored" fields, +% as described in the LaTeX book, really are ignored. Note that MISC is part +% of the deepest `else' clause in the nested part of calc.label; thus, any +% unrecognized entry type in the database is handled correctly. +% +% There is one auxiliary function for each of the four different sequences of +% fields we use. The first of these functions looks at the author field, and +% then, if necessary, the key field. The other three functions, which might +% look at two fields and the key field, are similar, except that the key field +% takes precedence over the organization field (for labels---not for sorting). +% +% The calc.label function calculates the preliminary label of an entry, which +% is formed by taking three letters of information from the author or editor or +% key or organization field (depending on the entry type and on what's empty, +% but ignoring a leading "The " in the organization), and appending the last +% two characters (digits) of the year. It is an error if the appropriate fields +% among author, editor, organization, and key are missing, and we use +% the first three letters of the |cite$| in desperation when this happens. +% The resulting label has the year part, but not the name part, |purify$|ed +% (|purify$|ing the year allows some sorting shenanigans by the user). +% +% This function also calculates the version of the label to be used in sorting. +% +% The final label may need a trailing 'a', 'b', etc., to distinguish it from +% otherwise identical labels, but we can't calculated those "extra.label"s +% until after sorting. +% +% \begin{pseudocode} +% calc.label == +% BEGIN +% if type$ = "book" or "inbook" then +% author.editor.key.label +% else if type$ = "proceedings" then +% editor.key.organization.label +% else if type$ = "manual" then +% author.key.organization.label +% else +% author.key.label +% fi fi fi +% label := label * substring$(purify$(field.or.null(year)), -1, 2) +% % assuming we will also sort, we calculate a sort.label +% sort.label := sortify(label), but use the last four, not two, digits +% END +% \end{pseudocode} +% \begin{macrocode} +FUNCTION {format.lab.name} +{ "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t "others" = + { citation.et.al } + { t get.str.lang 'name.lang := + name.lang lang.zh = name.lang lang.ja = or + { t #1 "{ll}{ff}" format.name$ } + { t #1 "{vv~}{ll}" format.name$ } + if$ + } + if$ +} + +% \end{macrocode} +% +% 第一作者姓名相同、年份相同但作者数量不同时,也需要年份标签区分。 +% 比如“王临惠\ 等, 2010a”和“王临惠, 2010b”, +% 所以使用 |short.label| 存储不带“et al”的版本。 +% \begin{macrocode} +FUNCTION {format.lab.names} +{ 's := + s #1 format.lab.name 'short.label := + #1 'nameptr := + s num.names$ 'numnames := + "" + numnames 'namesleft := + { namesleft #0 > } + { s nameptr format.lab.name citation.et.al = + numnames citation.et.al.min #1 - > nameptr citation.et.al.use.first > and or + { bbl.space * + citation.et.al * + #1 'namesleft := + } + { nameptr #1 > + { namesleft #1 = citation.and "" = not and + { citation.and * } + { ", " * } + if$ + } + 'skip$ + if$ + s nameptr format.lab.name * + } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ "" 'short.label := + type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "collection" = + type$ "proceedings" = + or + { editor empty$ not + 'editor.key.organization.label + 'author.key.organization.label + if$ + } + 'author.key.label + if$ + } + if$ + 'short.list := + short.label empty$ + { short.list 'short.label := } + 'skip$ + if$ +} + +% \end{macrocode} +% +% 如果 label 中有中括号“[”,分别用大括号保护起来,防止 \cs{bibitem} 处理出错。 +% 另外为了兼容 \pkg{bibunits},“name(year)fullname” 的每一项都要分别保护起来, +% 参考 \href{https://github.com/tuna/thuthesis/issues/630}{tuna/thuthesis/\#630}。 +% \begin{macrocode} +FUNCTION {calc.label} +{ calc.short.authors + short.list "]" contains + { "{" short.list * "}" * } + { short.list } + if$ + "(" + * + format.year duplicate$ empty$ + short.list key field.or.null = or + { pop$ "" } + 'skip$ + if$ + duplicate$ "]" contains + { "{" swap$ * "}" * } + 'skip$ + if$ + * + 'label := + short.label + "(" + * + format.year duplicate$ empty$ + short.list key field.or.null = or + { pop$ "" } + 'skip$ + if$ + * + 'short.label := +} + +% \end{macrocode} +% +% +% \subsection{Sorting} +% +% When sorting, we compute the sortkey by executing "presort" on each entry. +% The presort key contains a number of "sortify"ed strings, concatenated +% with multiple blanks between them. This makes things like "brinch per" +% come before "brinch hansen per". +% +% The fields used here are: the sort.label for alphabetic labels (as set by +% |calc.label|), followed by the author names (or editor names or organization +% (with a leading "The " removed) or key field, depending on entry type and on +% what's empty), followed by year, followed by the first bit of the title +% (chopping off a leading "The ", "A ", or "An "). +% Names are formatted: Von Last First Junior. +% The names within a part will be separated by a single blank +% (such as "brinch hansen"), two will separate the name parts themselves +% (except the von and last), three will separate the names, +% four will separate the names from year (and from label, if alphabetic), +% and four will separate year from title. +% +% The |sort.format.names| function takes an argument that should be in +% BibTeX name format, and returns a string containing " "-separated +% names in the format described above. The function is almost the same +% as format.names. +% \begin{macrocode} +%<*author-year> +FUNCTION {sort.language.label} +{ entry.lang lang.zh = + { lang.zh.order } + { entry.lang lang.ja = + { lang.ja.order } + { entry.lang lang.en = + { lang.en.order } + { entry.lang lang.ru = + { lang.ru.order } + { lang.other.order } + if$ + } + if$ + } + if$ + } + if$ + #64 + + int.to.chr$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr #1 > + { + " " * + namesleft #1 = t "others" = and + { "zzzzz" * } + { numnames #2 > nameptr #2 = and + { "zz" * year field.or.null * " " * } + 'skip$ + if$ + t sortify * + } + if$ + } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +% \end{macrocode} +% +% The sort.format.title function returns the argument, +% but first any leading "A "'s, "An "'s, or "The "'s are removed. +% The chop.word function uses s, so we need another string variable, t +% \begin{macrocode} +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +% \end{macrocode} +% +% The auxiliary functions here, for the presort function, are analogous to +% the ones for calc.label; the same comments apply, except that the +% organization field takes precedence here over the key field. For sorting +% purposes, we still remove a leading "The " from the organization field. +% \begin{macrocode} +FUNCTION {anonymous.sort} +{ entry.lang lang.zh = + { "yi4 ming2" } + { "anon" } + if$ +} + +FUNCTION {warn.empty.key} +{ entry.lang lang.zh = + { "empty key in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {author.sort} +{ key empty$ + { warn.empty.key + author empty$ + { anonymous.sort } + { author sort.format.names } + if$ + } + { key } + if$ +} + +FUNCTION {author.editor.sort} +{ key empty$ + { warn.empty.key + author empty$ + { editor empty$ + { anonymous.sort } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ + } + { key } + if$ +} + +FUNCTION {author.organization.sort} +{ key empty$ + { warn.empty.key + author empty$ + { organization empty$ + { anonymous.sort } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ + } + { key } + if$ +} + +FUNCTION {editor.organization.sort} +{ key empty$ + { warn.empty.key + editor empty$ + { organization empty$ + { anonymous.sort } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ + } + { key } + if$ +} + +% +% \end{macrocode} +% +% 顺序编码制的排序要简单得多 +% \begin{macrocode} +%<*numerical> +INTEGERS { seq.num } + +FUNCTION {init.seq} +{ #0 'seq.num :=} + +FUNCTION {int.to.fix} +{ "000000000" swap$ int.to.str$ * + #-1 #10 substring$ +} + +% +% \end{macrocode} +% +% There is a limit, |entry.max$|, on the length of an entry string variable +% (which is what its |sort.key$| is), so we take at most that many characters +% of the constructed key, and hope there aren't many references that match +% to that many characters! +% \begin{macrocode} +FUNCTION {presort} +{ set.entry.lang + set.entry.numbered + show.url show.doi check.electronic + #0 'is.pure.electronic := + calc.label + label sortify + " " + * +%<*author-year> + sort.language.label + " " + * + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "collection" = + type$ "proceedings" = + or + 'editor.organization.sort + 'author.sort + if$ + } + if$ + * + " " + * + year field.or.null sortify + * + " " + * + cite$ + * + #1 entry.max$ substring$ +% +%<*numerical> + seq.num #1 + 'seq.num := + seq.num int.to.fix +% + 'sort.label := + sort.label * + #1 entry.max$ substring$ + 'sort.key$ := +} + +% \end{macrocode} +% +% Now comes the final computation for alphabetic labels, putting in the 'a's +% and 'b's and so forth if required. This involves two passes: a forward +% pass to put in the 'b's, 'c's and so on, and a backwards pass +% to put in the 'a's (we don't want to put in 'a's unless we know there +% are 'b's). +% We have to keep track of the longest (in |width$| terms) label, for use +% by the "thebibliography" environment. +% +% \begin{pseudocode} +% VAR: longest.label, last.sort.label, next.extra: string +% longest.label.width, last.extra.num: integer +% +% initialize.longest.label == +% BEGIN +% longest.label := "" +% last.sort.label := int.to.chr$(0) +% next.extra := "" +% longest.label.width := 0 +% last.extra.num := 0 +% END +% +% forward.pass == +% BEGIN +% if last.sort.label = sort.label then +% last.extra.num := last.extra.num + 1 +% extra.label := int.to.chr$(last.extra.num) +% else +% last.extra.num := chr.to.int$("a") +% extra.label := "" +% last.sort.label := sort.label +% fi +% END +% +% reverse.pass == +% BEGIN +% if next.extra = "b" then +% extra.label := "a" +% fi +% label := label * extra.label +% if width$(label) > longest.label.width then +% longest.label := label +% longest.label.width := width$(label) +% fi +% next.extra := extra.label +% END +% \end{pseudocode} +% \begin{macrocode} +STRINGS { longest.label last.label next.extra last.extra.label } + +INTEGERS { longest.label.width number.label } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'number.label := + "" 'last.extra.label := +} + +FUNCTION {forward.pass} +{ +%<*author-year> + last.label short.label = + { "" 'extra.label := + last.extra.label text.length$ 'charptr := + { last.extra.label charptr #1 substring$ "z" = + charptr #0 > and + } + { "a" extra.label * 'extra.label := + charptr #1 - 'charptr := + } + while$ + charptr #0 > + { last.extra.label charptr #1 substring$ chr.to.int$ #1 + int.to.chr$ + extra.label * 'extra.label := + last.extra.label #1 charptr #1 - substring$ + extra.label * 'extra.label := + } + { "a" extra.label * 'extra.label := } + if$ + extra.label 'last.extra.label := + } + { "a" 'last.extra.label := + "" 'extra.label := + short.label 'last.label := + } + if$ +% + number.label #1 + 'number.label := +} + +FUNCTION {reverse.pass} +{ +%<*author-year> + next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'next.extra := + extra.label + duplicate$ empty$ + 'skip$ + { "{\natexlab{" swap$ * "}}" * } + if$ + 'extra.label := +% + label extra.label * 'label := +} + +FUNCTION {bib.sort.order} +{ sort.label 'sort.key$ := +} + +% \end{macrocode} +% +% +% \subsection{Write bbl file} +% +% Now we're ready to start writing the .BBL file. +% We begin, if necessary, with a \LaTeX{} macro for unnamed names in an +% alphabetic label; next comes stuff from the `preamble' command in the +% database files. Then we give an incantation containing the command +% |\begin{thebibliography}{...}| +% where the `...' is the longest label. +% +% We also call init.state.consts, for use by the output routines. +% \begin{macrocode} +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ + terms.in.macro + { "\providecommand{\biband}{和}" + write$ newline$ + "\providecommand{\bibetal}{等}" + write$ newline$ + } + 'skip$ + if$ + "\providecommand{\natexlab}[1]{#1}" + write$ newline$ + "\providecommand{\url}[1]{#1}" + write$ newline$ + "\expandafter\ifx\csname urlstyle\endcsname\relax\else" + write$ newline$ + " \urlstyle{same}\fi" + write$ newline$ + "\expandafter\ifx\csname href\endcsname\relax" + write$ newline$ + " \DeclareUrlCommand\doi{\urlstyle{rm}}" + write$ newline$ + " \def\eprint#1#2{#2}" + write$ newline$ + "\else" + write$ newline$ + " \def\doi#1{\href{https://doi.org/#1}{\nolinkurl{#1}}}" + write$ newline$ + " \let\eprint\href" + write$ newline$ + "\fi" + write$ newline$ + } + +% \end{macrocode} +% +% Finally, we finish up by writing the `|\end{thebibliography}|' command. +% \begin{macrocode} +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +% \end{macrocode} +% +% +% \subsection{Main execution} +% +% Now we read in the .BIB entries. +% \begin{macrocode} +READ + +EXECUTE {init.state.consts} + +EXECUTE {load.config} + +%<*numerical> +EXECUTE {init.seq} + +% +ITERATE {presort} + +% \end{macrocode} +% +% And now we can sort +% \begin{macrocode} +SORT + +EXECUTE {initialize.longest.label} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +ITERATE {bib.sort.order} + +SORT + +EXECUTE {begin.bib} + +% \end{macrocode} +% +% Now we produce the output for all the entries +% \begin{macrocode} +ITERATE {call.type$} + +EXECUTE {end.bib} +% +% \end{macrocode} +% \end{environment} +% +% \Finale +\endinput diff --git a/biblio/bibtex/contrib/gbt7714/gbt7714.pdf b/biblio/bibtex/contrib/gbt7714/gbt7714.pdf index 8ac00c1415..7a2ac8e543 100644 Binary files a/biblio/bibtex/contrib/gbt7714/gbt7714.pdf and b/biblio/bibtex/contrib/gbt7714/gbt7714.pdf differ diff --git a/biblio/bibtex/contrib/gbt7714/gbt7714.sty b/biblio/bibtex/contrib/gbt7714/gbt7714.sty index bb202cb319..38750afa9c 100644 --- a/biblio/bibtex/contrib/gbt7714/gbt7714.sty +++ b/biblio/bibtex/contrib/gbt7714/gbt7714.sty @@ -8,7 +8,7 @@ %% ------------------------------------------------------------------- %% GB/T 7714 BibTeX Style %% https://github.com/zepinglee/gbt7714-bibtex-style -%% Version: 2022/03/21 v2.1.4 +%% Version: 2022/10/03 v2.1.5 %% ------------------------------------------------------------------- %% Copyright (C) 2016--2022 by Zeping Lee %% ------------------------------------------------------------------- @@ -22,7 +22,7 @@ %% ------------------------------------------------------------------- \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{gbt7714} - [2022/03/21 v2.1.4 GB/T 7714 BibTeX Style] + [2022/10/03 v2.1.5 GB/T 7714 BibTeX Style] \newif\ifgbt@legacy@interface \newif\ifgbt@mmxv \newif\ifgbt@numerical diff --git a/macros/generic/markdown/CHANGES.md b/macros/generic/markdown/CHANGES.md index fae1a5a717..077fb63c99 100644 --- a/macros/generic/markdown/CHANGES.md +++ b/macros/generic/markdown/CHANGES.md @@ -1,6 +1,24 @@ # Changes -## 2.17.0 (2022-10-01) +## 2.17.1 (2022-10-03) + +Fixes: + +- Add `debugExtensions` and `debugExtensionsFileName` Lua options for debugging + user-defined syntax extensions. (#191, #192) + - Add a third optional argument to the `reader->insert_pattern()` method and + increment `user_extension_api_version` to `2`. This change is fully + backwards-compatible with the `user_extension_api_version` of `1`. + (658fbbe) + - Fix typos in example code for user-defined syntax extensions. + (7c6de52, d3195f7) + +Documentation: + +- Move `contentBlocksLanguageMap` option to the file and directory names + section of the technical documentation. (dd564f2) + +## 2.17.0 (2022-09-30) Development: diff --git a/macros/generic/markdown/VERSION b/macros/generic/markdown/VERSION index 3b4985a362..5435cd30d6 100644 --- a/macros/generic/markdown/VERSION +++ b/macros/generic/markdown/VERSION @@ -1 +1 @@ -2.17.0-0-g6428569 (2022-09-30) +2.17.1-0-g8ca83f5 (2022-10-03) diff --git a/macros/generic/markdown/examples/context-mkii.tex b/macros/generic/markdown/examples/context-mkii.tex index 13ce98fd60..77809fa16b 100644 --- a/macros/generic/markdown/examples/context-mkii.tex +++ b/macros/generic/markdown/examples/context-mkii.tex @@ -10,6 +10,7 @@ \setupmarkdown [ hashEnumerators = yes, + debugExtensions = yes, definitionLists = yes, smartEllipses = yes, footnotes = yes, diff --git a/macros/generic/markdown/examples/context-mkiv.tex b/macros/generic/markdown/examples/context-mkiv.tex index 415cf2a4dd..8849e7bd66 100644 --- a/macros/generic/markdown/examples/context-mkiv.tex +++ b/macros/generic/markdown/examples/context-mkiv.tex @@ -10,6 +10,7 @@ \setupmarkdown [ hashEnumerators = yes, + debugExtensions = yes, definitionLists = yes, smartEllipses = yes, footnotes = yes, diff --git a/macros/generic/markdown/examples/latex.tex b/macros/generic/markdown/examples/latex.tex index cb2bce39b8..2403caf1e9 100644 --- a/macros/generic/markdown/examples/latex.tex +++ b/macros/generic/markdown/examples/latex.tex @@ -17,6 +17,7 @@ \usepackage{booktabs} \usepackage[ hashEnumerators, + debugExtensions, definitionLists, footnotes, inlineFootnotes, diff --git a/macros/generic/markdown/markdown.dtx b/macros/generic/markdown/markdown.dtx index f419af48a2..2e3e12e15d 100644 --- a/macros/generic/markdown/markdown.dtx +++ b/macros/generic/markdown/markdown.dtx @@ -1653,12 +1653,17 @@ local walkable_syntax = { % \begin{markdown} % % The \luamref{reader->insert_pattern} method inserts a \acro{peg} pattern into -% the grammar of markdown. The method receives two arguments: a selector string -% in the form `"`\meta{left-hand side terminal symbol} \meta{`before`, `after`, -% or `instead of`} \meta{right-hand side terminal symbol}`"` and a \acro{peg} -% pattarn to insert. 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 +% the grammar of markdown. The method receives two mandatory arguments: a +% selector string in the form `"`\meta{left-hand side terminal symbol} +% \meta{`before`, `after`, or `instead of`} \meta{right-hand side terminal +% symbol}`"` and a \acro{peg} pattern to insert, and an optional third argument +% with a name of the \acro{peg} pattern for debugging purposes (see the +% \Opt{debugExtensions} option). The name does not need to be unique and shall +% 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. % % The \luamdef{reader->add_special_character} method adds a new character with @@ -2278,6 +2283,219 @@ defaultOptions.cacheDir = "." % %<*manual-options> +#### Option `contentBlocksLanguageMap` + +`contentBlocksLanguageMap` (default value: `"markdown-languages.json"`) + +% \fi +% \begin{markdown} +% +% \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 + \Opt{contentBlocks} option is enabled. +% See Section <#sec:texcontentblockrenderers> for more information. + +% \end{markdown} +% \iffalse + +##### \LaTeX{} Example {.unnumbered} + +Using a text editor, create a text document named `table.csv` with the +following content: +``` csv +Name,Surname,Born +Albert,Einstein,1879 +Marie,Curie,1867 +Thomas,Edison,1847 +``````` +Create also a text document named `language-map.json` with the following +content: +``` js +{ + "tex": "LaTeX" +} +`````` +Create also a text document named `code.tex` with the following content: +``` tex +This is an example code listing in \LaTeX. +``````` +Create also a text document named `part.md` with the following content: +``` md +This is a *transcluded markdown document*. +`````` +Create also a text document named `document.tex` with the following content: +``` tex +\documentclass{article} +\usepackage{minted} +\usepackage[contentBlocks]{markdown} +\markdownSetup{ + contentBlocksLanguageMap = {language-map.json}, +} +\begin{document} +\begin{markdown} +/table.csv (An example table) +/code.tex (An example code listing) +/part.md (A file transclusion example) +\end{markdown} +\end{document} +``````` +Next, invoke LuaTeX from the terminal: +``` sh +lualatex --shell-escape document.tex +`````` +A PDF document named `document.pdf` should be produced and contain the +following text: + +> | Name | Surname | Born | +> | ------ | ---------| ---- | +> | Albert | Einstein | 1879 | +> | Marie | Curie | 1867 | +> | Thomas | Edison | 1847 | +> +> Table 1: An example table +> +> ``` tex +> This is an example code listing in \LaTeX. +> ``````` +> +> This is a *transcluded markdown document*. + +##### \Hologo{ConTeXt} Example {.unnumbered} + +Using a text editor, create a text document named `table.csv` with the +following content: +``` csv +Name,Surname,Born +Albert,Einstein,1879 +Marie,Curie,1867 +Thomas,Edison,1847 +``````` +Create also a text document named `language-map.json` with the following +content: +``` js +{ + "tex": "ConTeXt" +} +`````` +Create also a text document named `code.tex` with the following content: +``` tex +This is an example code listing in \ConTeXt. +``````` +Create also a text document named `part.md` with the following content: +``` md +This is a *transcluded markdown document*. +`````` +Create also a text document named `document.tex` with the following content: +``` tex +\usemodule[t][markdown] +\setupmarkdown + [ + contentBlocks = yes, + contentBlocksLanguageMap = language-map.json, + ] +\definetyping [ConTeXt] +\setuptyping [ConTeXt] [option=TEX] +\starttext +\startmarkdown +/table.csv (An example table) +/code.tex (An example code listing) +/part.md (A file transclusion example) +\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: + +> | Name | Surname | Born | +> | ------ | ---------| ---- | +> | Albert | Einstein | 1879 | +> | Marie | Curie | 1867 | +> | Thomas | Edison | 1847 | +> +> Table 1: An example table +> +> ``` tex +> This is an example code listing in \ConTeXt. +> ``````` +> +> This is a *transcluded markdown document*. + +% +%<*tex> +% \fi +% \begin{macrocode} +\@@_add_lua_option:nnn + { contentBlocksLanguageMap } + { path } + { markdown-languages.json } +% \end{macrocode} +% \iffalse +% +%<*lua,lua-cli> +% \fi +% \begin{macrocode} +defaultOptions.contentBlocksLanguageMap = "markdown-languages.json" +% \end{macrocode} +% \par +% \iffalse +% +%<*manual-options> + +#### Option `debugExtensionsFileName` + +`debugExtensionsFileName` (default value: `"debug-extensions.json"`) + +% \fi +% \begin{markdown} +% +% \Valitem[debug-extensions.json]{debugExtensionsFileName}{filename} +% +: The filename of the \acro{JSON} file that will be produced when the + \Opt{debugExtensions} option is enabled. This file will contain the + extensible subset of the \acro{peg} grammar of markdown +% (see the \luamref{walkable_syntax} hash table) + after built-in syntax extensions +% (see Section <#luabuiltinextensions>) +% \iffalse + (see options \Opt{citations}, \Opt{contentBlocks}, \Opt{definitionLists}, + etc.) +% \fi + and user-defined syntax extensions +% (see Section <#luauserextensions>) +% \iffalse + (see option \Opt{extensions}) +% \fi + have been applied. + +% \end{markdown} +% \iffalse +% +%<*tex> +% \fi +% \begin{macrocode} +\@@_add_lua_option:nnn + { debugExtensionsFileName } + { path } + { \markdownOptionOutputDir / \jobname .debug-extensions.json } +% \end{macrocode} +% \iffalse +% +%<*lua,lua-cli> +% \fi +% \begin{macrocode} +defaultOptions.debugExtensionsFileName = "debug-extensions.json" +% \end{macrocode} +% \par +% \iffalse +% +%<*manual-options> + #### Option `frozenCacheFileName` `frozenCacheFileName` (default value: `"frozenCache.tex"`) @@ -2513,9 +2731,9 @@ defaultOptions.frozenCacheFileName = "frozenCache.tex" %<*manual-options> % \fi % \begin{markdown} -% +% %### Parser Options -% +% % \end{markdown} % \par % \iffalse @@ -4028,163 +4246,151 @@ defaultOptions.contentBlocks = false % %<*manual-options> -#### Option `contentBlocksLanguageMap` +#### Option `debugExtensions` -`contentBlocksLanguageMap` (default value: `"markdown-languages.json"`) +`debugExtensions` (default value: `false`) % \fi % \begin{markdown} % -% \Valitem[markdown-languages.json]{contentBlocksLanguageMap}{filename} +% \Optitem[false]{debugExtensions}{\opt{true}, \opt{false}} % -: The filename of the \acro{JSON} file that maps filename extensions to - programming language names in the iA\,Writer content blocks. -% See Section <#sec:texcontentblockrenderers> for more information. +: true + + : Produce a \acro{JSON} file that will contain the + extensible subset of the \acro{peg} grammar of markdown +% (see the \luamref{walkable_syntax} hash table) + after built-in syntax extensions +% (see Section <#luabuiltinextensions>) +% \iffalse + (see options \Opt{citations}, \Opt{contentBlocks}, + \Opt{definitionLists}, etc.) +% \fi + and user-defined syntax extensions +% (see Section <#luauserextensions>) +% \iffalse + (see option \Opt{extensions}) +% \fi + have been applied. This helps you to see how the different + extensions interact. The name of the produced \acro{JSON} file is + controlled by the \Opt{debugExtensionsFileName} option. + +: false + + : Do not produce a \acro{JSON} file with the \acro{peg} grammar of + markdown. % \end{markdown} % \iffalse ##### \LaTeX{} Example {.unnumbered} -Using a text editor, create a text document named `table.csv` with the +Using a text editor, create a text document named `strike-through.lua` with the following content: -``` csv -Name,Surname,Born -Albert,Einstein,1879 -Marie,Curie,1867 -Thomas,Edison,1847 -``````` -Create also a text document named `language-map.json` with the following -content: -``` js -{ - "tex": "LaTeX" +``` lua +local strike_through = { + api_version = 2, + grammar_version = 1, + finalize_grammar = function(reader) + local nonspacechar = lpeg.P(1) - lpeg.S("\t ") + local doubleslashes = lpeg.P("//") + local function between(p, starter, ender) + ender = lpeg.B(nonspacechar) * ender + return (starter * #nonspacechar + * lpeg.Ct(p * (p - ender)^0) * ender) + end + + local read_strike_through = between( + lpeg.V("Inline"), doubleslashes, doubleslashes + ) / function(s) return {"\\st{", s, "}"} end + + reader.insert_pattern("Inline after Emph", read_strike_through, + "StrikeThrough") + reader.add_special_character("/") + end } -`````` -Create also a text document named `code.tex` with the following content: -``` tex -This is an example code listing in \LaTeX. + +return strike_through ``````` -Create also a text document named `part.md` with the following content: -``` md -This is a *transcluded markdown document*. -`````` -Create also a text document named `document.tex` with the following content: +Using a text editor, create also a text document named `document.tex` with the +following content: ``` tex \documentclass{article} -\usepackage{minted} -\usepackage[contentBlocks]{markdown} -\markdownSetup{ - contentBlocksLanguageMap = {language-map.json}, -} +\usepackage{soul} +\usepackage[extension = strike-through.lua, + debugExtensions]{markdown} \begin{document} \begin{markdown} -/table.csv (An example table) -/code.tex (An example code listing) -/part.md (A file transclusion example) +This is //a lunar roving vehicle// strike-through text. \end{markdown} \end{document} ``````` Next, invoke LuaTeX from the terminal: ``` sh -lualatex --shell-escape document.tex +lualatex document.tex `````` A PDF document named `document.pdf` should be produced and contain the following text: -> | Name | Surname | Born | -> | ------ | ---------| ---- | -> | Albert | Einstein | 1879 | -> | Marie | Curie | 1867 | -> | Thomas | Edison | 1847 | -> -> Table 1: An example table -> -> ``` tex -> This is an example code listing in \LaTeX. -> ``````` -> -> This is a *transcluded markdown document*. +> This is ~~a lunar roving vehicle~~ strike-through text. -##### \Hologo{ConTeXt} Example {.unnumbered} +Furthermore, a JSON document named `document.debug-extensions.json` should also +be produced and contain the following text: -Using a text editor, create a text document named `table.csv` with the -following content: -``` csv -Name,Surname,Born -Albert,Einstein,1879 -Marie,Curie,1867 -Thomas,Edison,1847 -``````` -Create also a text document named `language-map.json` with the following -content: -``` js +``` json { - "tex": "ConTeXt" + "Block": [ + "Blockquote", + "Verbatim", + "HorizontalRule", + "BulletList", + "OrderedList", + "Heading", + "DisplayHtml", + "Paragraph", + "Plain" + ], + "Inline": [ + "Str", + "Space", + "Endline", + "UlOrStarLine", + "Strong", + "Emph", + "StrikeThrough (user-defined \"./strike-through.lua\" syntax extension)", + "Link", + "Image", + "Code", + "AutoLinkUrl", + "AutoLinkEmail", + "AutoLinkRelativeReference", + "InlineHtml", + "HtmlEntity", + "EscapedChar", + "Smart", + "Symbol" + ] } -`````` -Create also a text document named `code.tex` with the following content: -``` tex -This is an example code listing in \ConTeXt. -``````` -Create also a text document named `part.md` with the following content: -``` md -This is a *transcluded markdown document*. -`````` -Create also a text document named `document.tex` with the following content: -``` tex -\usemodule[t][markdown] -\setupmarkdown - [ - contentBlocks = yes, - contentBlocksLanguageMap = language-map.json, - ] -\definetyping [ConTeXt] -\setuptyping [ConTeXt] [option=TEX] -\starttext -\startmarkdown -/table.csv (An example table) -/code.tex (An example code listing) -/part.md (A file transclusion example) -\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: -> | Name | Surname | Born | -> | ------ | ---------| ---- | -> | Albert | Einstein | 1879 | -> | Marie | Curie | 1867 | -> | Thomas | Edison | 1847 | -> -> Table 1: An example table -> -> ``` tex -> This is an example code listing in \ConTeXt. -> ``````` -> -> This is a *transcluded markdown document*. +This output shows us that our user-defined syntax extension has been correctly +inserted to the grammar of markdown. % %<*tex> % \fi % \begin{macrocode} \@@_add_lua_option:nnn - { contentBlocksLanguageMap } - { path } - { markdown-languages.json } + { debugExtensions } + { boolean } + { false } % \end{macrocode} % \iffalse % %<*lua,lua-cli> % \fi % \begin{macrocode} -defaultOptions.contentBlocksLanguageMap = "markdown-languages.json" +defaultOptions.debugExtensions = false % \end{macrocode} % \par % \iffalse @@ -4449,7 +4655,7 @@ defaultOptions.eagerCache = true % % ``` lua % local strike_through = { -% api_version = 1, +% api_version = 2, % grammar_version = 1, % finalize_grammar = function(reader) % local nonspacechar = lpeg.P(1) - lpeg.S("\t ") @@ -4461,10 +4667,11 @@ defaultOptions.eagerCache = true % end % % local read_strike_through = between( -% lpeg.V("Inline"), doubletildes, doubletildes +% 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 Emph", read_strike_through, +% "StrikeThrough") % reader.add_special_character("/") % end % } @@ -4483,7 +4690,7 @@ defaultOptions.eagerCache = true %<*lua> % \fi % \begin{macrocode} -metadata.user_extension_api_version = 1 +metadata.user_extension_api_version = 2 metadata.grammar_version = 1 % \end{macrocode} % \iffalse @@ -4513,7 +4720,7 @@ Using a text editor, create a text document named `strike-through.lua` with the following content: ``` lua local strike_through = { - api_version = 1, + api_version = 2, grammar_version = 1, finalize_grammar = function(reader) local nonspacechar = lpeg.P(1) - lpeg.S("\t ") @@ -4525,13 +4732,16 @@ local strike_through = { end local read_strike_through = between( - lpeg.V("Inline"), doubletildes, doubletildes + 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 Emph", read_strike_through, + "StrikeThrough") reader.add_special_character("/") end } + +return strike_through ``````` Using a text editor, create also a text document named `document.tex` with the following content: @@ -17116,6 +17326,20 @@ end % \par % \begin{markdown} % +% The \luamdef{util.encode_json_string} method encodes a string `s` in +% \acro{JSON}. +% +% \end{markdown} +% \begin{macrocode} +function util.encode_json_string(s) + s = s:gsub([[\]], [[\\]]) + s = s:gsub([["]], [[\"]]) + return [["]] .. s .. [["]] +end +% \end{macrocode} +% \par +% \begin{markdown} +% % The \luamdef{util.lookup_files} method looks up files with filename `f` % and returns its path. If the \pkg{kpathsea} library is available, it will % search for files not only in the current working directory but also in the @@ -21495,16 +21719,15 @@ function M.reader.new(writer, options) % \par % \begin{markdown} % -% Define \luamref{reader->insert_pattern} as a function that receives two -% arguments: a selector string in the form `"`\meta{left-hand side terminal -% symbol} \meta{`before`, `after`, or `instead of`} \meta{right-hand side -% terminal symbol}`"` and a \acro{peg} pattarn to insert. The function adds -% the pattern to \luamref{walkable_syntax}`[`*left-hand side terminal -% symbol*`]` before or after *right-hand side terminal symbol*. +% The \luamref{reader->insert_pattern} method adds a pattern to +% \luamref{walkable_syntax}`[`*left-hand side terminal symbol*`]` before, +% instead of, or after a right-hand-side terminal symbol. % % \end{markdown} % \begin{macrocode} - self.insert_pattern = function(selector, pattern) + local current_extension_name = nil + self.insert_pattern = function(selector, pattern, pattern_name) + assert(pattern_name == nil or type(pattern_name) == "string") local _, _, lhs, pos, rhs = selector:find("^(%a+)%s+([%a%s]+%a+)%s+(%a+)$") assert(lhs ~= nil, [[Expected selector in form "LHS (before|after|instead of) RHS", not "]] @@ -21528,10 +21751,19 @@ function M.reader.new(writer, options) assert(index ~= nil, [[Rule ]] .. lhs .. [[ -> ]] .. rhs .. [[ does not exist in markdown grammar]]) + local accountable_pattern + if current_extension_name then + accountable_pattern = { pattern, current_extension_name, pattern_name } + else + assert(type(pattern) == "string", + [[reader->insert_pattern() was called outside an extension with ]] + .. [[a PEG pattern instead of a rule name]]) + accountable_pattern = pattern + end if pos == "instead of" then - rule[index] = pattern + rule[index] = accountable_pattern else - table.insert(rule, index, pattern) + table.insert(rule, index, accountable_pattern) end end % \end{macrocode} @@ -21596,17 +21828,19 @@ function M.reader.new(writer, options) % \par % \begin{markdown} % -% Define \luamref{reader->update_rule} as a function that receives two arguments: -% a left-hand side terminal symbol and a \acro{peg} pattarn. The function -% (re)defines \luamref{walkable_syntax}`[`left-hand side terminal symbol`]` to -% be equal to pattern. +% Define \luamref{reader->update_rule} as a function that receives two +% arguments: a left-hand side terminal symbol and a \acro{peg} pattern. +% The function (re)defines \luamref{walkable_syntax}`[`left-hand side terminal +% symbol`]` to be equal to pattern. % % \end{markdown} % \begin{macrocode} self.update_rule = function(rule_name, pattern) + assert(current_extension_name ~= nil) assert(syntax[rule_name] ~= nil, [[Rule ]] .. rule_name .. [[ -> ... does not exist in markdown grammar]]) - walkable_syntax[rule_name] = { pattern } + local accountable_pattern = { pattern, current_extension_name, rule_name } + walkable_syntax[rule_name] = { accountable_pattern } end % \end{macrocode} % \par @@ -21640,9 +21874,68 @@ function M.reader.new(writer, options) % \end{markdown} % \begin{macrocode} for _, extension in ipairs(extensions) do + current_extension_name = extension.name extension.extend_writer(writer) extension.extend_reader(self) end + current_extension_name = nil +% \end{macrocode} +% \par +% \begin{markdown} +% +% If the \Opt{debugExtensions} option is enabled, serialize +% \luamref{walkable_syntax} to a \acro{JSON} for debugging purposes. +% +% \end{markdown} +% \begin{macrocode} + if options.debugExtensions then + local sorted_lhs = {} + for lhs, _ in pairs(walkable_syntax) do + table.insert(sorted_lhs, lhs) + end + table.sort(sorted_lhs) + + local output_lines = {"{"} + for lhs_index, lhs in ipairs(sorted_lhs) do + local encoded_lhs = util.encode_json_string(lhs) + table.insert(output_lines, [[ ]] ..encoded_lhs .. [[: []]) + local rule = walkable_syntax[lhs] + for rhs_index, rhs in ipairs(rule) do + local human_readable_rhs + if type(rhs) == "string" then + human_readable_rhs = rhs + else + local pattern_name + if rhs[3] then + pattern_name = rhs[3] + else + pattern_name = "Anonymous Pattern" + end + local extension_name = rhs[2] + human_readable_rhs = pattern_name .. [[ (]] .. extension_name .. [[)]] + end + local encoded_rhs = util.encode_json_string(human_readable_rhs) + local output_line = [[ ]] .. encoded_rhs + if rhs_index < #rule then + output_line = output_line .. "," + end + table.insert(output_lines, output_line) + end + local output_line = " ]" + if lhs_index < #sorted_lhs then + output_line = output_line .. "," + end + table.insert(output_lines, output_line) + end + table.insert(output_lines, "}") + + local output = table.concat(output_lines, "\n") + local output_filename = options.debugExtensionsFileName + local output_file = assert(io.open(output_filename, "w"), + [[Could not open file "]] .. output_filename .. [[" for writing]]) + assert(output_file:write(output)) + assert(output_file:close()) + end % \end{macrocode} % \par % \begin{markdown} @@ -21672,10 +21965,24 @@ function M.reader.new(writer, options) syntax[lhs] = parsers.fail for _, rhs in ipairs(rule) do local pattern +% \end{macrocode} +% \begin{markdown} +% +% Although the interface of the \luamref{reader->insert_pattern} method does +% document this (see Section <#luauserextensions>), 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. +% +% \end{markdown} +% \begin{macrocode} if type(rhs) == "string" then pattern = V(rhs) else - pattern = rhs + pattern = rhs[1] + if type(pattern) == "string" then + pattern = V(pattern) + end end syntax[lhs] = syntax[lhs] + pattern end @@ -21684,9 +21991,9 @@ function M.reader.new(writer, options) % \par % \begin{markdown} % -% Finalize the parser by enabling built-in syntax extensions and producing -% special parsers for difficult edge cases such as blocks nested in definition -% lists or inline content nested in link, note, and image labels. +% Finalize the parser by reacting to options and by producing special parsers +% for difficult edge cases such as blocks nested in definition lists or +% inline content nested in link, note, and image labels. % % \end{markdown} % \begin{macrocode} @@ -21877,6 +22184,7 @@ M.extensions.citations = function(citation_nbsps) ["#"] = "\\markdownRendererHash{}", } return { + name = "built-in citations syntax extension", extend_writer = function(self) local options = self.options @@ -22046,7 +22354,8 @@ M.extensions.citations = function(citation_nbsps) local Citations = TextCitations + ParenthesizedCitations - self.insert_pattern("Inline after Emph", Citations) + self.insert_pattern("Inline after Emph", + Citations, "Citations") self.add_special_character("@") self.add_special_character("-") @@ -22101,6 +22410,7 @@ M.extensions.content_blocks = function(language_map) end)() return { + name = "built-in content_blocks syntax extension", extend_writer = function(self) % \end{macrocode} % \par @@ -22211,7 +22521,8 @@ M.extensions.content_blocks = function(language_map) * contentblock_tail / writer.contentblock - self.insert_pattern("Block before Blockquote", ContentBlock) + self.insert_pattern("Block before Blockquote", + ContentBlock, "ContentBlock") end } end @@ -22228,6 +22539,7 @@ end % \begin{macrocode} M.extensions.definition_lists = function(tight_lists) return { + name = "built-in definition_lists syntax extension", extend_writer = function(self) % \end{macrocode} % \par @@ -22309,7 +22621,8 @@ M.extensions.definition_lists = function(tight_lists) * -DefinitionListItemLoose * Cc(true)) ) / writer.definitionlist - self.insert_pattern("Block after Heading", DefinitionList) + self.insert_pattern("Block after Heading", + DefinitionList, "DefinitionList") end } end @@ -22327,6 +22640,7 @@ end % \begin{macrocode} M.extensions.fenced_code = function(blank_before_code_fence) return { + name = "built-in fenced_code syntax extension", extend_writer = function(self) local options = self.options @@ -22411,7 +22725,7 @@ M.extensions.fenced_code = function(blank_before_code_fence) end self.insert_pattern("Block after Verbatim", - FencedCode) + FencedCode, "FencedCode") local fencestart if blank_before_code_fence then @@ -22444,6 +22758,7 @@ end M.extensions.footnotes = function(footnotes, inline_footnotes) assert(footnotes or inline_footnotes) return { + name = "built-in footnotes syntax extension", extend_writer = function(self) % \end{macrocode} % \par @@ -22467,7 +22782,8 @@ M.extensions.footnotes = function(footnotes, inline_footnotes) * (parsers.tag / self.parser_functions.parse_inlines_no_inline_note) / writer.note - self.insert_pattern("Inline after Emph", InlineNote) + self.insert_pattern("Inline after Emph", + InlineNote, "InlineNote") end if footnotes then local function strip_first_char(s) @@ -22509,7 +22825,8 @@ M.extensions.footnotes = function(footnotes, inline_footnotes) local Blank = NoteBlock + parsers.Blank self.update_rule("Blank", Blank) - self.insert_pattern("Inline after Emph", NoteRef) + self.insert_pattern("Inline after Emph", + NoteRef, "NoteRef") end self.add_special_character("^") @@ -22528,6 +22845,7 @@ end % \begin{macrocode} M.extensions.header_attributes = function() return { + name = "built-in header_attributes syntax extension", extend_writer = function() end, extend_reader = function(self) local parsers = self.parsers @@ -22595,6 +22913,7 @@ end % \begin{macrocode} M.extensions.jekyll_data = function(expect_jekyll_data) return { + name = "built-in jekyll_data syntax extension", extend_writer = function(self) % \end{macrocode} % \par @@ -22728,7 +23047,8 @@ M.extensions.jekyll_data = function(expect_jekyll_data) * JekyllData * (P("---") + P("..."))^-1 - self.insert_pattern("Block before Blockquote", UnexpectedJekyllData) + self.insert_pattern("Block before Blockquote", + UnexpectedJekyllData, "UnexpectedJekyllData") if expect_jekyll_data then self.update_rule("ExpectedJekyllData", ExpectedJekyllData) end @@ -22803,6 +23123,7 @@ M.extensions.pipe_tables = function(table_captions) end return { + name = "built-in pipe_tables syntax extension", extend_writer = function(self) % \end{macrocode} % \par @@ -22892,7 +23213,8 @@ M.extensions.pipe_tables = function(table_captions) * table_caption^-1 / writer.table - self.insert_pattern("Block after Blockquote", PipeTable) + self.insert_pattern("Block after Blockquote", + PipeTable, "PipeTable") end } end @@ -22908,6 +23230,7 @@ end % \begin{macrocode} M.extensions.strike_through = function() return { + name = "built-in strike_through syntax extension", extend_writer = function(self) % \end{macrocode} % \par @@ -22930,7 +23253,8 @@ M.extensions.strike_through = function() parsers.doubletildes) ) / writer.strike_through - self.insert_pattern("Inline after Emph", StrikeThrough) + self.insert_pattern("Inline after Emph", + StrikeThrough, "StrikeThrough") self.add_special_character("~") end @@ -22948,6 +23272,7 @@ end % \begin{macrocode} M.extensions.superscripts = function() return { + name = "built-in superscripts syntax extension", extend_writer = function(self) % \end{macrocode} % \par @@ -22969,7 +23294,8 @@ M.extensions.superscripts = function() parsers.between(parsers.Str, parsers.circumflex, parsers.circumflex) ) / writer.superscript - self.insert_pattern("Inline after Emph", Superscript) + self.insert_pattern("Inline after Emph", + Superscript, "Superscript") self.add_special_character("^") end @@ -22987,6 +23313,7 @@ end % \begin{macrocode} M.extensions.subscripts = function() return { + name = "built-in subscripts syntax extension", extend_writer = function(self) % \end{macrocode} % \par @@ -23008,7 +23335,8 @@ M.extensions.subscripts = function() parsers.between(parsers.Str, parsers.tilde, parsers.tilde) ) / writer.subscript - self.insert_pattern("Inline after Emph", Subscript) + self.insert_pattern("Inline after Emph", + Subscript, "Subscript") self.add_special_character("~") end @@ -23026,6 +23354,7 @@ end % \begin{macrocode} M.extensions.fancy_lists = function() return { + name = "built-in fancy_lists syntax extension", extend_writer = function(self) local options = self.options @@ -23358,7 +23687,8 @@ function M.new(options) .. [[" specifies field "api_version" of type "]] .. type(user_extension.api_version) .. [[" but "number" was expected]]) - assert(user_extension.api_version == metadata.user_extension_api_version, + assert(user_extension.api_version > 0 + and user_extension.api_version <= metadata.user_extension_api_version, [[User-defined syntax extension "]] .. pathname .. [[" uses syntax extension API version "]] .. user_extension.api_version .. [[ but markdown.lua ]] @@ -23399,6 +23729,7 @@ function M.new(options) % \end{markdown} % \begin{macrocode} local extension = { + name = [[user-defined "]] .. pathname .. [[" syntax extension]], extend_reader = user_extension.finalize_grammar, extend_writer = function() end, } diff --git a/macros/generic/markdown/markdown.html b/macros/generic/markdown/markdown.html index 834e756529..edd58f157d 100644 --- a/macros/generic/markdown/markdown.html +++ b/macros/generic/markdown/markdown.html @@ -16,6 +16,7 @@ pre > code.sourceCode { white-space: pre; position: relative; } pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } pre > code.sourceCode > span:empty { height: 1.2em; } + .sourceCode { overflow: visible; } code.sourceCode > span { color: inherit; text-decoration: inherit; } div.sourceCode { margin: 1em 0; } pre.sourceCode { margin: 0; } @@ -50,7 +51,7 @@ code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ code span.at { color: #7d9029; } /* Attribute */ code span.bn { color: #40a070; } /* BaseN */ - code span.bu { } /* BuiltIn */ + code span.bu { color: #008000; } /* BuiltIn */ code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ code span.ch { color: #4070a0; } /* Char */ code span.cn { color: #880000; } /* Constant */ @@ -63,7 +64,7 @@ code span.ex { } /* Extension */ code span.fl { color: #40a070; } /* Float */ code span.fu { color: #06287e; } /* Function */ - code span.im { } /* Import */ + code span.im { color: #008000; font-weight: bold; } /* Import */ code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ code span.kw { color: #007020; font-weight: bold; } /* Keyword */ code span.op { color: #666666; } /* Operator */ @@ -75,6 +76,7 @@ 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;} @@ -82,76 +84,156 @@

Markdown Package User Manual

Vít Novotný

-

2.17.0-0-g6428569 2022-09-30

+

2.17.1-0-g8ca83f5 2022-10-03

-

1 Introduction

-

The Markdown package converts markdown 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.

-

This document is a user manual for the Markdown package. It provides tutorials and code examples. For an in-depth description of the package requirements, interfaces, and implementation, please refer to the technical documentation.

-

1.1 Requirements

-

The package requires either our official Docker image, which contains the latest development version of the Markdown package, or a TeX distribution: TeX Live ≥ 2020 is known to work with the current version of the Markdown package and so are recent versions of MikTeX. If you are using an older, incomplete, or atypical TeX distribution, please consult the technical documentation for a detailed list of requirements.

-

1.2 Installation

-

If Markdown is not included in your TeX distribution, you will need to install it.

+

1 Introduction

+

The Markdown package converts markdown 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.

+

This document is a user manual for the Markdown package. It provides +tutorials and code examples. For an in-depth description of the package +requirements, interfaces, and implementation, please refer to the technical +documentation.

+

1.1 Requirements

+

The package requires either our official Docker image, +which contains the latest development version of the Markdown package, +or a TeX distribution: TeX Live ≥ 2020 is known to work with +the current version of the Markdown package and so are recent versions +of MikTeX. If you are using an older, +incomplete, or atypical TeX +distribution, please consult the technical +documentation for a detailed list of requirements.

+

1.2 Installation

+

If Markdown is not included in your TeX distribution, you will need to install +it.

First, download the package from the repository using Git:

-
git clone https://github.com/witiko/markdown
-

Next, enter the directory named markdown and run the make base command using GNU Make:

-
cd markdown
-make base
+
git clone https://github.com/witiko/markdown
+

Next, enter the directory named markdown and run the +make base command using GNU Make:

+
cd markdown
+make base

This should produce the following files:

  • markdown.lua, the Lua module,
  • -
  • libraries/markdown-tinyyaml.lua, an external library for reading yaml,
  • +
  • libraries/markdown-tinyyaml.lua, an external library +for reading 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 ConTeXt module.
  • +
  • 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 ConTeXt module.
-

1.2.1 Local Installation

-

To perform a local installation, place the above files into your TeX directory structure. This is generally where the individual files should be placed:

+

1.2.1 Local Installation

+

To perform a local installation, place the above files into your +TeX directory structure. This is +generally where the individual files should be placed:

  • ⟨TEXMF⟩/tex/luatex/markdown/markdown.lua
  • ⟨TEXMF⟩/tex/luatex/markdown/markdown-tinyyaml.lua
  • @@ -163,484 +245,1038 @@
  • ⟨TEXMF⟩/tex/latex/markdown/markdownthemewitiko_tilde.sty
  • ⟨TEXMF⟩/tex/context/third/markdown/t-markdown.tex
-

where ⟨TEXMF⟩ corresponds to a root of your TeX distribution, such as /usr/share/texmf and ~/texmf on UN*X systems or C:\Users\Your username\texmf on Windows systems. When in doubt, consult the manual of your TeX distribution.

-

1.2.2 Portable Installation

-

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.

-

1.3 First Document

-

In this section, we will take the necessary steps to typeset our first markdown document in TeX. This will serve as our first hands-on experience with the package and also as a reassurance that the package has been correctly installed.

-

If you are using our official Docker image, you need to prefix all commands in this section with docker run --rm -v "$PWD"/workdir:/workdir -w /workdir witiko/markdown. For example, instead of luatex document.tex, you would execute the following command:

-
docker run --rm -v "$PWD"/workdir:/workdir -w /workdir witiko/markdown \
-  luatex document.tex
-

1.3.1 Using Lua

-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\input hello
-\bye
-

1.3.1.1 Using the Lua Module

-

Using a text editor, create a text document named hello.lua with the following content:

-
#!/usr/bin/env texlua
-local ran_ok, kpse = pcall(require, "kpse")
-if ran_ok then kpse.set_program_name("luatex") end
-local markdown = require("markdown")
-local convert = markdown.new()
-print(convert("Hello *world*!"))
-

Next, invoke LuaTeX from the terminal:

-
texlua hello.lua > hello.tex
-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:

-
texlua hello.lua > hello.tex
-pdftex document.tex
-

1.3.1.2 Using the Lua Command-Line Interface

-

Using a text editor, create a text document named hello.md with the following content:

-
Hello *world*!
-

Next, invoke LuaTeX from the terminal:

-
texlua ⟨CLI pathname⟩ -- hello.md hello.tex
-luatex document.tex
-

where ⟨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\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 text “Hello world!” Invoking pdfTeX should have the same effect:

-
texlua ⟨CLI pathname⟩ -- hello.md hello.tex
-pdftex document.tex
-

1.3.2 Using Plain TeX

-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\markdownBegin
-Hello *world*!
-\markdownEnd
-\bye
-

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:

-
pdftex --shell-escape document.tex
-

1.3.3 Using LaTeX

-

Using a text editor, create a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage{markdown}
-\begin{document}
-\begin{markdown}
-Hello *world*!
-\end{markdown}
-\end{document}
-

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:

-
pdflatex --shell-escape document.tex
+

where ⟨TEXMF⟩ corresponds to a root of your TeX distribution, such as +/usr/share/texmf and ~/texmf on UN*X systems +or C:\Users\Your username\texmf on +Windows systems. When in doubt, consult the manual of your TeX distribution.

+

1.2.2 Portable Installation

+

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.

+

1.3 First Document

+

In this section, we will take the necessary steps to typeset our +first markdown document in TeX. This +will serve as our first hands-on experience with the package and also as +a reassurance that the package has been correctly installed.

+

If you are using our official Docker image, +you need to prefix all commands in this section with +docker run --rm -v "$PWD"/workdir:/workdir -w /workdir witiko/markdown. +For example, instead of luatex document.tex, you would +execute the following command:

+
docker run --rm -v "$PWD"/workdir:/workdir -w /workdir witiko/markdown \
+  luatex document.tex
+

1.3.1 Using Lua

+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\input hello
+\bye
+

1.3.1.1 Using the Lua Module

+

Using a text editor, create a text document named +hello.lua with the following content:

+
#!/usr/bin/env texlua
+local ran_ok, kpse = pcall(require, "kpse")
+if ran_ok then kpse.set_program_name("luatex") end
+local markdown = require("markdown")
+local convert = markdown.new()
+print(convert("Hello *world*!"))
+

Next, invoke LuaTeX from the terminal:

+
texlua hello.lua > hello.tex
+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:

+
texlua hello.lua > hello.tex
+pdftex document.tex
+

1.3.1.2 Using the Lua Command-Line +Interface

+

Using a text editor, create a text document named +hello.md with the following content:

+
Hello *world*!
+

Next, invoke LuaTeX from the terminal:

+
texlua ⟨CLI pathname⟩ -- hello.md hello.tex
+luatex document.tex
+

where ⟨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\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 text “Hello world!” Invoking pdfTeX should have the +same effect:

+
texlua ⟨CLI pathname⟩ -- hello.md hello.tex
+pdftex document.tex
+

1.3.2 Using Plain TeX

+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\markdownBegin
+Hello *world*!
+\markdownEnd
+\bye
+

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:

+
pdftex --shell-escape document.tex
+

1.3.3 Using LaTeX

+

Using a text editor, create a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage{markdown}
+\begin{document}
+\begin{markdown}
+Hello *world*!
+\end{markdown}
+\end{document}
+

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:

+
pdflatex --shell-escape document.tex

-

As the next step, try typesetting the example documents distributed along with the Markdown package:

-
git clone https://github.com/witiko/markdown
-cd markdown/examples
-lualatex latex.tex
-

A PDF document named latex.pdf should be produced. Open the text documents latex.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:

-
lualatex latex.tex
+

As the next step, try typesetting the example documents distributed +along with the Markdown package:

+
git clone https://github.com/witiko/markdown
+cd markdown/examples
+lualatex latex.tex
+

A PDF document named latex.pdf should be produced. Open +the text documents latex.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:

+
lualatex latex.tex

to see the effect of your changes.

-

1.3.4 Using ConTeXt

-

Using a text editor, create a text document named document.tex with the following content:

-
\usemodule[t][markdown]
-\starttext
-\startmarkdown
-Hello *world*!
-\stopmarkdown
-\stoptext
-

Next, invoke LuaTeX from the terminal:

-
context document.tex
-

A PDF document named document.pdf should be produced and contain the text “Hello world!” Invoking pdfTeX should have the same effect:

-
texexec --passon=--shell-escape document.tex
+

1.3.4 Using ConTeXt

+

Using a text editor, create a text document named +document.tex with the following content:

+
\usemodule[t][markdown]
+\starttext
+\startmarkdown
+Hello *world*!
+\stopmarkdown
+\stoptext
+

Next, invoke LuaTeX from the terminal:

+
context document.tex
+

A PDF document named document.pdf should be produced and +contain the text “Hello world!” Invoking pdfTeX should have the +same effect:

+
texexec --passon=--shell-escape document.tex

-

As the next step, try typesetting the example documents distributed along with the Markdown package:

-
git clone https://github.com/witiko/markdown
-cd markdown/examples
-context 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:

-
context context.tex
+

As the next step, try typesetting the example documents distributed +along with the Markdown package:

+
git clone https://github.com/witiko/markdown
+cd markdown/examples
+context 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:

+
context context.tex

to see the effect of your changes.

-

2 Examples

-

In this section, I will describe the individual parts of the Markdown package. Each part will be shown by example, leaving the implementation details to the technical documentation.

-

2.1 Interfaces

-

In this section, I will describe the individual interfaces exposed by the Markdown package starting with the low-level Lua interfaces and all the way up to the LaTeX and ConTeXt interfaces intended for the ordinary user.

-

2.1.1 Lua

-

The Lua programming language is what drives the conversion from markdown to TeX in the Markdown package. Based on the Lunamark Lua library by John MacFarlane, the Lua implementation is largely independent on TeX, and can be used separately from typesetting a document. Lua provides two interfaces: a Lua module and a command-line interface (CLI).

-

2.1.1.1 Lua Module

-

A Lua module is a software library that can be used from in other programs. The markdown Lua module makes it possible to convert markdown to TeX from within LuaTeX documents and Lua scripts.

-

The markdown Lua module exposes the new(options) method, which creates a converter function from markdown to TeX. The properties of the converter function are specified by the Lua table options. The parameter is optional; when unspecified, the behaviour will be the same as if ⟨options⟩ were an empty table.

-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\input lmfonts
-\input example
-\bye
-

Using a text editor, create a text document named example.lua with the following content:

-
#!/usr/bin/env texlua
-local ran_ok, kpse = pcall(require, "kpse")
-if ran_ok then kpse.set_program_name("luatex") end
-local markdown = require("markdown")
-local input, convert_safe, convert_unsafe, paragraph
-
-input = [[$\sqrt{-1}$ *equals* $i$.]]
-convert_safe = markdown.new()
-convert_unsafe = markdown.new({hybrid = true})
-paragraph = [[\par]]
-
-print(
-  convert_safe(input) .. paragraph ..
-  convert_unsafe(input)
-)
-

Next, invoke LuaTeX from the terminal:

-
texlua example.lua > example.tex
-luatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+

2 Examples

+

In this section, I will describe the individual parts of the Markdown +package. Each part will be shown by example, leaving the implementation +details to the technical +documentation.

+

2.1 Interfaces

+

In this section, I will describe the individual interfaces exposed by +the Markdown package starting with the low-level Lua interfaces and all +the way up to the LaTeX +and ConTeXt interfaces intended for +the ordinary user.

+

2.1.1 Lua

+

The Lua programming language is what drives the conversion from +markdown to TeX in the Markdown +package. Based on the Lunamark +Lua library by John MacFarlane, the Lua implementation is largely +independent on TeX, and can be used +separately from typesetting a document. Lua provides two interfaces: a +Lua module and a command-line interface (CLI).

+

2.1.1.1 Lua Module

+

A Lua module is a software library that can be used from in other +programs. The markdown Lua module makes it possible to +convert markdown to TeX from within +LuaTeX documents and Lua +scripts.

+

The markdown Lua module exposes the +new(options) method, which creates +a converter function from markdown to TeX. The properties of the converter +function are specified by the Lua table options. The +parameter is optional; when unspecified, the behaviour will be the same +as if ⟨options⟩ were an empty table.

+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\input lmfonts
+\input example
+\bye
+

Using a text editor, create a text document named +example.lua with the following content:

+
#!/usr/bin/env texlua
+local ran_ok, kpse = pcall(require, "kpse")
+if ran_ok then kpse.set_program_name("luatex") end
+local markdown = require("markdown")
+local input, convert_safe, convert_unsafe, paragraph
+
+input = [[$\sqrt{-1}$ *equals* $i$.]]
+convert_safe = markdown.new()
+convert_unsafe = markdown.new({hybrid = true})
+paragraph = [[\par]]
+
+print(
+  convert_safe(input) .. paragraph ..
+  convert_unsafe(input)
+)
+

Next, invoke LuaTeX from the terminal:

+
texlua example.lua > example.tex
+luatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

$\sqrt{-1}$ equals $i$.

√-̅1̅ equals i.

Invoking pdfTeX should have the same effect:

-
texlua example.lua > example.tex
-pdftex document.tex
+
texlua example.lua > example.tex
+pdftex document.tex

-

Rather than use the texlua interpreter, we can also access the markdown Lua module directly from our document. Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\input lmfonts
-\directlua{
-  local markdown = require("markdown")
-  local input, convert_safe, convert_unsafe, paragraph
-
-  input = [[$\string\sqrt{-1}$ *equals* $i$.]]
-  convert_safe = markdown.new()
-  convert_unsafe = markdown.new({hybrid = true})
-  paragraph = [[\par]]
-
-  tex.sprint(
-    convert_safe(input) .. paragraph ..
-    convert_unsafe(input)
-  )
-}
-\bye
-

Next, invoke LuaTeX from the terminal:

-
luatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+

Rather than use the texlua interpreter, we can also +access the markdown Lua module directly from our document. +Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\input lmfonts
+\directlua{
+  local markdown = require("markdown")
+  local input, convert_safe, convert_unsafe, paragraph
+
+  input = [[$\string\sqrt{-1}$ *equals* $i$.]]
+  convert_safe = markdown.new()
+  convert_unsafe = markdown.new({hybrid = true})
+  paragraph = [[\par]]
+
+  tex.sprint(
+    convert_safe(input) .. paragraph ..
+    convert_unsafe(input)
+  )
+}
+\bye
+

Next, invoke LuaTeX from the terminal:

+
luatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

$\sqrt{-1}$ equals $i$.

√-̅1̅ equals i.

-

In this case, we cannot use pdfTeX, because pdfTeX does not define the \directlua TeX command.

-

2.1.1.2 Lua Command-Line Interface

-

The Lua command-line interface (CLI) of the Markdown package makes the functionality of the Lua module accessible from the command line. This makes it possible to convert documents from markdown to TeX manually without any knowledge of the Lua programming language.

-

The Lua command-line interface accepts the same options as the markdown Lua module, but now the options are specified as command-line parameters.

-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\input lmfonts
-\input safe
-
-\begingroup
-\catcode`\%=12
-\input unsafe
-\endgroup
-\bye
-

Using a text editor, create a text document named example.md with the following content:

-
$\sqrt{-1}$ *equals* $i$.
-

Next, invoke LuaTeX from the terminal:

-
texlua ⟨CLI pathname⟩ -- example.md safe.tex
-texlua ⟨CLI pathname⟩ hybrid=true -- example.md unsafe.tex
-luatex document.tex
-

where ⟨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\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:

+

In this case, we cannot use pdfTeX, because pdfTeX does not define +the \directlua TeX +command.

+

2.1.1.2 Lua Command-Line +Interface

+

The Lua command-line interface (CLI) of the Markdown package makes +the functionality of the Lua module accessible from the command line. +This makes it possible to convert documents from markdown to TeX manually without any knowledge of the +Lua programming language.

+

The Lua command-line interface accepts the same options as the +markdown Lua module, but now the options are specified as +command-line parameters.

+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\input lmfonts
+\input safe
+
+\begingroup
+\catcode`\%=12
+\input unsafe
+\endgroup
+\bye
+

Using a text editor, create a text document named +example.md with the following content:

+
$\sqrt{-1}$ *equals* $i$.
+

Next, invoke LuaTeX from the terminal:

+
texlua ⟨CLI pathname⟩ -- example.md safe.tex
+texlua ⟨CLI pathname⟩ hybrid=true -- example.md unsafe.tex
+luatex document.tex
+

where ⟨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\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:

$\sqrt{-1}$ equals $i$.

√-̅1̅ equals i.

Invoking pdfTeX should have the same effect:

-
texlua ⟨CLI pathname⟩ -- example.md safe.tex
-texlua ⟨CLI pathname⟩ hybrid=true -- example.md unsafe.tex
-pdftex document.tex
-

2.1.2 Plain TeX

-

The plain TeX interface provides TeX commands that typeset markdown documents by using the Lua interface behind the scenes. Unlike the Lua interface, the plain TeX interface does not provide low-level tools for converting markdown to TeX. Instead, its goal is to provide high-level typesetting capabilities.

-

The plain TeX interface accepts the same options as the markdown Lua module, in addition to its own options, but now the options are specified as TeX commands.

-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\input lmfonts
-
-\markdownBegin
-$\sqrt{-1}$ *equals* $i$.
-\markdownEnd
-
-\def\markdownOptionHybrid{true}
-\markdownBegin
-$\sqrt{-1}$ *equals* $i$.
-\markdownEnd
-
-\bye
-

Next, invoke LuaTeX from the terminal:

-
luatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
texlua ⟨CLI pathname⟩ -- example.md safe.tex
+texlua ⟨CLI pathname⟩ hybrid=true -- example.md unsafe.tex
+pdftex document.tex
+

2.1.2 Plain TeX

+

The plain TeX interface provides +TeX commands that typeset markdown +documents by using the Lua interface behind the scenes. Unlike the Lua +interface, the plain TeX interface does not provide low-level tools for +converting markdown to TeX. Instead, +its goal is to provide high-level typesetting capabilities.

+

The plain TeX interface accepts +the same options as the markdown Lua module, in addition to +its own options, but now the options are specified as TeX commands.

+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\input lmfonts
+
+\markdownBegin
+$\sqrt{-1}$ *equals* $i$.
+\markdownEnd
+
+\def\markdownOptionHybrid{true}
+\markdownBegin
+$\sqrt{-1}$ *equals* $i$.
+\markdownEnd
+
+\bye
+

Next, invoke LuaTeX from the terminal:

+
luatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

$\sqrt{-1}$ equals $i$.

√-̅1̅ equals i.

Invoking pdfTeX should have the same effect:

-
pdftex --shell-escape document.tex
-

2.1.3 LaTeX

-

The LaTeX interface provides the same level of functionality as the plain TeX interface by using the plain TeX interface behind the scenes. Unlike the plain TeX interface, the LaTeX interface uses familiar LaTeX idioms, such as package options and environments.

-

The LaTeX interface accepts the same options as the plain TeX interface, but now the options are specified as ⟨key = value⟩ pairs and they are passed either as package options, in the \markdownSetup command, or as parameters for the markdown* LaTeX environment.

-

Using a text editor, create a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage{markdown}
-\begin{document}
-
-\begin{markdown}
-$\sqrt{-1}$ *equals* $i$
-\end{markdown}
-
-\begin{markdown*}{hybrid}
-$\sqrt{-1}$ *equals* $i$
-\end{markdown*}
-
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
pdftex --shell-escape document.tex
+

2.1.3 LaTeX

+

The LaTeX interface +provides the same level of functionality as the plain TeX interface by using the plain TeX interface behind the scenes. Unlike +the plain TeX interface, the LaTeX interface uses familiar +LaTeX idioms, such as +package options and environments.

+

The LaTeX interface +accepts the same options as the plain TeX interface, but now the options are +specified as ⟨key = value⟩ pairs and they are passed +either as package options, in the \markdownSetup command, +or as parameters for the markdown* LaTeX environment.

+

Using a text editor, create a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage{markdown}
+\begin{document}
+
+\begin{markdown}
+$\sqrt{-1}$ *equals* $i$
+\end{markdown}
+
+\begin{markdown*}{hybrid}
+$\sqrt{-1}$ *equals* $i$
+\end{markdown*}
+
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

$\sqrt{-1}$ equals $i$.

√-̅1̅ equals i.

Invoking pdfTeX should have the same effect:

-
pdflatex --shell-escape document.tex
-

2.1.4 ConTeXt

-

The ConTeXt interface provides the same level of functionality as the plain TeX interface by using the plain TeX interface behind the scenes. Unlike the plain TeX interface, the ConTeXt interface uses familiar ConTeXt idioms as syntactic sugar.

-

The ConTeXt interface accepts the same options as the plain TeX interface.

-

Using a text editor, create a text document named document.tex with the following content:

-
\usemodule[t][markdown]
-\starttext
-
-\startmarkdown
-$\sqrt{-1}$ *equals* $i$.
-\stopmarkdown
-
-\setupmarkdown[hybrid = yes]
-\startmarkdown
-$\sqrt{-1}$ *equals* $i$.
-\stopmarkdown
-
-\stoptext
-

Next, invoke LuaTeX from the terminal:

-
context document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
pdflatex --shell-escape document.tex
+

2.1.4 ConTeXt

+

The ConTeXt interface provides +the same level of functionality as the plain TeX interface by using the plain TeX interface behind the scenes. Unlike +the plain TeX interface, the +ConTeXt interface uses familiar +ConTeXt idioms as syntactic +sugar.

+

The ConTeXt interface accepts the +same options as the plain TeX +interface.

+

Using a text editor, create a text document named +document.tex with the following content:

+
\usemodule[t][markdown]
+\starttext
+
+\startmarkdown
+$\sqrt{-1}$ *equals* $i$.
+\stopmarkdown
+
+\setupmarkdown[hybrid = yes]
+\startmarkdown
+$\sqrt{-1}$ *equals* $i$.
+\stopmarkdown
+
+\stoptext
+

Next, invoke LuaTeX from the terminal:

+
context document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

$\sqrt{-1}$ equals $i$.

√-̅1̅ equals i.

Invoking pdfTeX should have the same effect:

-
texexec --passon=--shell-escape document.tex
-

2.2 Options

-

In this section, I will describe all the options recognized by the Markdown package.

-

2.2.1 Lua

-

Lua options control the conversion from markdown to TeX. They are supported by all interfaces of the Markdown package starting with the low-level Lua interfaces and all the way up to the LaTeX and ConTeXt interfaces.

-

2.2.1.1 Option cacheDir

+
texexec --passon=--shell-escape document.tex
+

2.2 Options

+

In this section, I will describe all the options recognized by the +Markdown package.

+

2.2.1 Lua

+

Lua options control the conversion from markdown to TeX. They are supported by all interfaces +of the Markdown package starting with the low-level Lua interfaces and +all the way up to the LaTeX and ConTeXt interfaces.

+

2.2.1.1 Option +cacheDir

cacheDir (default value: ".")
-

A path to the directory containing auxiliary cache files. If the last segment of the path does not exist, it will be created by the Lua command-line and plain TeX implementations. The Lua implementation expects that the entire path already exists.

-

When iteratively writing and typesetting a markdown document, the cache files are going to accumulate over time. You are advised to clean the cache directory every now and then, or to set it to a temporary filesystem (such as /tmp on UN*X systems), which gets periodically emptied.

+
+

A path to the directory containing auxiliary cache files. If the last +segment of the path does not exist, it will be created by the Lua +command-line and plain TeX +implementations. The Lua implementation expects that the entire path +already exists.

+

When iteratively writing and typesetting a markdown document, the +cache files are going to accumulate over time. You are advised to clean +the cache directory every now and then, or to set it to a temporary +filesystem (such as /tmp on UN*X systems), which gets +periodically emptied.

-
Lua Module Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\directlua{
-  local markdown = require("markdown")
-  local convert = markdown.new({cacheDir = "cache"})
-  local input = "Hello *world*!"
-  tex.sprint(convert(input)) }
-\bye
-

Create an empty directory named cache next to our text document. Then, invoke LuaTeX from the terminal:

-
luatex document.tex
-

A PDF document named document.pdf should be produced and contain the text “Hello world!” Several cache files of the Markdown package will also be produced in the cache directory as we requested using the cacheDir option.

-
Lua CLI Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\input hello
-\bye
-

Using a text editor, create a text document named hello.md with the following content:

-
Hello *world*!
-

Next, invoke LuaTeX from the terminal:

-
texlua ⟨CLI pathname⟩ cacheDir=cache -- hello.md hello.tex
-luatex document.tex
-

where ⟨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\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 text “Hello world!” A directory named cache containing several cache files of the Markdown package will also be produced as we requested using the cacheDir option.

-
Plain TeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\def\markdownOptionCacheDir{cache}
-\markdownBegin
-Hello *world*!
-\markdownEnd
-\bye
-

Next, invoke LuaTeX from the terminal:

-
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 Markdown package will also be produced as we requested using the cacheDir option.

-
LaTeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage[cacheDir=cache]{markdown}
-\begin{document}
-\begin{markdown}
-Hello *world*!
-\end{markdown}
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex 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 Markdown package will also be produced as we requested using the cacheDir option.

-
ConTeXt Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\usemodule[t][markdown]
-\setupmarkdown[cacheDir = cache]
-\starttext
-\startmarkdown
-Hello *world*!
-\stopmarkdown
-\stoptext
-

Next, invoke LuaTeX from the terminal:

-
context 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 Markdown package will also be produced as we requested using the cacheDir option.

-

2.2.1.2 Option frozenCacheFileName

+
Lua Module Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\directlua{
+  local markdown = require("markdown")
+  local convert = markdown.new({cacheDir = "cache"})
+  local input = "Hello *world*!"
+  tex.sprint(convert(input)) }
+\bye
+

Create an empty directory named cache next to our text +document. Then, invoke LuaTeX from the terminal:

+
luatex document.tex
+

A PDF document named document.pdf should be produced and +contain the text “Hello world!” Several cache files of the +Markdown package will also be produced in the cache +directory as we requested using the cacheDir option.

+
Lua CLI Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\input hello
+\bye
+

Using a text editor, create a text document named +hello.md with the following content:

+
Hello *world*!
+

Next, invoke LuaTeX from the terminal:

+
texlua ⟨CLI pathname⟩ cacheDir=cache -- hello.md hello.tex
+luatex document.tex
+

where ⟨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\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 text “Hello world!” A directory named +cache containing several cache files of the Markdown +package will also be produced as we requested using the +cacheDir option.

+
Plain TeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\def\markdownOptionCacheDir{cache}
+\markdownBegin
+Hello *world*!
+\markdownEnd
+\bye
+

Next, invoke LuaTeX from the terminal:

+
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 Markdown +package will also be produced as we requested using the +cacheDir option.

+
LaTeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage[cacheDir=cache]{markdown}
+\begin{document}
+\begin{markdown}
+Hello *world*!
+\end{markdown}
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex 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 Markdown +package will also be produced as we requested using the +cacheDir option.

+
ConTeXt Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\usemodule[t][markdown]
+\setupmarkdown[cacheDir = cache]
+\starttext
+\startmarkdown
+Hello *world*!
+\stopmarkdown
+\stoptext
+

Next, invoke LuaTeX from the terminal:

+
context 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 Markdown +package will also be produced as we requested using the +cacheDir option.

+

2.2.1.2 Option +contentBlocksLanguageMap

-
frozenCacheFileName (default value: "frozenCache.tex")
-

A path to an output file (frozen cache) that will be created when the finalizeCache option is enabled and will contain a mapping between an enumeration of markdown documents and their auxiliary cache files.

-

The frozen cache makes it possible to later typeset a plain TeX document that contains markdown documents without invoking Lua using the \markdownOptionFrozenCache plain TeX option. As a result, the plain TeX document becomes more portable, but further changes in the order and the content of markdown documents will not be reflected.

+
contentBlocksLanguageMap (default value: +"markdown-languages.json")
+
+

The filename of the JSON file that maps filename +extensions to programming language names in the iA Writer content blocks +when the contentBlocks option is +enabled.

-
Lua Module Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\directlua{
-  local markdown = require("markdown")
-  local convert = markdown.new({finalizeCache = true, frozenCacheFileName = "cache.tex"})
-  local input = "Hello *world*!"
-  tex.sprint(convert(input)) }
-\bye
+
LaTeX Example
+

Using a text editor, create a text document named +table.csv with the following content:

+
Name,Surname,Born
+Albert,Einstein,1879
+Marie,Curie,1867
+Thomas,Edison,1847
+

Create also a text document named language-map.json with +the following content:

+
{
+  "tex": "LaTeX"
+}
+

Create also a text document named code.tex with the +following content:

+
This is an example code listing in \LaTeX.
+

Create also a text document named part.md with the +following content:

+
This is a *transcluded markdown document*.
+

Create also a text document named document.tex with the +following content:

+
\documentclass{article}
+\usepackage{minted}
+\usepackage[contentBlocks]{markdown}
+\markdownSetup{
+  contentBlocksLanguageMap = {language-map.json},
+}
+\begin{document}
+\begin{markdown}
+/table.csv  (An example table)
+/code.tex   (An example code listing)
+/part.md    (A file transclusion example)
+\end{markdown}
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex --shell-escape document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
NameSurnameBorn
AlbertEinstein1879
MarieCurie1867
ThomasEdison1847
+

Table 1: An example table

+
This is an example code listing in \LaTeX.
+

This is a transcluded markdown document.

+
+
ConTeXt Example
+

Using a text editor, create a text document named +table.csv with the following content:

+
Name,Surname,Born
+Albert,Einstein,1879
+Marie,Curie,1867
+Thomas,Edison,1847
+

Create also a text document named language-map.json with +the following content:

+
{
+  "tex": "ConTeXt"
+}
+

Create also a text document named code.tex with the +following content:

+
This is an example code listing in \ConTeXt.
+

Create also a text document named part.md with the +following content:

+
This is a *transcluded markdown document*.
+

Create also a text document named document.tex with the +following content:

+
\usemodule[t][markdown]
+\setupmarkdown
+  [
+    contentBlocks = yes,
+    contentBlocksLanguageMap = language-map.json,
+  ]
+\definetyping [ConTeXt]
+\setuptyping  [ConTeXt] [option=TEX]
+\starttext
+\startmarkdown
+/table.csv  (An example table)
+/code.tex   (An example code listing)
+/part.md    (A file transclusion example)
+\stopmarkdown
+\stoptext
+

Next, invoke LuaTeX from the terminal:

+
context document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
NameSurnameBorn
AlbertEinstein1879
MarieCurie1867
ThomasEdison1847
+

Table 1: An example table

+
This is an example code listing in \ConTeXt.
+

This is a transcluded markdown document.

+
+

2.2.1.3 Option +debugExtensionsFileName

+
+
debugExtensionsFileName (default value: +"debug-extensions.json")
+
+

The filename of the JSON file that will be produced when +the debugExtensions option is enabled. +This file will contain the extensible subset of the peg +grammar of markdown after built-in syntax extensions (see options +citations, +contentBlocks, +definitionLists, etc.) and user-defined +syntax extensions (see option extensions) +have been applied.

+
+
+

2.2.1.4 Option +frozenCacheFileName

+
+
frozenCacheFileName (default value: +"frozenCache.tex")
+
+

A path to an output file (frozen cache) that will be created when the +finalizeCache option is enabled and will +contain a mapping between an enumeration of markdown documents and their +auxiliary cache files.

+

The frozen cache makes it possible to later typeset a plain TeX document that contains markdown +documents without invoking Lua using the +\markdownOptionFrozenCache plain TeX option. As a result, the plain TeX document becomes more portable, but +further changes in the order and the content of markdown documents will +not be reflected.

+
+
+
Lua Module Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\directlua{
+  local markdown = require("markdown")
+  local convert = markdown.new({finalizeCache = true, frozenCacheFileName = "cache.tex"})
+  local input = "Hello *world*!"
+  tex.sprint(convert(input)) }
+\bye

Then, invoke LuaTeX from the terminal:

-
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 output file as we requested using the finalizeCache and frozenCacheFileName options.

-
Lua CLI Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\input hello
-\bye
-

Using a text editor, create a text document named hello.md with the following content:

-
Hello *world*!
-

Next, invoke LuaTeX from the terminal:

-
texlua ⟨CLI pathname⟩ finalizeCache=true frozenCacheFileName=cache.tex -- hello.md hello.tex
-luatex document.tex
-

where ⟨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\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 text “Hello world!” A frozen cache will also be produced in the cache.tex output file as we requested using the finalizeCache and frozenCacheFileName options.

-
Plain TeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\def\markdownOptionFinalizeCache{true}
-\def\markdownOptionFrozenCacheFileName{cache.tex}
-\markdownBegin
-Hello *world*!
-\markdownEnd
-\bye
-

Next, invoke LuaTeX from the terminal:

-
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 output file as we requested using the finalizeCache and frozenCacheFileName options.

-

Next, create a new text document frozen-document.tex with the following content:

-
\input markdown
-\def\markdownOptionFrozenCache{true}
-\def\markdownOptionFrozenCacheFileName{cache.tex}
-\markdownBegin
-Hi *world*!
-\markdownEnd
-\bye
+
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 output file as we requested using +the finalizeCache and frozenCacheFileName +options.

+
Lua CLI Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\input hello
+\bye
+

Using a text editor, create a text document named +hello.md with the following content:

+
Hello *world*!
+

Next, invoke LuaTeX from the terminal:

+
texlua ⟨CLI pathname⟩ finalizeCache=true frozenCacheFileName=cache.tex -- hello.md hello.tex
+luatex document.tex
+

where ⟨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\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 text “Hello world!” A frozen cache will also be +produced in the cache.tex output file as we requested using +the finalizeCache and frozenCacheFileName +options.

+
Plain TeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\def\markdownOptionFinalizeCache{true}
+\def\markdownOptionFrozenCacheFileName{cache.tex}
+\markdownBegin
+Hello *world*!
+\markdownEnd
+\bye
+

Next, invoke LuaTeX from the terminal:

+
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 output file as we requested using +the finalizeCache and frozenCacheFileName +options.

+

Next, create a new text document frozen-document.tex +with the following content:

+
\input markdown
+\def\markdownOptionFrozenCache{true}
+\def\markdownOptionFrozenCacheFileName{cache.tex}
+\markdownBegin
+Hi *world*!
+\markdownEnd
+\bye

Last, invoke pdfTeX without shell access from the terminal:

-
pdftex -no-shell-escape 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 the \markdownOptionFrozenCache option, we were able to typeset the document without accessing the shell or invoking Lua, but the change in the content of the markdown document from “Hello world!” to “Hi world!” was not reflected.

-
LaTeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\documentclass[finalizecache]{article}
-\usepackage[frozenCacheFileName=cache.tex]{markdown}
-\begin{document}
-\begin{markdown}
-Hello *world*!
-\end{markdown}
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex 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 output file as we requested using the finalizecache and frozenCacheFileName options.

-

Next, create a new text document frozen-document.tex with the following content:

-
\documentclass[frozencache]{article}
-\usepackage[frozenCacheFileName=cache.tex]{markdown}
-\begin{document}
-\begin{markdown}
-Hi *world*!
-\end{markdown}
-\end{document}
+
pdftex -no-shell-escape 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 the +\markdownOptionFrozenCache option, we were able to typeset +the document without accessing the shell or invoking Lua, but the change +in the content of the markdown document from “Hello world!” to +“Hi world!” was not reflected.

+
LaTeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\documentclass[finalizecache]{article}
+\usepackage[frozenCacheFileName=cache.tex]{markdown}
+\begin{document}
+\begin{markdown}
+Hello *world*!
+\end{markdown}
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex 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 output file as we requested using +the finalizecache and frozenCacheFileName +options.

+

Next, create a new text document frozen-document.tex +with the following content:

+
\documentclass[frozencache]{article}
+\usepackage[frozenCacheFileName=cache.tex]{markdown}
+\begin{document}
+\begin{markdown}
+Hi *world*!
+\end{markdown}
+\end{document}

Last, invoke pdfTeX without shell access from the terminal:

-
pdflatex -no-shell-escape 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 the frozencache option, we were able to typeset the document without accessing the shell or invoking Lua, but the change in the content of the markdown document from “Hello world!” to “Hi world!” was not reflected.

-
ConTeXt Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\usemodule[t][markdown]
-\setupmarkdown
-  [
-    finalizeCache = yes,
-    frozenCacheFileName = cache.tex,
-  ]
-\starttext
-\startmarkdown
-Hello *world*!
-\stopmarkdown
-\stoptext
-

Next, invoke LuaTeX from the terminal:

-
context 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 output file as we requested using the finalizeCache and frozenCacheFileName options.

-

Next, create a new text document frozen-document.tex with the following content:

-
\usemodule[t][markdown]
-\setupmarkdown
-  [
-    frozenCache = yes,
-    frozenCacheFileName = cache.tex,
-  ]
-\starttext
-\startmarkdown
-Hi *world*!
-\stopmarkdown
-\stoptext
+
pdflatex -no-shell-escape 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 the frozencache option, +we were able to typeset the document without accessing the shell or +invoking Lua, but the change in the content of the markdown document +from “Hello world!” to “Hi world!” was not +reflected.

+
ConTeXt Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\usemodule[t][markdown]
+\setupmarkdown
+  [
+    finalizeCache = yes,
+    frozenCacheFileName = cache.tex,
+  ]
+\starttext
+\startmarkdown
+Hello *world*!
+\stopmarkdown
+\stoptext
+

Next, invoke LuaTeX from the terminal:

+
context 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 output file as we requested using +the finalizeCache and frozenCacheFileName +options.

+

Next, create a new text document frozen-document.tex +with the following content:

+
\usemodule[t][markdown]
+\setupmarkdown
+  [
+    frozenCache = yes,
+    frozenCacheFileName = cache.tex,
+  ]
+\starttext
+\startmarkdown
+Hi *world*!
+\stopmarkdown
+\stoptext

Last, invoke pdfTeX without shell access from the terminal:

-
texexec --passon=--no-shell-escape 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 the \markdownOptionFrozenCache option, we were able to typeset the document without accessing the shell or invoking Lua, but the change in the content of the markdown document from “Hello world!” to “Hi world!” was not reflected.

-

2.2.1.3 Option blankBeforeBlockquote

+
texexec --passon=--no-shell-escape 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 the +\markdownOptionFrozenCache option, we were able to typeset +the document without accessing the shell or invoking Lua, but the change +in the content of the markdown document from “Hello world!” to +“Hi world!” was not reflected.

+

2.2.1.5 Option +blankBeforeBlockquote

+
+
blankBeforeBlockquote (default value: +false)
+
-
blankBeforeBlockquote (default value: false)
-
true
-

Require a blank line between a paragraph and the following blockquote.

+
+

Require a blank line between a paragraph and the following +blockquote.

false
-

Do not require a blank line between a paragraph and the following blockquote.

+
+

Do not require a blank line between a paragraph and the following +blockquote.

-
Lua Module Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\input lmfonts
-\directlua{
-  local markdown = require("markdown")
-  local newline = [[^^J^^J]]
-  local convert, input
-
-  convert = markdown.new()
-  input = "A paragraph." .. newline ..
-          "> A quote."   .. newline
-  tex.sprint(convert(input))
-
-  convert = markdown.new({blankBeforeBlockquote = true})
-  input = "A paragraph."   .. newline ..
-          "> Not a quote." .. newline
-  tex.sprint(convert(input)) }
-\bye
+
Lua Module Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\input lmfonts
+\directlua{
+  local markdown = require("markdown")
+  local newline = [[^^J^^J]]
+  local convert, input
+
+  convert = markdown.new()
+  input = "A paragraph." .. newline ..
+          "> A quote."   .. newline
+  tex.sprint(convert(input))
+
+  convert = markdown.new({blankBeforeBlockquote = true})
+  input = "A paragraph."   .. newline ..
+          "> Not a quote." .. newline
+  tex.sprint(convert(input)) }
+\bye

Then, invoke LuaTeX from the terminal:

-
luatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
luatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

A paragraph.

@@ -648,22 +1284,36 @@

A paragraph > Not a quote.

-
Lua CLI Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\input lmfonts
-\input optionfalse
-\input optiontrue
-\bye
-

Using a text editor, create a text document named content.md with the following content:

-
A paragraph.
-> A quote?
-

Next, invoke LuaTeX from the terminal:

-
texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ blankBeforeBlockquote=true -- content.md optiontrue.tex
-luatex document.tex
-

where ⟨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\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:

+
Lua CLI Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\input lmfonts
+\input optionfalse
+\input optiontrue
+\bye
+

Using a text editor, create a text document named +content.md with the following content:

+
A paragraph.
+> A quote?
+

Next, invoke LuaTeX from the terminal:

+
texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
+texlua ⟨CLI pathname⟩ blankBeforeBlockquote=true -- content.md optiontrue.tex
+luatex document.tex
+

where ⟨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\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.

@@ -671,25 +1321,30 @@

A paragraph. > A quote?

-
Plain TeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-
-\markdownBegin
-A paragraph.
-> A quote.
-\markdownEnd
-
-\def\markdownOptionBlankBeforeBlockquote{true}
-\markdownBegin
-A paragraph.
-> Not a quote.
-\markdownEnd
-
-\bye
-

Next, invoke LuaTeX from the terminal:

-
luatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
Plain TeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+
+\markdownBegin
+A paragraph.
+> A quote.
+\markdownEnd
+
+\def\markdownOptionBlankBeforeBlockquote{true}
+\markdownBegin
+A paragraph.
+> Not a quote.
+\markdownEnd
+
+\bye
+

Next, invoke LuaTeX from the terminal:

+
luatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

A paragraph.

@@ -697,26 +1352,31 @@

A paragraph > Not a quote.

-
LaTeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage{markdown}
-\begin{document}
-
-\begin{markdown}
-A paragraph.
-> A quote.
-\end{markdown}
-
-\begin{markdown*}{blankBeforeBlockquote}
-A paragraph.
-> Not a quote.
-\end{markdown*}
-
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
LaTeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage{markdown}
+\begin{document}
+
+\begin{markdown}
+A paragraph.
+> A quote.
+\end{markdown}
+
+\begin{markdown*}{blankBeforeBlockquote}
+A paragraph.
+> Not a quote.
+\end{markdown*}
+
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

A paragraph.

@@ -724,26 +1384,31 @@

A paragraph > Not a quote.

-
ConTeXt Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\usemodule[t][markdown]
-\starttext
-
-\startmarkdown
-A paragraph.
-> A quote.
-\stopmarkdown
-
-\setupmarkdown[blankBeforeBlockquote = yes]
-\startmarkdown
-A paragraph.
-> Not a quote.
-\stopmarkdown
-
-\stoptext
-

Next, invoke LuaTeX from the terminal:

-
context document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
ConTeXt Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\usemodule[t][markdown]
+\starttext
+
+\startmarkdown
+A paragraph.
+> A quote.
+\stopmarkdown
+
+\setupmarkdown[blankBeforeBlockquote = yes]
+\startmarkdown
+A paragraph.
+> Not a quote.
+\stopmarkdown
+
+\stoptext
+

Next, invoke LuaTeX from the terminal:

+
context document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

A paragraph.

@@ -751,343 +1416,435 @@

A paragraph > Not a quote.

-

2.2.1.4 Option blankBeforeCodeFence

+

2.2.1.6 Option +blankBeforeCodeFence

+
+
blankBeforeCodeFence (default value: +false)
+
-
blankBeforeCodeFence (default value: false)
-
true
-

Require a blank line between a paragraph and the following fenced code block.

+
+

Require a blank line between a paragraph and the following fenced +code block.

false
-

Do not require a blank line between a paragraph and the following fenced code block.

+
+

Do not require a blank line between a paragraph and the following +fenced code block.

-
Lua Module Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\input lmfonts
-\directlua{
-  local markdown = require("markdown")
-  local newline = [[^^J^^J]]
-  local convert, input
-
-  convert = markdown.new({fencedCode = true})
-  input = "A paragraph."   .. newline ..
-          "```"            .. newline ..
-          "A code fence."  .. newline ..
-          "```"            .. newline
-  tex.sprint(convert(input))
-
-  convert = markdown.new({
-    fencedCode = true, blankBeforeCodeFence = true})
-  input = "A paragraph."       .. newline ..
-          "```"                .. newline ..
-          "Not a code fence."  .. newline ..
-          "```"                .. newline
-  tex.sprint(convert(input)) }
-\bye
+
Lua Module Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\input lmfonts
+\directlua{
+  local markdown = require("markdown")
+  local newline = [[^^J^^J]]
+  local convert, input
+
+  convert = markdown.new({fencedCode = true})
+  input = "A paragraph."   .. newline ..
+          "```"            .. newline ..
+          "A code fence."  .. newline ..
+          "```"            .. newline
+  tex.sprint(convert(input))
+
+  convert = markdown.new({
+    fencedCode = true, blankBeforeCodeFence = true})
+  input = "A paragraph."       .. newline ..
+          "```"                .. newline ..
+          "Not a code fence."  .. newline ..
+          "```"                .. newline
+  tex.sprint(convert(input)) }
+\bye

Then, invoke LuaTeX from the terminal:

-
luatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
luatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

A paragraph.

A code fence.

A paragraph. Not a code fence.

-
Lua CLI Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\input lmfonts
-\input optionfalse
-\input optiontrue
-\bye
-

Using a text editor, create a text document named content.md with the following content:

-
A paragraph.
-```
-A code fence?
-```
-

Next, invoke LuaTeX from the terminal:

-
texlua ⟨CLI pathname⟩ fencedCode=true -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ fencedCode=true blankBeforeCodeFence=true  -- content.md optiontrue.tex
-luatex document.tex
-

where ⟨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\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:

+
Lua CLI Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\input lmfonts
+\input optionfalse
+\input optiontrue
+\bye
+

Using a text editor, create a text document named +content.md with the following content:

+
A paragraph.
+```
+A code fence?
+```
+

Next, invoke LuaTeX from the terminal:

+
texlua ⟨CLI pathname⟩ fencedCode=true -- content.md optionfalse.tex
+texlua ⟨CLI pathname⟩ fencedCode=true blankBeforeCodeFence=true  -- content.md optiontrue.tex
+luatex document.tex
+

where ⟨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\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 code fence?

A paragraph. A code fence?

-
Plain TeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\def\markdownOptionFencedCode{true}
-
-\markdownBegin
-A paragraph.
-```
-A code fence.
-```
-\markdownEnd
-
-\def\markdownOptionBlankBeforeCodeFence{true}
-\markdownBegin
-A paragraph.
-```
-Not a code fence.
-```
-\markdownEnd
-
-\bye
-

Next, invoke LuaTeX from the terminal:

-
luatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
Plain TeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\def\markdownOptionFencedCode{true}
+
+\markdownBegin
+A paragraph.
+```
+A code fence.
+```
+\markdownEnd
+
+\def\markdownOptionBlankBeforeCodeFence{true}
+\markdownBegin
+A paragraph.
+```
+Not a code fence.
+```
+\markdownEnd
+
+\bye
+

Next, invoke LuaTeX from the terminal:

+
luatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

A paragraph.

A code fence.

A paragraph. Not a code fence.

-
LaTeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage[fencedCode]{markdown}
-\begin{document}
-
-\begin{markdown}
-A paragraph.
-```
-A code fence.
-```
-\end{markdown}
-
-\begin{markdown*}{blankBeforeCodeFence}
-A paragraph.
-```
-Not a code fence.
-```
-\end{markdown*}
-
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
LaTeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage[fencedCode]{markdown}
+\begin{document}
+
+\begin{markdown}
+A paragraph.
+```
+A code fence.
+```
+\end{markdown}
+
+\begin{markdown*}{blankBeforeCodeFence}
+A paragraph.
+```
+Not a code fence.
+```
+\end{markdown*}
+
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

A paragraph.

A code fence.

A paragraph. Not a code fence.

-
ConTeXt Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\usemodule[t][markdown]
-\setupmarkdown[fencedCode = yes]
-\starttext
-
-\startmarkdown
-A paragraph.
-```
-A code fence.
-```
-\stopmarkdown
-
-\setupmarkdown[blankBeforeCodeFence = yes]
-\startmarkdown
-A paragraph.
-```
-Not a code fence.
-```
-\stopmarkdown
-
-\stoptext
-

Next, invoke LuaTeX from the terminal:

-
context document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
ConTeXt Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\usemodule[t][markdown]
+\setupmarkdown[fencedCode = yes]
+\starttext
+
+\startmarkdown
+A paragraph.
+```
+A code fence.
+```
+\stopmarkdown
+
+\setupmarkdown[blankBeforeCodeFence = yes]
+\startmarkdown
+A paragraph.
+```
+Not a code fence.
+```
+\stopmarkdown
+
+\stoptext
+

Next, invoke LuaTeX from the terminal:

+
context document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

A paragraph.

A code fence.

A paragraph. Not a code fence.

-

2.2.1.5 Option blankBeforeHeading

+

2.2.1.7 Option +blankBeforeHeading

+
+
blankBeforeHeading (default value: +false)
+
-
blankBeforeHeading (default value: false)
-
true
-

Require a blank line between a paragraph and the following header.

+
+

Require a blank line between a paragraph and the following +header.

false
-

Do not require a blank line between a paragraph and the following header.

+
+

Do not require a blank line between a paragraph and the following +header.

-
Lua Module Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\input lmfonts
-\def\markdownRendererHeadingOne#1{{\bf #1}\par}
-\directlua{
-  local markdown = require("markdown")
-  local newline = [[^^J^^J]]
-  local convert, input
-
-  convert = markdown.new()
-  input = "A paragraph." .. newline ..
-          "A heading."   .. newline ..
-          "=========="   .. newline
-  tex.sprint(convert(input))
-
-  convert = markdown.new({blankBeforeHeading = true})
-  input = "A paragraph."    .. newline ..
-          "Not a heading."  .. newline ..
-          "=============="  .. newline
-  tex.sprint(convert(input)) }
-\bye
+
Lua Module Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\input lmfonts
+\def\markdownRendererHeadingOne#1{{\bf #1}\par}
+\directlua{
+  local markdown = require("markdown")
+  local newline = [[^^J^^J]]
+  local convert, input
+
+  convert = markdown.new()
+  input = "A paragraph." .. newline ..
+          "A heading."   .. newline ..
+          "=========="   .. newline
+  tex.sprint(convert(input))
+
+  convert = markdown.new({blankBeforeHeading = true})
+  input = "A paragraph."    .. newline ..
+          "Not a heading."  .. newline ..
+          "=============="  .. newline
+  tex.sprint(convert(input)) }
+\bye

Then, invoke LuaTeX from the terminal:

-
luatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
luatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

A paragraph.

A heading.

A paragraph. Not a heading. ==============

-
Lua CLI Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\input lmfonts
-\input optionfalse
-\input optiontrue
-\bye
-

Using a text editor, create a text document named content.md with the following content:

-
A paragraph.
-A heading?
-==========
-

Next, invoke LuaTeX from the terminal:

-
texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ blankBeforeHeading=true  -- content.md optiontrue.tex
-luatex document.tex
-

where ⟨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\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:

+
Lua CLI Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\input lmfonts
+\input optionfalse
+\input optiontrue
+\bye
+

Using a text editor, create a text document named +content.md with the following content:

+
A paragraph.
+A heading?
+==========
+

Next, invoke LuaTeX from the terminal:

+
texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
+texlua ⟨CLI pathname⟩ blankBeforeHeading=true  -- content.md optiontrue.tex
+luatex document.tex
+

where ⟨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\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 heading?

A paragraph. A heading? ==========

-
Plain TeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-
-\markdownBegin
-A paragraph.
-A heading.
-==========
-\markdownEnd
-
-\def\markdownOptionBlankBeforeHeading{true}
-\markdownBegin
-A paragraph.
-Not a heading.
-==============
-\markdownEnd
-
-\bye
-

Next, invoke LuaTeX from the terminal:

-
luatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
Plain TeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+
+\markdownBegin
+A paragraph.
+A heading.
+==========
+\markdownEnd
+
+\def\markdownOptionBlankBeforeHeading{true}
+\markdownBegin
+A paragraph.
+Not a heading.
+==============
+\markdownEnd
+
+\bye
+

Next, invoke LuaTeX from the terminal:

+
luatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

A paragraph.

A heading.

A paragraph. Not a heading. ==============

-
LaTeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage{markdown}
-\begin{document}
-
-\begin{markdown}
-A paragraph.
-A heading.
-==========
-\end{markdown}
-
-\begin{markdown*}{blankBeforeHeading}
-A paragraph.
-Not a heading.
-==============
-\end{markdown*}
-
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
LaTeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage{markdown}
+\begin{document}
+
+\begin{markdown}
+A paragraph.
+A heading.
+==========
+\end{markdown}
+
+\begin{markdown*}{blankBeforeHeading}
+A paragraph.
+Not a heading.
+==============
+\end{markdown*}
+
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

A paragraph.

A heading.

A paragraph. Not a heading. ==============

-
ConTeXt Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\usemodule[t][markdown]
-\starttext
-
-\startmarkdown
-A paragraph.
-A heading.
-==========
-\stopmarkdown
-
-\setupmarkdown[blankBeforeHeading = yes]
-\startmarkdown
-A paragraph.
-Not a heading.
-==============
-\stopmarkdown
-
-\stoptext
-

Next, invoke LuaTeX from the terminal:

-
context document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
ConTeXt Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\usemodule[t][markdown]
+\starttext
+
+\startmarkdown
+A paragraph.
+A heading.
+==========
+\stopmarkdown
+
+\setupmarkdown[blankBeforeHeading = yes]
+\startmarkdown
+A paragraph.
+Not a heading.
+==============
+\stopmarkdown
+
+\stoptext
+

Next, invoke LuaTeX from the terminal:

+
context document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

A paragraph.

A heading.

A paragraph. Not a heading. ==============

-

2.2.1.6 Option breakableBlockquotes

+

2.2.1.8 Option +breakableBlockquotes

+
+
breakableBlockquotes (default value: +false)
+
-
breakableBlockquotes (default value: false)
-
true
-

A blank line separates block quotes.

+
+

A blank line separates block quotes.

false
-

Blank lines in the middle of a block quote are ignored.

+
+

Blank lines in the middle of a block quote are ignored.

-
Lua Module Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\input lmfonts
-\def\markdownRendererHeadingOne#1{{\bf #1}\par}
-\directlua{
-  local markdown = require("markdown")
-  local newline = [[^^J^^J]]
-  local convert, input
-
-  convert = markdown.new()
-  input = "> A single"     .. newline .. newline ..
-          "> block quote." .. newline
-  tex.sprint(convert(input))
-
-  convert = markdown.new({breakableBlockquotes = true})
-  input = "> A block quote."       .. newline .. newline ..
-          "> Another block quote." .. newline
-  tex.sprint(convert(input)) }
-\bye
+
Lua Module Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\input lmfonts
+\def\markdownRendererHeadingOne#1{{\bf #1}\par}
+\directlua{
+  local markdown = require("markdown")
+  local newline = [[^^J^^J]]
+  local convert, input
+
+  convert = markdown.new()
+  input = "> A single"     .. newline .. newline ..
+          "> block quote." .. newline
+  tex.sprint(convert(input))
+
+  convert = markdown.new({breakableBlockquotes = true})
+  input = "> A block quote."       .. newline .. newline ..
+          "> Another block quote." .. newline
+  tex.sprint(convert(input)) }
+\bye

Then, invoke LuaTeX from the terminal:

-
luatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
luatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

A single block quote.

@@ -1099,23 +1856,37 @@

Another block quote.

-
Lua CLI Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\input lmfonts
-\input optionfalse
-\input optiontrue
-\bye
-

Using a text editor, create a text document named content.md with the following content:

-
> A single block quote
-
-> or two block quotes?
-

Next, invoke LuaTeX from the terminal:

-
texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ breakableBlockquotes=true  -- content.md optiontrue.tex
-luatex document.tex
-

where ⟨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\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:

+
Lua CLI Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\input lmfonts
+\input optionfalse
+\input optiontrue
+\bye
+

Using a text editor, create a text document named +content.md with the following content:

+
> A single block quote
+
+> or two block quotes?
+

Next, invoke LuaTeX from the terminal:

+
texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
+texlua ⟨CLI pathname⟩ breakableBlockquotes=true  -- content.md optiontrue.tex
+luatex document.tex
+

where ⟨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\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 single block quote or two block quotes?

@@ -1127,27 +1898,32 @@

or two block quotes?

-
Plain TeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-
-\markdownBegin
-> A single
-
-> block quote.
-\markdownEnd
-
-\def\markdownOptionBreakableBlockquotes{true}
-\markdownBegin
-> A block quote.
-
-> Another block quote.
-\markdownEnd
-
-\bye
-

Next, invoke LuaTeX from the terminal:

-
luatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
Plain TeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+
+\markdownBegin
+> A single
+
+> block quote.
+\markdownEnd
+
+\def\markdownOptionBreakableBlockquotes{true}
+\markdownBegin
+> A block quote.
+
+> Another block quote.
+\markdownEnd
+
+\bye
+

Next, invoke LuaTeX from the terminal:

+
luatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

A single block quote.

@@ -1159,28 +1935,33 @@

Another block quote.

-
LaTeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage{markdown}
-\begin{document}
-
-\begin{markdown}
-> A single
-
-> block quote.
-\end{markdown}
-
-\begin{markdown*}{breakableBlockquotes}
-> A block quote.
-
-> Another block quote.
-\end{markdown*}
-
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
LaTeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage{markdown}
+\begin{document}
+
+\begin{markdown}
+> A single
+
+> block quote.
+\end{markdown}
+
+\begin{markdown*}{breakableBlockquotes}
+> A block quote.
+
+> Another block quote.
+\end{markdown*}
+
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

A single block quote.

@@ -1192,28 +1973,33 @@

Another block quote.

-
ConTeXt Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\usemodule[t][markdown]
-\starttext
-
-\startmarkdown
-> A single
-
-> block quote.
-\stopmarkdown
-
-\setupmarkdown[breakableBlockquotes = yes]
-\startmarkdown
-> A block quote.
-
-> Another block quote.
-\stopmarkdown
-
-\stoptext
-

Next, invoke LuaTeX from the terminal:

-
context document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
ConTeXt Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\usemodule[t][markdown]
+\starttext
+
+\startmarkdown
+> A single
+
+> block quote.
+\stopmarkdown
+
+\setupmarkdown[breakableBlockquotes = yes]
+\startmarkdown
+> A block quote.
+
+> Another block quote.
+\stopmarkdown
+
+\stoptext
+

Next, invoke LuaTeX from the terminal:

+
context document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

A single block quote.

@@ -1225,303 +2011,405 @@

Another block quote.

-

2.2.1.7 Option citationNbsps

+

2.2.1.9 Option +citationNbsps

citationNbsps (default value: true)
-
+
+
true
-

Replace regular spaces with non-breaking spaces inside the prenotes and postnotes of citations produced via the pandoc citation syntax extension.

+
+

Replace regular spaces with non-breaking spaces inside the prenotes +and postnotes of citations produced via the pandoc citation syntax +extension.

false
-

Do not replace regular spaces with non-breaking spaces inside the prenotes and postnotes of citations produced via the pandoc citation syntax extension.

+
+

Do not replace regular spaces with non-breaking spaces inside the +prenotes and postnotes of citations produced via the pandoc citation +syntax extension.

-
LaTeX Example
-

Using a text editor, create a text document named document.bib with the following content:

-
@book{knuth:tex,
-  author    = "Knuth, Donald Ervin",
-  title     = "The \TeX book, volume A of Computers and typesetting",
-  publisher = "Addison-Wesley",
-  year      = "1984"
-}
-

Using a text editor, create a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage[citations]{markdown}
-\begin{document}
-
-\begin{markdown}
-The TeXbook [@knuth:tex, p. 123 and 130] is good.
-\end{markdown}
-
-\begin{markdown*}{citationNbsps = false}
-The TeXbook [@knuth:tex, p. 123 and 130] is good.
-\end{markdown*}
-
-\bibliographystyle{plain}
-\bibliography{document.bib}
-\end{document}
+
LaTeX Example
+

Using a text editor, create a text document named +document.bib with the following content:

+
@book{knuth:tex,
+  author    = "Knuth, Donald Ervin",
+  title     = "The \TeX book, volume A of Computers and typesetting",
+  publisher = "Addison-Wesley",
+  year      = "1984"
+}
+

Using a text editor, create a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage[citations]{markdown}
+\begin{document}
+
+\begin{markdown}
+The TeXbook [@knuth:tex, p. 123 and 130] is good.
+\end{markdown}
+
+\begin{markdown*}{citationNbsps = false}
+The TeXbook [@knuth:tex, p. 123 and 130] is good.
+\end{markdown*}
+
+\bibliographystyle{plain}
+\bibliography{document.bib}
+\end{document}

Next, invoke LuaTeX and BibTeX from the terminal:

-
lualatex document.tex
-bibtex document.aux
-lualatex document.tex
-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:

+
lualatex document.tex
+bibtex document.aux
+lualatex document.tex
+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:

The TeXbook [1, p.·123·and·130] is good.

The TeXbook [1, p. 123 and 130] is good.

References

-

1 Donald·Ervin Knuth. The TeXbook, volume A of Computers and typesetting. Addison-Wesley, 1984.

-
-

2.2.1.8 Option citations

+

1 +Donald·Ervin Knuth. The TeXbook, volume A of Computers and +typesetting. Addison-Wesley, 1984.

+ +

2.2.1.10 Option +citations

citations (default value: false)
-
+
+
true
-

Enable the Pandoc citation syntax extension:

-
Here is a simple parenthetical citation [@doe99] and here
-is a string of several [see @doe99, pp. 33-35; also
-@smith04, chap. 1].
-
-A parenthetical citation can have a [prenote @doe99] and
-a [@smith04 postnote]. The name of the author can be
-suppressed by inserting a dash before the name of an
-author as follows [-@smith04].
-
-Here is a simple text citation @doe99 and here is
-a string of several @doe99 [pp. 33-35; also @smith04,
-chap. 1]. Here is one with the name of the author
-suppressed -@doe99.
+
+

Enable the Pandoc citation syntax extension:

+
Here is a simple parenthetical citation [@doe99] and here
+is a string of several [see @doe99, pp. 33-35; also
+@smith04, chap. 1].
+
+A parenthetical citation can have a [prenote @doe99] and
+a [@smith04 postnote]. The name of the author can be
+suppressed by inserting a dash before the name of an
+author as follows [-@smith04].
+
+Here is a simple text citation @doe99 and here is
+a string of several @doe99 [pp. 33-35; also @smith04,
+chap. 1]. Here is one with the name of the author
+suppressed -@doe99.
-
+
+
false
-

Disable the Pandoc citation syntax extension.

+
+

Disable the Pandoc citation syntax extension.

-
LaTeX Example
-

Using a text editor, create a text document named document.bib with the following content:

-
@book{knuth:tex,
-  author    = "Knuth, Donald Ervin",
-  title     = "The \TeX book, volume A of Computers and typesetting",
-  publisher = "Addison-Wesley",
-  year      = "1984"
-}
-

Using a text editor, create a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage[backend=biber]{biblatex}
-\addbibresource{document.bib}
-\usepackage[citations]{markdown}
-\begin{document}
-
-\begin{markdown}
-The TeXbook [@knuth:tex, p. 123 and 130] was written by @knuth:tex.
-\end{markdown}
-
-\printbibliography
-\end{document}
+
LaTeX Example
+

Using a text editor, create a text document named +document.bib with the following content:

+
@book{knuth:tex,
+  author    = "Knuth, Donald Ervin",
+  title     = "The \TeX book, volume A of Computers and typesetting",
+  publisher = "Addison-Wesley",
+  year      = "1984"
+}
+

Using a text editor, create a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage[backend=biber]{biblatex}
+\addbibresource{document.bib}
+\usepackage[citations]{markdown}
+\begin{document}
+
+\begin{markdown}
+The TeXbook [@knuth:tex, p. 123 and 130] was written by @knuth:tex.
+\end{markdown}
+
+\printbibliography
+\end{document}

Next, invoke LuaTeX and Biber from the terminal:

-
lualatex document.tex
-biber document.bcf
-lualatex document.tex
-lualatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

-
-

The TeXbook [1, p.·123 and 130] was written by Knuth 1.

+
lualatex document.tex
+biber document.bcf
+lualatex document.tex
+lualatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

+
+

The TeXbook [1, p.·123 and 130] was written by Knuth 1.

References

-

1 Donald Ervin Knuth. The TeXbook, volume A of Computers and typesetting. Addison-Wesley, 1984.

-
-

2.2.1.9 Option codeSpans

+

1 +Donald Ervin Knuth. The TeXbook, +volume A of Computers and typesetting. Addison-Wesley, 1984.

+
+

2.2.1.11 Option +codeSpans

codeSpans (default value: true)
-
+
+
true
-

Enable the code span syntax:

-
Use the `printf()` function.
-``There is a literal backtick (`) here.``
+
+

Enable the code span syntax:

+
Use the `printf()` function.
+``There is a literal backtick (`) here.``
-
+
+
false
-

Disable the code span syntax. This allows you to easily use the quotation mark ligatures in texts that do not contain code spans:

+
+

Disable the code span syntax. This allows you to easily use the +quotation mark ligatures in texts that do not contain code spans:

``This is a quote.''
-
Lua Module Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\input lmfonts
-\directlua{
-  local markdown = require("markdown")
-  local convert = markdown.new()
-  local input =
-    "``This is a code span.'' " ..
-    "``This is no longer a code span.''"
-  tex.sprint(convert(input)) }
-\par
-\directlua{
-  local markdown = require("markdown")
-  local convert = markdown.new({codeSpans = false})
-  local input =
-    "``This is a quote.'' " ..
-    "``This is another quote.''"
-  tex.sprint(convert(input)) }
-\bye
+
Lua Module Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\input lmfonts
+\directlua{
+  local markdown = require("markdown")
+  local convert = markdown.new()
+  local input =
+    "``This is a code span.'' " ..
+    "``This is no longer a code span.''"
+  tex.sprint(convert(input)) }
+\par
+\directlua{
+  local markdown = require("markdown")
+  local convert = markdown.new({codeSpans = false})
+  local input =
+    "``This is a quote.'' " ..
+    "``This is another quote.''"
+  tex.sprint(convert(input)) }
+\bye

Then, invoke LuaTeX from the terminal:

-
luatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
luatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

-

This is a code span.''This is no longer a code span.’’

+

This is a code span.''This is no longer a code +span.’’

“This is a quote.” “This is another quote.”

-
Lua CLI Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\input lmfonts
-\input optionfalse
-\par
-\input optiontrue
-\bye
-

Using a text editor, create a text document named content.md with the following content:

-
``Is this a code span?'' ``Or a quote?''
-

Next, invoke LuaTeX from the terminal:

-
texlua ⟨CLI pathname⟩ codeSpans=false -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ -- content.md optiontrue.tex
-luatex document.tex
-

where ⟨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\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:

+
Lua CLI Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\input lmfonts
+\input optionfalse
+\par
+\input optiontrue
+\bye
+

Using a text editor, create a text document named +content.md with the following content:

+
``Is this a code span?'' ``Or a quote?''
+

Next, invoke LuaTeX from the terminal:

+
texlua ⟨CLI pathname⟩ codeSpans=false -- content.md optionfalse.tex
+texlua ⟨CLI pathname⟩ -- content.md optiontrue.tex
+luatex document.tex
+

where ⟨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\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:

“Is this a code span?” “Or a quote?”

Is this a code span?''Or a quote?’’

-
Plain TeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-
-\markdownBegin
-``This is a code span.''
-``This is no longer a code span.''
-\markdownEnd
-
-\def\markdownOptionCodeSpans{false}
-\markdownBegin
-``This is a quote.''
-``This is another quote.''
-\markdownEnd
-
-\bye
-

Next, invoke LuaTeX from the terminal:

-
luatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

-
-

This is a code span.''This is no longer a code span.’’

+
Plain TeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+
+\markdownBegin
+``This is a code span.''
+``This is no longer a code span.''
+\markdownEnd
+
+\def\markdownOptionCodeSpans{false}
+\markdownBegin
+``This is a quote.''
+``This is another quote.''
+\markdownEnd
+
+\bye
+

Next, invoke LuaTeX from the terminal:

+
luatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

+
+

This is a code span.''This is no longer a code +span.’’

“This is a quote.” “This is another quote.”

-
LaTeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage{markdown}
-\begin{document}
-
-\begin{markdown}
-``This is a code span.''
-``This is no longer a code span.''
-\end{markdown}
-
-\begin{markdown*}{codeSpans=false}
-``This is a quote.''
-``This is another quote.''
-\end{markdown*}
-
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

-
-

This is a code span.''This is no longer a code span.’’

+
LaTeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage{markdown}
+\begin{document}
+
+\begin{markdown}
+``This is a code span.''
+``This is no longer a code span.''
+\end{markdown}
+
+\begin{markdown*}{codeSpans=false}
+``This is a quote.''
+``This is another quote.''
+\end{markdown*}
+
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

+
+

This is a code span.''This is no longer a code +span.’’

“This is a quote.” “This is another quote.”

-
ConTeXt Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\usemodule[t][markdown]
-\starttext
-
-\startmarkdown
-``This is a code span.''
-``This is no longer a code span.''
-\stopmarkdown
-
-\setupmarkdown[codeSpans = no]
-\startmarkdown
-``This is a quote.''
-``This is another quote.''
-\stopmarkdown
-
-\stoptext
-

Next, invoke LuaTeX from the terminal:

-
context document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

-
-

This is a code span.''This is no longer a code span.’’

+
ConTeXt Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\usemodule[t][markdown]
+\starttext
+
+\startmarkdown
+``This is a code span.''
+``This is no longer a code span.''
+\stopmarkdown
+
+\setupmarkdown[codeSpans = no]
+\startmarkdown
+``This is a quote.''
+``This is another quote.''
+\stopmarkdown
+
+\stoptext
+

Next, invoke LuaTeX from the terminal:

+
context document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

+
+

This is a code span.''This is no longer a code +span.’’

“This is a quote.” “This is another quote.”

-

2.2.1.10 Option contentBlocks

+

2.2.1.12 Option +contentBlocks

contentBlocks (default value: false)
-
+
+
true
-

Enable the iA Writer content blocks syntax extension:

-
http://example.com/minard.jpg (Napoleon's
-  disastrous Russian campaign of 1812)
-/Flowchart.png "Engineering Flowchart"
-/Savings Account.csv 'Recent Transactions'
-/Example.swift
-/Lorem Ipsum.txt
+
+

Enable the iA Writer content blocks syntax extension:

+
http://example.com/minard.jpg (Napoleon's
+  disastrous Russian campaign of 1812)
+/Flowchart.png "Engineering Flowchart"
+/Savings Account.csv 'Recent Transactions'
+/Example.swift
+/Lorem Ipsum.txt
-
+
+
false
-

Disable the iA Writer content blocks syntax extension.

+
+

Disable the iA Writer content blocks syntax extension.

-
LaTeX Example
-

Using a text editor, create a text document named table.csv with the following content:

+
LaTeX Example
+

Using a text editor, create a text document named +table.csv with the following content:

Name,Surname,Born
 Albert,Einstein,1879
 Marie,Curie,1867
 Thomas,Edison,1847
-

Create also a text document named markdown-languages.json with the following content:

-
{
-  "tex": "LaTeX"
-}
-

Create also a text document named code.tex with the following content:

-
This is an example code listing in \LaTeX.
-

Create also a text document named part.md with the following content:

-
This is a *transcluded markdown document*.
-

Create also a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage{minted}
-\usepackage[contentBlocks]{markdown}
-\begin{document}
-\begin{markdown}
-/table.csv  (An example table)
-/code.tex   (An example code listing)
-/part.md    (A file transclusion example)
-\end{markdown}
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex --shell-escape document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+

Create also a text document named +markdown-languages.json with the following content:

+
{
+  "tex": "LaTeX"
+}
+

Create also a text document named code.tex with the +following content:

+
This is an example code listing in \LaTeX.
+

Create also a text document named part.md with the +following content:

+
This is a *transcluded markdown document*.
+

Create also a text document named document.tex with the +following content:

+
\documentclass{article}
+\usepackage{minted}
+\usepackage[contentBlocks]{markdown}
+\begin{document}
+\begin{markdown}
+/table.csv  (An example table)
+/code.tex   (An example code listing)
+/part.md    (A file transclusion example)
+\end{markdown}
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex --shell-escape document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

@@ -1550,38 +2438,51 @@ Thomas,Edison,1847

Table 1: An example table

-
This is an example code listing in \LaTeX.
+
This is an example code listing in \LaTeX.

This is a transcluded markdown document.

-
ConTeXt Example
-

Using a text editor, create a text document named table.csv with the following content:

+
ConTeXt Example
+

Using a text editor, create a text document named +table.csv with the following content:

Name,Surname,Born
 Albert,Einstein,1879
 Marie,Curie,1867
 Thomas,Edison,1847
-

Create also a text document named markdown-languages.json with the following content:

-
{
-  "tex": "ConTeXt"
-}
-

Create also a text document named code.tex with the following content:

-
This is an example code listing in \ConTeXt.
-

Create also a text document named part.md with the following content:

-
This is a *transcluded markdown document*.
-

Create also a text document named document.tex with the following content:

-
\usemodule[t][markdown]
-\setupmarkdown[contentBlocks = yes]
-\definetyping [ConTeXt]
-\setuptyping  [ConTeXt] [option=TEX]
-\starttext
-\startmarkdown
-/table.csv  (An example table)
-/code.tex   (An example code listing)
-/part.md    (A file transclusion example)
-\stopmarkdown
-\stoptext
-

Next, invoke LuaTeX from the terminal:

-
context document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+

Create also a text document named +markdown-languages.json with the following content:

+
{
+  "tex": "ConTeXt"
+}
+

Create also a text document named code.tex with the +following content:

+
This is an example code listing in \ConTeXt.
+

Create also a text document named part.md with the +following content:

+
This is a *transcluded markdown document*.
+

Create also a text document named document.tex with the +following content:

+
\usemodule[t][markdown]
+\setupmarkdown[contentBlocks = yes]
+\definetyping [ConTeXt]
+\setuptyping  [ConTeXt] [option=TEX]
+\starttext
+\startmarkdown
+/table.csv  (An example table)
+/code.tex   (An example code listing)
+/part.md    (A file transclusion example)
+\stopmarkdown
+\stoptext
+

Next, invoke LuaTeX from the terminal:

+
context document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

@@ -1610,424 +2511,525 @@ Thomas,Edison,1847

Table 1: An example table

-
This is an example code listing in \ConTeXt.
+
This is an example code listing in \ConTeXt.

This is a transcluded markdown document.

-

2.2.1.11 Option contentBlocksLanguageMap

+

2.2.1.13 Option +debugExtensions

-
contentBlocksLanguageMap (default value: "markdown-languages.json")
-

The filename of the JSON file that maps filename extensions to programming language names in the iA Writer content blocks.

+
debugExtensions (default value: +false)
+
+
+
true
+
+

Produce a JSON file that will contain the extensible +subset of the peg grammar of markdown after built-in syntax +extensions (see options citations, +contentBlocks, +definitionLists, etc.) and user-defined +syntax extensions (see option extensions) +have been applied. This helps you to see how the different extensions +interact. The name of the produced JSON file is controlled +by the debugExtensionsFileName option.

-
LaTeX Example
-

Using a text editor, create a text document named table.csv with the following content:

-
Name,Surname,Born
-Albert,Einstein,1879
-Marie,Curie,1867
-Thomas,Edison,1847
-

Create also a text document named language-map.json with the following content:

-
{
-  "tex": "LaTeX"
-}
-

Create also a text document named code.tex with the following content:

-
This is an example code listing in \LaTeX.
-

Create also a text document named part.md with the following content:

-
This is a *transcluded markdown document*.
-

Create also a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage{minted}
-\usepackage[contentBlocks]{markdown}
-\markdownSetup{
-  contentBlocksLanguageMap = {language-map.json},
-}
-\begin{document}
-\begin{markdown}
-/table.csv  (An example table)
-/code.tex   (An example code listing)
-/part.md    (A file transclusion example)
-\end{markdown}
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex --shell-escape document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
NameSurnameBorn
AlbertEinstein1879
MarieCurie1867
ThomasEdison1847
-

Table 1: An example table

-
This is an example code listing in \LaTeX.
-

This is a transcluded markdown document.

-
-
ConTeXt Example
-

Using a text editor, create a text document named table.csv with the following content:

-
Name,Surname,Born
-Albert,Einstein,1879
-Marie,Curie,1867
-Thomas,Edison,1847
-

Create also a text document named language-map.json with the following content:

-
{
-  "tex": "ConTeXt"
-}
-

Create also a text document named code.tex with the following content:

-
This is an example code listing in \ConTeXt.
-

Create also a text document named part.md with the following content:

-
This is a *transcluded markdown document*.
-

Create also a text document named document.tex with the following content:

-
\usemodule[t][markdown]
-\setupmarkdown
-  [
-    contentBlocks = yes,
-    contentBlocksLanguageMap = language-map.json,
-  ]
-\definetyping [ConTeXt]
-\setuptyping  [ConTeXt] [option=TEX]
-\starttext
-\startmarkdown
-/table.csv  (An example table)
-/code.tex   (An example code listing)
-/part.md    (A file transclusion example)
-\stopmarkdown
-\stoptext
-

Next, invoke LuaTeX from the terminal:

-
context document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
+
+
+
false
+
+

Do not produce a JSON file with the peg +grammar of markdown.

+
+
+
+
+
LaTeX Example
+

Using a text editor, create a text document named +strike-through.lua with the following content:

+
local strike_through = {
+  api_version = 2,
+  grammar_version = 1,
+  finalize_grammar = function(reader)
+    local nonspacechar = lpeg.P(1) - lpeg.S("\t ")
+    local doubleslashes = lpeg.P("//")
+    local function between(p, starter, ender)
+      ender = lpeg.B(nonspacechar) * ender
+      return (starter * #nonspacechar
+             * lpeg.Ct(p * (p - ender)^0) * ender)
+    end
+
+    local read_strike_through = between(
+      lpeg.V("Inline"), doubleslashes, doubleslashes
+    ) / function(s) return {"\\st{", s, "}"} end
+
+    reader.insert_pattern("Inline after Emph", read_strike_through,
+                          "StrikeThrough")
+    reader.add_special_character("/")
+  end
+}
+
+return strike_through
+

Using a text editor, create also a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage{soul}
+\usepackage[extension = strike-through.lua,
+            debugExtensions]{markdown}
+\begin{document}
+\begin{markdown}
+This is //a lunar roving vehicle// strike-through text.
+\end{markdown}
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

- - - - - - - - - - - - - - - - - - - - - - - - - -
NameSurnameBorn
AlbertEinstein1879
MarieCurie1867
ThomasEdison1847
-

Table 1: An example table

-
This is an example code listing in \ConTeXt.
-

This is a transcluded markdown document.

+

This is a lunar roving vehicle strike-through text.

-

2.2.1.12 Option definitionLists

+

Furthermore, a JSON document named +document.debug-extensions.json should also be produced and +contain the following text:

+
{
+    "Block": [
+        "Blockquote",
+        "Verbatim",
+        "HorizontalRule",
+        "BulletList",
+        "OrderedList",
+        "Heading",
+        "DisplayHtml",
+        "Paragraph",
+        "Plain"
+    ],
+    "Inline": [
+        "Str",
+        "Space",
+        "Endline",
+        "UlOrStarLine",
+        "Strong",
+        "Emph",
+        "StrikeThrough (user-defined \"./strike-through.lua\" syntax extension)",
+        "Link",
+        "Image",
+        "Code",
+        "AutoLinkUrl",
+        "AutoLinkEmail",
+        "AutoLinkRelativeReference",
+        "InlineHtml",
+        "HtmlEntity",
+        "EscapedChar",
+        "Smart",
+        "Symbol"
+    ]
+}
+

This output shows us that our user-defined syntax extension has been +correctly inserted to the grammar of markdown.

+

2.2.1.14 Option +definitionLists

+
+
definitionLists (default value: +false)
+
-
definitionLists (default value: false)
-
true
-

Enable the pandoc definition list syntax extension:

-
Term 1
-
-:   Definition 1
-
-Term 2 with *inline markup*
-
-:   Definition 2
-
-        { some code, part of Definition 2 }
-
-    Third paragraph of definition 2.
+
+

Enable the pandoc definition list syntax extension:

+
Term 1
+
+:   Definition 1
+
+Term 2 with *inline markup*
+
+:   Definition 2
+
+        { some code, part of Definition 2 }
+
+    Third paragraph of definition 2.
-
+
+
false
-

Disable the pandoc definition list syntax extension.

+
+

Disable the pandoc definition list syntax extension.

-
LaTeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage[definitionLists]{markdown}
-\begin{document}
-\begin{markdown}
-Term 1
-
-:   Definition 1
-
-Term 2 with *inline markup*
-
-:   Definition 2
-
-        { some code, part of Definition 2 }
-
-    Third paragraph of definition 2.
-\end{markdown}
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
LaTeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage[definitionLists]{markdown}
+\begin{document}
+\begin{markdown}
+Term 1
+
+:   Definition 1
+
+Term 2 with *inline markup*
+
+:   Definition 2
+
+        { some code, part of Definition 2 }
+
+    Third paragraph of definition 2.
+\end{markdown}
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

Term 1
-

Definition 1

+
+

Definition 1

Term 2 with inline markup
-

Definition 2

+
+

Definition 2

{ some code, part of Definition 2 }

Third paragraph of definition 2.

-
ConTeXt Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\usemodule[t][markdown]
-\setupmarkdown[definitionLists = yes]
-\starttext
-\startmarkdown
-Term 1
-
-:   Definition 1
-
-Term 2 with *inline markup*
-
-:   Definition 2
-
-        { some code, part of Definition 2 }
-
-    Third paragraph of definition 2.
-\stopmarkdown
-\stoptext
-

Next, invoke LuaTeX from the terminal:

-
context document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
ConTeXt Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\usemodule[t][markdown]
+\setupmarkdown[definitionLists = yes]
+\starttext
+\startmarkdown
+Term 1
+
+:   Definition 1
+
+Term 2 with *inline markup*
+
+:   Definition 2
+
+        { some code, part of Definition 2 }
+
+    Third paragraph of definition 2.
+\stopmarkdown
+\stoptext
+

Next, invoke LuaTeX from the terminal:

+
context document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

Term 1
-

Definition 1

+
+

Definition 1

Term 2 with inline markup
-

Definition 2

+
+

Definition 2

{ some code, part of Definition 2 }

Third paragraph of definition 2.

-

2.2.1.13 Option eagerCache

+

2.2.1.15 Option +eagerCache

eagerCache (default value: true)
-
+
+
true
-

Converted markdown documents will be cached in 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 finalizeCache option is enabled.

+
+

Converted markdown documents will be cached in +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 +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 finalizeCache option is disabled. Recursive nesting of markdown document fragments is undefined behavior when eagerCache is disabled.

+
+

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 +finalizeCache option is disabled. +Recursive nesting of markdown document fragments is undefined behavior +when eagerCache is disabled.

-
Lua Module Example
-

Using a text editor, create a text document named hello.md with the following content:

-
Hello *world*!
-

Next, invoke LuaTeX from the terminal with the eagerCache option disabled:

-
texlua ⟨CLI pathname⟩ eagerCache=false -- hello.md hello.tex
-

where ⟨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\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:

-
Hello \markdownRendererEmphasis{world}!\relax
+
Lua Module Example
+

Using a text editor, create a text document named +hello.md with the following content:

+
Hello *world*!
+

Next, invoke LuaTeX from the terminal with the +eagerCache option disabled:

+
texlua ⟨CLI pathname⟩ eagerCache=false -- hello.md hello.tex
+

where ⟨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\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:

+
Hello \markdownRendererEmphasis{world}!\relax

-

Invoke LuaTeX from the terminal again, this time with the eagerCache option enabled:

-
texlua ⟨CLI pathname⟩ eagerCache=true -- hello.md hello.tex
-

A TeX document named hello.tex should be produced and contain the following code:

-
\input ./⟨hash⟩.md.tex\relax
-

Additionally, a TeX document named ⟨hash⟩.md.tex should be produced and contain the following code:

-
Hello \markdownRendererEmphasis{world}!\relax
-

2.2.1.14 Option extensions

+

Invoke LuaTeX from the terminal again, this time with the +eagerCache option enabled:

+
texlua ⟨CLI pathname⟩ eagerCache=true -- hello.md hello.tex
+

A TeX document named +hello.tex should be produced and contain the following +code:

+
\input ./⟨hash⟩.md.tex\relax
+

Additionally, a TeX document +named ⟨hash⟩.md.tex should be produced and contain the +following code:

+
Hello \markdownRendererEmphasis{world}!\relax
+

2.2.1.16 Option +extensions

extensions (default value: {})
-

The filenames of user-defined syntax extensions that will be applied to the markdown reader. If the kpathsea library is available, files will be searched for not only in the current working directory but also in the TeX directory structure.

+
+

The filenames of user-defined syntax extensions that will be applied +to the markdown reader. If the kpathsea +library is available, files will be searched for not only in the current +working directory but also in the TeX directory structure.

-
LaTeX Example
-

Using a text editor, create a text document named strike-through.lua with the following content:

-
local strike_through = {
-  api_version = 1,
-  grammar_version = 1,
-  finalize_grammar = function(reader)
-    local nonspacechar = lpeg.P(1) - lpeg.S("\t ")
-    local doubleslashes = lpeg.P("//")
-    local function between(p, starter, ender)
-      ender = lpeg.B(nonspacechar) * ender
-      return (starter * #nonspacechar
-             * lpeg.Ct(p * (p - ender)^0) * ender)
-    end
-
-    local read_strike_through = between(
-      lpeg.V("Inline"), doubletildes, doubletildes
-    ) / function(s) return {"\\st{", s, "}"} end
-
-    reader.insert_pattern("Inline after Emph", read_strike_through)
-    reader.add_special_character("/")
-  end
-}
-

Using a text editor, create also a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage{soul}
-\usepackage[extension = strike-through.lua]{markdown}
-\begin{document}
-\begin{markdown}
-This is //a lunar roving vehicle// strike-through text.
-\end{markdown}
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
LaTeX Example
+

Using a text editor, create a text document named +strike-through.lua with the following content:

+
local strike_through = {
+  api_version = 2,
+  grammar_version = 1,
+  finalize_grammar = function(reader)
+    local nonspacechar = lpeg.P(1) - lpeg.S("\t ")
+    local doubleslashes = lpeg.P("//")
+    local function between(p, starter, ender)
+      ender = lpeg.B(nonspacechar) * ender
+      return (starter * #nonspacechar
+             * lpeg.Ct(p * (p - ender)^0) * ender)
+    end
+
+    local read_strike_through = between(
+      lpeg.V("Inline"), doubleslashes, doubleslashes
+    ) / function(s) return {"\\st{", s, "}"} end
+
+    reader.insert_pattern("Inline after Emph", read_strike_through,
+                          "StrikeThrough")
+    reader.add_special_character("/")
+  end
+}
+
+return strike_through
+

Using a text editor, create also a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage{soul}
+\usepackage[extension = strike-through.lua]{markdown}
+\begin{document}
+\begin{markdown}
+This is //a lunar roving vehicle// strike-through text.
+\end{markdown}
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

This is a lunar roving vehicle strike-through text.

-

2.2.1.15 Option expectJekyllData

+

2.2.1.17 Option +expectJekyllData

+
+
expectJekyllData (default value: +false)
+
-
expectJekyllData (default value: false)
-
false
-

When the jekyllData option is enabled, then a markdown document may begin with yaml metadata if and only if the metadata begin with the end-of-directives marker (---) and they end with either the end-of-directives or the end-of-document marker (...):

-
\documentclass{article}
-\usepackage[jekyllData]{markdown}
-\begin{document}
-\begin{markdown}
----
-- this
-- is
-- YAML
-...
-- followed
-- by
-- Markdown
-\end{markdown}
-\begin{markdown}
-- this
-- is
-- Markdown
-\end{markdown}
-\end{document}
+
+

When the jekyllData option is enabled, +then a markdown document may begin with yaml metadata if +and only if the metadata begin with the end-of-directives marker +(---) and they end with either the end-of-directives or the +end-of-document marker (...):

+
\documentclass{article}
+\usepackage[jekyllData]{markdown}
+\begin{document}
+\begin{markdown}
+---
+- this
+- is
+- YAML
+...
+- followed
+- by
+- Markdown
+\end{markdown}
+\begin{markdown}
+- this
+- is
+- Markdown
+\end{markdown}
+\end{document}
-
+
+
true
-

When the jekyllData option is enabled, then a markdown document may begin directly with yaml metadata and may contain nothing but yaml metadata.

-
\documentclass{article}
-\usepackage[jekyllData, expectJekyllData]{markdown}
-\begin{document}
-\begin{markdown}
-- this
-- is
-- YAML
-...
-- followed
-- by
-- Markdown
-\end{markdown}
-\begin{markdown}
-- this
-- is
-- YAML
-\end{markdown}
-\end{document}
+
+

When the jekyllData option is enabled, +then a markdown document may begin directly with yaml +metadata and may contain nothing but yaml metadata.

+
\documentclass{article}
+\usepackage[jekyllData, expectJekyllData]{markdown}
+\begin{document}
+\begin{markdown}
+- this
+- is
+- YAML
+...
+- followed
+- by
+- Markdown
+\end{markdown}
+\begin{markdown}
+- this
+- is
+- YAML
+\end{markdown}
+\end{document}
-
LaTeX Example
-

Using a text editor, create a text document named jane-doe.yml with the following content:

-
name: Jane Doe
-age:  99
-

Using a text editor, create also a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage[jekyllData]{markdown}
-\markdownSetup{
-  jekyllDataRenderers = {
-    name = {\gdef\name{#1}},
-    code = {\gdef\age{#1}},
-  },
-  renderers = {
-    jekyllDataEnd = {\name{} is \age{} years old.},
-  }
-}
-\begin{document}
-\markdownInput[expectJekyllData]{jane-doe.yml}
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
LaTeX Example
+

Using a text editor, create a text document named +jane-doe.yml with the following content:

+
name: Jane Doe
+age:  99
+

Using a text editor, create also a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage[jekyllData]{markdown}
+\markdownSetup{
+  jekyllDataRenderers = {
+    name = {\gdef\name{#1}},
+    code = {\gdef\age{#1}},
+  },
+  renderers = {
+    jekyllDataEnd = {\name{} is \age{} years old.},
+  }
+}
+\begin{document}
+\markdownInput[expectJekyllData]{jane-doe.yml}
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

Jane Doe is 99 years old.

-

2.2.1.16 Option fancyLists

+

2.2.1.18 Option +fancyLists

fancyLists (default value: false)
-
+
+
true
-

Enable the Pandoc fancy list extension:

-
a) first item
-b) second item
-c) third item
+
+

Enable the Pandoc fancy list extension:

+
a) first item
+b) second item
+c) third item
-
+
+
false
-

Disable the Pandoc fancy list extension.

+
+

Disable the Pandoc fancy list extension.

-
LaTeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage{minted}
-\usepackage[fancyLists]{markdown}
-\begin{document}
-\begin{markdown}
-a) first item
-b) second item
-c) third item
-\end{markdown}
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex --shell-escape document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
LaTeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage{minted}
+\usepackage[fancyLists]{markdown}
+\begin{document}
+\begin{markdown}
+a) first item
+b) second item
+c) third item
+\end{markdown}
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex --shell-escape document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

  1. first item
  2. @@ -2035,20 +3037,25 @@ Thomas,Edison,1847
  3. third item
-
ConTeXt Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\usemodule[t][markdown]
-\setupmarkdown[fancyLists = yes]
-\starttext
-\startmarkdown
-a) first item
-b) second item
-c) third item
-\stopmarkdown
-\stoptext
-

Next, invoke LuaTeX from the terminal:

-
context document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
ConTeXt Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\usemodule[t][markdown]
+\setupmarkdown[fancyLists = yes]
+\starttext
+\startmarkdown
+a) first item
+b) second item
+c) third item
+\stopmarkdown
+\stoptext
+

Next, invoke LuaTeX from the terminal:

+
context document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

  1. first item
  2. @@ -2056,399 +3063,548 @@ Thomas,Edison,1847
  3. third item
-

2.2.1.17 Option fencedCode

+

2.2.1.19 Option +fencedCode

fencedCode (default value: false)
-
+
+
true
-

Enable the commonmark fenced code block extension:

-
~~~ js
-if (a > 3) {
-    moveShip(5 * gravity, DOWN);
-}
-~~~~~~
-
-  ``` html
-  <pre>
-    <code>
-      // Some comments
-      line 1 of code
-      line 2 of code
-      line 3 of code
-    </code>
-  </pre>
-  ```
+
+

Enable the commonmark fenced code block extension:

+
~~~ js
+if (a > 3) {
+    moveShip(5 * gravity, DOWN);
+}
+~~~~~~
+
+  ``` html
+  <pre>
+    <code>
+      // Some comments
+      line 1 of code
+      line 2 of code
+      line 3 of code
+    </code>
+  </pre>
+  ```
-
+
+
false
-

Disable the commonmark fenced code block extension.

+
+

Disable the commonmark fenced code block extension.

-
LaTeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage{minted}
-\usepackage[fencedCode]{markdown}
-\begin{document}
-\begin{markdown}
-~~~ js
-if (a > 3) {
-    moveShip(5 * gravity, DOWN);
-}
-~~~~~~
-
-  ``` html
-  <pre>
-    <code>
-      // Some comments
-      line 1 of code
-      line 2 of code
-      line 3 of code
-    </code>
-  </pre>
-  ```
-\end{markdown}
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex --shell-escape document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

-
-
if (a > 3) {
-    moveShip(5 * gravity, DOWN);
-}
-
<pre>
-  <code>
-    // Some comments
-    line 1 of code
-    line 2 of code
-    line 3 of code
-  </code>
-</pre>
-
-
ConTeXt Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\usemodule[t][markdown]
-\setupmarkdown[fencedCode = yes]
-\definetyping [js]
-\definetyping [html]
-\setuptyping  [html] [option=XML]
-\starttext
-\startmarkdown
-~~~ js
-if (a > 3) {
-    moveShip(5 * gravity, DOWN);
-}
-~~~~~~
-
-  ``` html
-  <pre>
-    <code>
-      // Some comments
-      line 1 of code
-      line 2 of code
-      line 3 of code
-    </code>
-  </pre>
-  ```
-\stopmarkdown
-\stoptext
-

Next, invoke LuaTeX from the terminal:

-
context document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

-
-
if (a > 3) {
-    moveShip(5 * gravity, DOWN);
-}
-
<pre>
-  <code>
-    // Some comments
-    line 1 of code
-    line 2 of code
-    line 3 of code
-  </code>
-</pre>
-
-

2.2.1.18 Option finalizeCache

+
LaTeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage{minted}
+\usepackage[fencedCode]{markdown}
+\begin{document}
+\begin{markdown}
+~~~ js
+if (a > 3) {
+    moveShip(5 * gravity, DOWN);
+}
+~~~~~~
+
+  ``` html
+  <pre>
+    <code>
+      // Some comments
+      line 1 of code
+      line 2 of code
+      line 3 of code
+    </code>
+  </pre>
+  ```
+\end{markdown}
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex --shell-escape document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

+
+
if (a > 3) {
+    moveShip(5 * gravity, DOWN);
+}
+
<pre>
+  <code>
+    // Some comments
+    line 1 of code
+    line 2 of code
+    line 3 of code
+  </code>
+</pre>
+
+
ConTeXt Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\usemodule[t][markdown]
+\setupmarkdown[fencedCode = yes]
+\definetyping [js]
+\definetyping [html]
+\setuptyping  [html] [option=XML]
+\starttext
+\startmarkdown
+~~~ js
+if (a > 3) {
+    moveShip(5 * gravity, DOWN);
+}
+~~~~~~
+
+  ``` html
+  <pre>
+    <code>
+      // Some comments
+      line 1 of code
+      line 2 of code
+      line 3 of code
+    </code>
+  </pre>
+  ```
+\stopmarkdown
+\stoptext
+

Next, invoke LuaTeX from the terminal:

+
context document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

+
+
if (a > 3) {
+    moveShip(5 * gravity, DOWN);
+}
+
<pre>
+  <code>
+    // Some comments
+    line 1 of code
+    line 2 of code
+    line 3 of code
+  </code>
+</pre>
+
+

2.2.1.20 Option +finalizeCache

finalizeCache (default value: false)
-

Whether an output file specified with the frozenCacheFileName option (frozen cache) that contains a mapping between an enumeration of markdown documents and their auxiliary cache files will be created.

-

The frozen cache makes it possible to later typeset a plain TeX document that contains markdown documents without invoking Lua using the \markdownOptionFrozenCache plain TeX option. As a result, the plain TeX document becomes more portable, but further changes in the order and the content of markdown documents will not be reflected.

+
+

Whether an output file specified with the +frozenCacheFileName option (frozen cache) +that contains a mapping between an enumeration of markdown documents and +their auxiliary cache files will be created.

+

The frozen cache makes it possible to later typeset a plain TeX document that contains markdown +documents without invoking Lua using the +\markdownOptionFrozenCache plain TeX option. As a result, the plain TeX document becomes more portable, but +further changes in the order and the content of markdown documents will +not be reflected.

-
Plain TeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\def\markdownOptionFinalizeCache{true}
-\markdownBegin
-Hello *world*!
-\markdownEnd
-\bye
-

Next, invoke LuaTeX from the terminal:

-
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 as we requested using the finalizeCache option.

+
Plain TeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\def\markdownOptionFinalizeCache{true}
+\markdownBegin
+Hello *world*!
+\markdownEnd
+\bye
+

Next, invoke LuaTeX from the terminal:

+
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 as we requested using the finalizeCache +option.

Next, change the content of document.tex as follows:

-
\input markdown
-\def\markdownOptionFrozenCache{true}
-\markdownBegin
-Hi *world*!
-\markdownEnd
-\bye
+
\input markdown
+\def\markdownOptionFrozenCache{true}
+\markdownBegin
+Hi *world*!
+\markdownEnd
+\bye

Last, invoke pdfTeX without shell access from the terminal:

-
pdftex -no-shell-escape 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 the \markdownOptionFrozenCache option, we were able to typeset the document without accessing the shell or invoking Lua, but the change in the content of the markdown document from “Hello world!” to “Hi world!” was not reflected.

-
LaTeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\documentclass[finalizecache]{article}
-\usepackage{markdown}
-\begin{document}
-\begin{markdown}
-Hello *world*!
-\end{markdown}
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex document.tex
-

A PDF document named document.pdf should be produced and contain the text “Hello world!” A frozen cache will also be produced as we requested using the finalizecache option.

+
pdftex -no-shell-escape 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 the +\markdownOptionFrozenCache option, we were able to typeset +the document without accessing the shell or invoking Lua, but the change +in the content of the markdown document from “Hello world!” to +“Hi world!” was not reflected.

+
LaTeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\documentclass[finalizecache]{article}
+\usepackage{markdown}
+\begin{document}
+\begin{markdown}
+Hello *world*!
+\end{markdown}
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex document.tex
+

A PDF document named document.pdf should be produced and +contain the text “Hello world!” A frozen cache will also be +produced as we requested using the finalizecache +option.

Next, change the content of document.tex as follows:

-
\documentclass[frozencache]{article}
-\usepackage{markdown}
-\begin{document}
-\begin{markdown}
-Hi *world*!
-\end{markdown}
-\end{document}
+
\documentclass[frozencache]{article}
+\usepackage{markdown}
+\begin{document}
+\begin{markdown}
+Hi *world*!
+\end{markdown}
+\end{document}

Last, invoke pdfTeX without shell access from the terminal:

-
pdflatex -no-shell-escape 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 the \markdownOptionFrozenCache option, we were able to typeset the document without accessing the shell or invoking Lua, but the change in the content of the markdown document from “Hello world!” to “Hi world!” was not reflected.

-
ConTeXt Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\usemodule[t][markdown]
-\setupmarkdown[finalizeCache = yes]
-\starttext
-\startmarkdown
-Hello *world*!
-\stopmarkdown
-\stoptext
-

Next, invoke LuaTeX from the terminal:

-
context 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 output file as we requested using the finalizeCache option.

+
pdflatex -no-shell-escape 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 the +\markdownOptionFrozenCache option, we were able to typeset +the document without accessing the shell or invoking Lua, but the change +in the content of the markdown document from “Hello world!” to +“Hi world!” was not reflected.

+
ConTeXt Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\usemodule[t][markdown]
+\setupmarkdown[finalizeCache = yes]
+\starttext
+\startmarkdown
+Hello *world*!
+\stopmarkdown
+\stoptext
+

Next, invoke LuaTeX from the terminal:

+
context 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 output file as we requested using +the finalizeCache option.

Next, change the content of document.tex as follows:

-
\usemodule[t][markdown]
-\setupmarkdown[frozenCache = yes]
-\starttext
-\startmarkdown
-Hi *world*!
-\stopmarkdown
-\stoptext
+
\usemodule[t][markdown]
+\setupmarkdown[frozenCache = yes]
+\starttext
+\startmarkdown
+Hi *world*!
+\stopmarkdown
+\stoptext

Last, invoke pdfTeX without shell access from the terminal:

-
texexec --passon=--no-shell-escape 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 the \markdownOptionFrozenCache option, we were able to typeset the document without accessing the shell or invoking Lua, but the change in the content of the markdown document from “Hello world!” to “Hi world!” was not reflected.

-

2.2.1.19 Option footnotes

+
texexec --passon=--no-shell-escape 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 the +\markdownOptionFrozenCache option, we were able to typeset +the document without accessing the shell or invoking Lua, but the change +in the content of the markdown document from “Hello world!” to +“Hi world!” was not reflected.

+

2.2.1.21 Option +footnotes

footnotes (default value: false)
-
+
+
true
-

Enable the Pandoc footnote syntax extension:

-
Here is a footnote reference,[^1] and another.[^longnote]
-
-[^1]: Here is the footnote.
-
-[^longnote]: Here's one with multiple blocks.
-
-    Subsequent paragraphs are indented to show that they
-belong to the previous footnote.
-
-        { some.code }
-
-    The whole paragraph can be indented, or just the
-    first line.  In this way, multi-paragraph footnotes
-    work like multi-paragraph list items.
-
-This paragraph won't be part of the note, because it
-isn't indented.
+
+

Enable the Pandoc footnote syntax extension:

+
Here is a footnote reference,[^1] and another.[^longnote]
+
+[^1]: Here is the footnote.
+
+[^longnote]: Here's one with multiple blocks.
+
+    Subsequent paragraphs are indented to show that they
+belong to the previous footnote.
+
+        { some.code }
+
+    The whole paragraph can be indented, or just the
+    first line.  In this way, multi-paragraph footnotes
+    work like multi-paragraph list items.
+
+This paragraph won't be part of the note, because it
+isn't indented.
-
+
+
false
-

Disable the Pandoc footnote syntax extension.

+
+

Disable the Pandoc footnote syntax extension.

-
LaTeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage[footnotes]{markdown}
-\begin{document}
-\begin{markdown}
-Here is a footnote reference,[^1] and another.[^longnote]
-
-[^1]: Here is the footnote.
-
-[^longnote]: Here's one with multiple blocks.
-
-    Subsequent paragraphs are indented to show that they
-belong to the previous footnote.
-
-        { some.code }
-
-    The whole paragraph can be indented, or just the
-    first line.  In this way, multi-paragraph footnotes
-    work like multi-paragraph list items.
-
-This paragraph won't be part of the note, because it
-isn't indented.
-\end{markdown}
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

-
-

Here is a footnote reference,1 and another.2

-

This paragraph won’t be part of the note, because it isn’t indented.

-
-
ConTeXt Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\usemodule[t][markdown]
-\setupmarkdown[footnotes = yes]
-\starttext
-\startmarkdown
-Here is a footnote reference,[^1] and another.[^longnote]
-
-[^1]: Here is the footnote.
-
-[^longnote]: Here's one with multiple blocks.
-
-    Subsequent paragraphs are indented to show that they
-belong to the previous footnote.
-
-        { some.code }
-
-    The whole paragraph can be indented, or just the
-    first line.  In this way, multi-paragraph footnotes
-    work like multi-paragraph list items.
-
-This paragraph won't be part of the note, because it
-isn't indented.
-\stopmarkdown
-\stoptext
-

Next, invoke LuaTeX from the terminal:

-
context document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

-
-

Here is a footnote reference,3 and another.4

-

This paragraph won’t be part of the note, because it isn’t indented.

-
-

2.2.1.20 Option frozenCacheCounter

+
LaTeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage[footnotes]{markdown}
+\begin{document}
+\begin{markdown}
+Here is a footnote reference,[^1] and another.[^longnote]
+
+[^1]: Here is the footnote.
+
+[^longnote]: Here's one with multiple blocks.
+
+    Subsequent paragraphs are indented to show that they
+belong to the previous footnote.
+
+        { some.code }
+
+    The whole paragraph can be indented, or just the
+    first line.  In this way, multi-paragraph footnotes
+    work like multi-paragraph list items.
+
+This paragraph won't be part of the note, because it
+isn't indented.
+\end{markdown}
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

+
+

Here is a footnote reference,1 and another.2

+

This paragraph won’t be part of the note, because it isn’t +indented.

+
+
ConTeXt Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\usemodule[t][markdown]
+\setupmarkdown[footnotes = yes]
+\starttext
+\startmarkdown
+Here is a footnote reference,[^1] and another.[^longnote]
+
+[^1]: Here is the footnote.
+
+[^longnote]: Here's one with multiple blocks.
+
+    Subsequent paragraphs are indented to show that they
+belong to the previous footnote.
+
+        { some.code }
+
+    The whole paragraph can be indented, or just the
+    first line.  In this way, multi-paragraph footnotes
+    work like multi-paragraph list items.
+
+This paragraph won't be part of the note, because it
+isn't indented.
+\stopmarkdown
+\stoptext
+

Next, invoke LuaTeX from the terminal:

+
context document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

+
+

Here is a footnote reference,3 and another.4

+

This paragraph won’t be part of the note, because it isn’t +indented.

+
+

2.2.1.22 Option +frozenCacheCounter

frozenCacheCounter (default value: 0)
-

The number of the current markdown document that will be stored in an output file (frozen cache) when the finalizeCache is enabled. When the document number is 0, then a new frozen cache will be created. Otherwise, the frozen cache will be appended.

-

Each frozen cache entry will define a TeX macro \markdownFrozenCachenumber⟩ that will typeset markdown document number ⟨number⟩.

+
+

The number of the current markdown document that will be stored in an +output file (frozen cache) when the +finalizeCache is enabled. When the +document number is 0, then a new frozen cache will be created. +Otherwise, the frozen cache will be appended.

+

Each frozen cache entry will define a TeX macro +\markdownFrozenCachenumber⟩ that will typeset +markdown document number ⟨number⟩.

-
Lua Module Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\input markdown
-\directlua{
-  local markdown = require("markdown")
-  local firstConvert = markdown.new({finalizeCache = true, frozenCacheCounter = 0})
-  local firstInput = "Hello"
-  local secondConvert = markdown.new({finalizeCache = true, frozenCacheCounter = 1})
-  local secondInput = "*world*!"
-  tex.sprint(firstConvert(firstInput) .. [[ ]] .. secondConvert(secondInput)) }
-\bye
+
Lua Module Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\input markdown
+\directlua{
+  local markdown = require("markdown")
+  local firstConvert = markdown.new({finalizeCache = true, frozenCacheCounter = 0})
+  local firstInput = "Hello"
+  local secondConvert = markdown.new({finalizeCache = true, frozenCacheCounter = 1})
+  local secondInput = "*world*!"
+  tex.sprint(firstConvert(firstInput) .. [[ ]] .. secondConvert(secondInput)) }
+\bye

Then, invoke LuaTeX from the terminal:

-
luatex document.tex
-

A PDF document named document.pdf should be produced and contain the text “Hello world!” A frozen cache with two entries will also be produced as we requested using the frozenCacheCounter option.

-

2.2.1.21 Option hardLineBreaks

+
luatex document.tex
+

A PDF document named document.pdf should be produced and +contain the text “Hello world!” A frozen cache with two entries +will also be produced as we requested using the +frozenCacheCounter option.

+

2.2.1.23 Option +hardLineBreaks

hardLineBreaks (default value: false)
-
+
+
true
-

Interpret all newlines within a paragraph as hard line breaks instead of spaces.

+
+

Interpret all newlines within a paragraph as hard line breaks instead +of spaces.

-
+
+
false
-

Interpret all newlines within a paragraph as spaces.

+
+

Interpret all newlines within a paragraph as spaces.

-
LaTeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage{markdown}
-\begin{document}
-
-\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}
-
-\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*}
-
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

-
-

’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.

-
-

2.2.1.22 Option hashEnumerators

+
LaTeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage{markdown}
+\begin{document}
+
+\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}
+
+\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*}
+
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

+
+

’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.

+
+

2.2.1.24 Option +hashEnumerators

+
+
hashEnumerators (default value: +false)
+
-
hashEnumerators (default value: false)
-
true
-

Enable the use of hash symbols (#) as ordered item list markers:

-
#. Bird
-#. McHale
-#. Parish
+
+

Enable the use of hash symbols (#) as ordered item list +markers:

+
#. Bird
+#. McHale
+#. Parish
-
+
+
false
-

Disable the use of hash symbols (#) as ordered item list markers.

+
+

Disable the use of hash symbols (#) as ordered item list +markers.

-
LaTeX Example
-

Using a text editor, create a text document named document.tex with the following content:

-
\documentclass{article}
-\usepackage{markdown}
-\begin{document}
-
-\begin{markdown}
-#. Bird
-#. McHale
-#. Parish
-\end{markdown}
-
-\begin{markdown*}{hashEnumerators}
-#. Bird
-#. McHale
-#. Parish
-\end{markdown*}
-
-\end{document}
-

Next, invoke LuaTeX from the terminal:

-
lualatex document.tex
-

A PDF document named document.pdf should be produced and contain the following text:

+
LaTeX Example
+

Using a text editor, create a text document named +document.tex with the following content:

+
\documentclass{article}
+\usepackage{markdown}
+\begin{document}
+
+\begin{markdown}
+#. Bird
+#. McHale
+#. Parish
+\end{markdown}
+
+\begin{markdown*}{hashEnumerators}
+#. Bird
+#. McHale
+#. Parish
+\end{markdown*}
+
+\end{document}
+

Next, invoke LuaTeX from the terminal:

+
lualatex document.tex
+

A PDF document named document.pdf should be produced and +contain the following text:

. Bird

. McHale

@@ -2459,28 +3615,33 @@ Thomas,Edison,1847
  • Parish
  • -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\starttext
    -
    -\startmarkdown
    -#. Bird
    -#. McHale
    -#. Parish
    -\stopmarkdown
    -
    -\setupmarkdown[hashEnumerators = yes]
    -\startmarkdown
    -#. Bird
    -#. McHale
    -#. Parish
    -\stopmarkdown
    -
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\starttext
    +
    +\startmarkdown
    +#. Bird
    +#. McHale
    +#. Parish
    +\stopmarkdown
    +
    +\setupmarkdown[hashEnumerators = yes]
    +\startmarkdown
    +#. Bird
    +#. McHale
    +#. Parish
    +\stopmarkdown
    +
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    . Bird

    . McHale

    @@ -2491,532 +3652,707 @@ Thomas,Edison,1847
  • Parish
  • -

    2.2.1.23 Option headerAttributes

    +

    2.2.1.25 Option +headerAttributes

    +
    +
    headerAttributes (default value: +false)
    +
    -
    headerAttributes (default value: false)
    -
    true
    -

    Enable the assignment of HTML attributes to headings:

    -
    # My first heading {#foo}
    -
    -## My second heading ##    {#bar .baz}
    -
    -Yet another heading   {key=value}
    -===================
    -

    These HTML attributes have currently no effect other than enabling content slicing.

    +
    +

    Enable the assignment of HTML attributes to headings:

    +
    # My first heading {#foo}
    +
    +## My second heading ##    {#bar .baz}
    +
    +Yet another heading   {key=value}
    +===================
    +

    These HTML attributes have currently no effect other than enabling content slicing.

    -
    +
    +
    false
    -

    Disable the assignment of HTML attributes to headings.

    +
    +

    Disable the assignment of HTML attributes to headings.

    -

    2.2.1.24 Option html

    +

    2.2.1.26 Option +html

    html (default value: false)
    -
    +
    +
    true
    -

    Enable the recognition of inline HTML tags, block HTML elements, HTML comments, HTML instructions, and entities in the input. Inline HTML tags, block HTML elements and HTML comments will be rendered, HTML instructions will be ignored, and HTML entities will be replaced with the corresponding Unicode codepoints.

    +
    +

    Enable the recognition of inline HTML tags, block HTML elements, HTML +comments, HTML instructions, and entities in the input. Inline HTML +tags, block HTML elements and HTML comments will be rendered, HTML +instructions will be ignored, and HTML entities will be replaced with +the corresponding Unicode codepoints.

    -
    +
    +
    false
    -

    Disable the recognition of HTML markup. Any HTML markup in the input will be rendered as plain text.

    +
    +

    Disable the recognition of HTML markup. Any HTML markup in the input +will be rendered as plain text.

    -
    Lua Module Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\input lmfonts
    -\directlua{
    -  local markdown = require("markdown")
    -  local convert = markdown.new()
    -  local newline = [[^^J^^J]]
    -  local input =
    -    "<div>*There is no block tag support.*</div>"        .. newline ..
    -    "*There is no <inline tag="tag"></inline> support.*" .. newline ..
    -    "_There is no <!-- comment --> support._"            .. newline ..
    -    "_There is no <? HTML instruction ?> support._"
    -  tex.sprint(convert(input)) }
    -\par
    -\directlua{
    -  local markdown = require("markdown")
    -  local convert = markdown.new({html = true})
    -  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)) }
    -\bye
    +
    Lua Module Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\input lmfonts
    +\directlua{
    +  local markdown = require("markdown")
    +  local convert = markdown.new()
    +  local newline = [[^^J^^J]]
    +  local input =
    +    "<div>*There is no block tag support.*</div>"        .. newline ..
    +    "*There is no <inline tag="tag"></inline> support.*" .. newline ..
    +    "_There is no <!-- comment --> support._"            .. newline ..
    +    "_There is no <? HTML instruction ?> support._"
    +  tex.sprint(convert(input)) }
    +\par
    +\directlua{
    +  local markdown = require("markdown")
    +  local convert = markdown.new({html = true})
    +  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)) }
    +\bye

    Then, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    <div>There is no block tag support.</div> There is no <inline tag=”tag”></inline> support. There is no <!– comment –> support. There is no <? HTML instruction ?> support.

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    <div>There is no block tag support.</div> There is no +<inline tag=”tag”></inline> support. There is no <!– +comment –> support. There is no <? HTML instruction ?> +support.

    There is support. There is support. There is support.

    -
    Lua CLI Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\input lmfonts
    -\input optionfalse
    -\par
    -\input optiontrue
    -\bye
    -

    Using a text editor, create a text document named content.md with the following content:

    -
    <div>
    -*Is there block tag support?*
    -</div>
    -*Is there <inline tag="tag"></inline> support?*
    -_Is there <!-- comment --> support?_
    -_Is there <? HTML instruction ?> support?_
    -

    Next, invoke LuaTeX from the terminal:

    -
    texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
    -texlua ⟨CLI pathname⟩ html=true -- content.md optiontrue.tex
    -luatex document.tex
    -

    where ⟨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\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:

    -
    -

    <div>Is there block tag support?</div> Is there <inline tag=”tag”></inline> support? Is there <!– comment –> support? Is there <? HTML instruction ?> support?

    +
    Lua CLI Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\input lmfonts
    +\input optionfalse
    +\par
    +\input optiontrue
    +\bye
    +

    Using a text editor, create a text document named +content.md with the following content:

    +
    <div>
    +*Is there block tag support?*
    +</div>
    +*Is there <inline tag="tag"></inline> support?*
    +_Is there <!-- comment --> support?_
    +_Is there <? HTML instruction ?> support?_
    +

    Next, invoke LuaTeX from the terminal:

    +
    texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
    +texlua ⟨CLI pathname⟩ html=true -- content.md optiontrue.tex
    +luatex document.tex
    +

    where ⟨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\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:

    +
    +

    <div>Is there block tag support?</div> Is there +<inline tag=”tag”></inline> support? Is there <!– comment +–> support? Is there <? HTML instruction ?> support?

    Is there support? Is there support? Is there support?

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\input lmfonts
    -
    -\markdownBegin
    -<div>
    -*There is no block tag support.*
    -</div>
    -*There is no <inline tag="tag"></inline> support.*
    -_There is no <!-- comment --> support._
    -_There is no <? HTML instruction ?> support._
    -\markdownEnd
    -
    -\def\markdownOptionHtml{true}
    -\markdownBegin
    -<div>
    -*There is block tag support.*
    -</div>
    -*There is <inline tag="tag"></inline> support.*
    -_There is <!-- comment --> support._
    -_There is <? HTML instruction ?> support._
    -\markdownEnd
    -
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    <div>There is no block tag support.</div> There is no <inline tag=”tag”></inline> support. There is no <!– comment –> support. There is no <? HTML instruction ?> support.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\input lmfonts
    +
    +\markdownBegin
    +<div>
    +*There is no block tag support.*
    +</div>
    +*There is no <inline tag="tag"></inline> support.*
    +_There is no <!-- comment --> support._
    +_There is no <? HTML instruction ?> support._
    +\markdownEnd
    +
    +\def\markdownOptionHtml{true}
    +\markdownBegin
    +<div>
    +*There is block tag support.*
    +</div>
    +*There is <inline tag="tag"></inline> support.*
    +_There is <!-- comment --> support._
    +_There is <? HTML instruction ?> support._
    +\markdownEnd
    +
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    <div>There is no block tag support.</div> There is no +<inline tag=”tag”></inline> support. There is no <!– +comment –> support. There is no <? HTML instruction ?> +support.

    There is support. There is support. There is support.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage{markdown}
    -\begin{document}
    -
    -\begin{markdown}
    -<div>
    -*There is no block tag support.*
    -</div>
    -*There is no <inline tag="tag"></inline> support.*
    -_There is no <!-- comment --> support._
    -_There is no <? HTML instruction ?> support._
    -\end{markdown}
    -
    -\begin{markdown*}{html}
    -<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{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    <div>There is no block tag support.</div> There is no <inline tag=”tag”></inline> support. There is no <!– comment –> support. There is no <? HTML instruction ?> support.

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage{markdown}
    +\begin{document}
    +
    +\begin{markdown}
    +<div>
    +*There is no block tag support.*
    +</div>
    +*There is no <inline tag="tag"></inline> support.*
    +_There is no <!-- comment --> support._
    +_There is no <? HTML instruction ?> support._
    +\end{markdown}
    +
    +\begin{markdown*}{html}
    +<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{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    <div>There is no block tag support.</div> There is no +<inline tag=”tag”></inline> support. There is no <!– +comment –> support. There is no <? HTML instruction ?> +support.

    There is support. There is support. There is support.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\starttext
    -
    -\startmarkdown
    -<div>
    -*There is no block tag support.*
    -</div>
    -*There is no <inline tag="tag"></inline> support.*
    -_There is no <!-- comment --> support._
    -_There is no <? HTML instruction ?> support._
    -\stopmarkdown
    -
    -\setupmarkdown[html = yes]
    -\startmarkdown
    -<div>
    -*There is block tag support.*
    -</div>
    -*There is <inline tag="tag"></inline> support.*
    -_There is <!-- comment --> support._
    -_There is <? HTML instruction ?> support._
    -\stopmarkdown
    -
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    <div>There is no block tag support.</div> There is no <inline tag=”tag”></inline> support. There is no <!– comment –> support. There is no <? HTML instruction ?> support.

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\starttext
    +
    +\startmarkdown
    +<div>
    +*There is no block tag support.*
    +</div>
    +*There is no <inline tag="tag"></inline> support.*
    +_There is no <!-- comment --> support._
    +_There is no <? HTML instruction ?> support._
    +\stopmarkdown
    +
    +\setupmarkdown[html = yes]
    +\startmarkdown
    +<div>
    +*There is block tag support.*
    +</div>
    +*There is <inline tag="tag"></inline> support.*
    +_There is <!-- comment --> support._
    +_There is <? HTML instruction ?> support._
    +\stopmarkdown
    +
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    <div>There is no block tag support.</div> There is no +<inline tag=”tag”></inline> support. There is no <!– +comment –> support. There is no <? HTML instruction ?> +support.

    There is support. There is support. There is support.

    -

    2.2.1.25 Option hybrid

    +

    2.2.1.27 Option +hybrid

    hybrid (default value: false)
    -
    +
    +
    true
    -

    Disable the escaping of special plain TeX characters, which makes it possible to intersperse your markdown markup with TeX code. The intended usage is in documents prepared manually by a human author. In such documents, it can often be desirable to mix TeX and markdown markup freely.

    +
    +

    Disable the escaping of special plain TeX characters, which makes it possible to +intersperse your markdown markup with TeX code. The intended usage is in +documents prepared manually by a human author. In such documents, it can +often be desirable to mix TeX and +markdown markup freely.

    -
    +
    +
    false
    -

    Enable the escaping of special plain TeX characters outside verbatim environments, so that they are not interpretted by TeX. This is encouraged when typesetting automatically generated content or markdown documents that were not prepared with this package in mind.

    +
    +

    Enable the escaping of special plain TeX characters outside verbatim +environments, so that they are not interpretted by TeX. This is encouraged when typesetting +automatically generated content or markdown documents that were not +prepared with this package in mind.

    -
    Lua Module Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\input lmfonts
    -\directlua{
    -  local markdown = require("markdown")
    -  local input, convert_safe, convert_unsafe, paragraph
    -
    -  input = [[$\string\sqrt{-1}$ *equals* $i$.]]
    -  convert_safe = markdown.new()
    -  convert_unsafe = markdown.new({hybrid = true})
    -  paragraph = [[\par]]
    -
    -  tex.sprint(
    -    convert_safe(input) .. paragraph ..
    -    convert_unsafe(input)
    -  )
    -}
    -\bye
    +
    Lua Module +Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\input lmfonts
    +\directlua{
    +  local markdown = require("markdown")
    +  local input, convert_safe, convert_unsafe, paragraph
    +
    +  input = [[$\string\sqrt{-1}$ *equals* $i$.]]
    +  convert_safe = markdown.new()
    +  convert_unsafe = markdown.new({hybrid = true})
    +  paragraph = [[\par]]
    +
    +  tex.sprint(
    +    convert_safe(input) .. paragraph ..
    +    convert_unsafe(input)
    +  )
    +}
    +\bye

    Then, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    $\sqrt {-1}$ equals $i$.

    √-̅1̅ equals i.

    -
    Lua CLI Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\input lmfonts
    -\input optionfalse
    -
    -\begingroup
    -\catcode`\%=12
    -\input optiontrue
    -\endgroup
    -\bye
    -

    Using a text editor, create a text document named content.md with the following content:

    -
    $\sqrt{-1}$ *equals* $i$.
    -

    Next, invoke LuaTeX from the terminal:

    -
    texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
    -texlua ⟨CLI pathname⟩ hybrid=true -- content.md optiontrue.tex
    -luatex document.tex
    -

    where ⟨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\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:

    +
    Lua CLI Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\input lmfonts
    +\input optionfalse
    +
    +\begingroup
    +\catcode`\%=12
    +\input optiontrue
    +\endgroup
    +\bye
    +

    Using a text editor, create a text document named +content.md with the following content:

    +
    $\sqrt{-1}$ *equals* $i$.
    +

    Next, invoke LuaTeX from the terminal:

    +
    texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
    +texlua ⟨CLI pathname⟩ hybrid=true -- content.md optiontrue.tex
    +luatex document.tex
    +

    where ⟨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\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:

    $\sqrt {-1}$ equals $i$.

    √-̅1̅ equals i.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\input lmfonts
    -
    -\markdownBegin
    -$\sqrt{-1}$ *equals* $i$.
    -\markdownEnd
    -
    -\def\markdownOptionHybrid{true}
    -\markdownBegin
    -$\sqrt{-1}$ *equals* $i$.
    -\markdownEnd
    -
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\input lmfonts
    +
    +\markdownBegin
    +$\sqrt{-1}$ *equals* $i$.
    +\markdownEnd
    +
    +\def\markdownOptionHybrid{true}
    +\markdownBegin
    +$\sqrt{-1}$ *equals* $i$.
    +\markdownEnd
    +
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    $\sqrt {-1}$ equals $i$.

    √-̅1̅ equals i.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage{markdown}
    -\begin{document}
    -
    -\begin{markdown}
    -$\sqrt{-1}$ *equals* $i$.
    -\end{markdown}
    -
    -\begin{markdown*}{hybrid}
    -$\sqrt{-1}$ *equals* $i$.
    -\end{markdown*}
    -
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage{markdown}
    +\begin{document}
    +
    +\begin{markdown}
    +$\sqrt{-1}$ *equals* $i$.
    +\end{markdown}
    +
    +\begin{markdown*}{hybrid}
    +$\sqrt{-1}$ *equals* $i$.
    +\end{markdown*}
    +
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    $\sqrt {-1}$ equals $i$.

    √-̅1̅ equals i.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\starttext
    -
    -\startmarkdown
    -$\sqrt{-1}$ *equals* $i$.
    -\stopmarkdown
    -
    -\setupmarkdown[hybrid = yes]
    -\startmarkdown
    -$\sqrt{-1}$ *equals* $i$.
    -\stopmarkdown
    -
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\starttext
    +
    +\startmarkdown
    +$\sqrt{-1}$ *equals* $i$.
    +\stopmarkdown
    +
    +\setupmarkdown[hybrid = yes]
    +\startmarkdown
    +$\sqrt{-1}$ *equals* $i$.
    +\stopmarkdown
    +
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    $\sqrt {-1}$ equals $i$.

    √-̅1̅ equals i.

    -

    2.2.1.26 Option inlineFootnotes

    +

    2.2.1.28 Option +inlineFootnotes

    +
    +
    inlineFootnotes (default value: +false)
    +
    -
    inlineFootnotes (default value: false)
    -
    true
    -

    Enable the Pandoc inline footnote syntax extension:

    -
    Here is an inline note.^[Inlines notes are easier to
    -write, since you don't have to pick an identifier and
    -move down to type the note.]
    +
    +

    Enable the Pandoc inline footnote syntax extension:

    +
    Here is an inline note.^[Inlines notes are easier to
    +write, since you don't have to pick an identifier and
    +move down to type the note.]
    -
    +
    +
    false
    -

    Disable the Pandoc inline footnote syntax extension.

    +
    +

    Disable the Pandoc inline footnote syntax extension.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[inlineFootnotes]{markdown}
    -\begin{document}
    -\begin{markdown}
    -Here is an inline note.^[Inlines notes are easier to
    -write, since you don't have to pick an identifier and
    -move down to type the note.]
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    Here is an inline note.5

    -
    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[inlineFootnotes = yes]
    -\starttext
    -\startmarkdown
    -Here is an inline note.^[Inlines notes are easier to
    -write, since you don't have to pick an identifier and
    -move down to type the note.]
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    Here is an inline note.6

    -
    -

    2.2.1.27 Option jekyllData

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[inlineFootnotes]{markdown}
    +\begin{document}
    +\begin{markdown}
    +Here is an inline note.^[Inlines notes are easier to
    +write, since you don't have to pick an identifier and
    +move down to type the note.]
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    Here is an inline note.5

    +
    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[inlineFootnotes = yes]
    +\starttext
    +\startmarkdown
    +Here is an inline note.^[Inlines notes are easier to
    +write, since you don't have to pick an identifier and
    +move down to type the note.]
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    Here is an inline note.6

    +
    +

    2.2.1.29 Option +jekyllData

    jekyllData (default value: false)
    -
    +
    +
    true
    -

    Enable the Pandoc yaml_metadata_block syntax extension for entering metadata in yaml:

    -
    ---
    -title:  'This is the title: it contains a colon'
    -author:
    -- Author One
    -- Author Two
    -keywords: [nothing, nothingness]
    -abstract: |
    -  This is the abstract.
    -
    -  It consists of two paragraphs.
    ----
    +
    +

    Enable the Pandoc yaml_metadata_block syntax extension +for entering metadata in yaml:

    +
    ---
    +title:  'This is the title: it contains a colon'
    +author:
    +- Author One
    +- Author Two
    +keywords: [nothing, nothingness]
    +abstract: |
    +  This is the abstract.
    +
    +  It consists of two paragraphs.
    +---
    -
    +
    +
    false
    -

    Disable the Pandoc yaml_metadata_block syntax extension for entering metadata in yaml.

    +
    +

    Disable the Pandoc yaml_metadata_block syntax extension +for entering metadata in yaml.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownOptionJekyllData{true}
    -\ExplSyntaxOn
    -\keys_define:nn
    -  { markdown/jekyllData }
    -  {
    -    name .code:n = { \gdef\name{#1} },
    -    age  .code:n = { \gdef\age{#1}  },
    -  }
    -\ExplSyntaxOff
    -\def\markdownRendererJekyllDataEnd{%
    -  \name{} is \age{} years old.}
    -\markdownBegin
    ----
    -name: Jane Doe
    -age:  99
    ----
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownOptionJekyllData{true}
    +\ExplSyntaxOn
    +\keys_define:nn
    +  { markdown/jekyllData }
    +  {
    +    name .code:n = { \gdef\name{#1} },
    +    age  .code:n = { \gdef\age{#1}  },
    +  }
    +\ExplSyntaxOff
    +\def\markdownRendererJekyllDataEnd{%
    +  \name{} is \age{} years old.}
    +\markdownBegin
    +---
    +name: Jane Doe
    +age:  99
    +---
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Jane Doe is 99 years old.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[jekyllData]{markdown}
    -\markdownSetup{
    -  jekyllDataRenderers = {
    -    name = {\gdef\name{#1}},
    -    code = {\gdef\age{#1}},
    -  },
    -  renderers = {
    -    jekyllDataEnd = {\name{} is \age{} years old.},
    -  }
    -}
    -\begin{document}
    -
    -\begin{markdown}
    ----
    -name: Jane Doe
    -age:  99
    ----
    -\end{markdown}
    -
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[jekyllData]{markdown}
    +\markdownSetup{
    +  jekyllDataRenderers = {
    +    name = {\gdef\name{#1}},
    +    code = {\gdef\age{#1}},
    +  },
    +  renderers = {
    +    jekyllDataEnd = {\name{} is \age{} years old.},
    +  }
    +}
    +\begin{document}
    +
    +\begin{markdown}
    +---
    +name: Jane Doe
    +age:  99
    +---
    +\end{markdown}
    +
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Jane Doe is 99 years old.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[jekyllData = yes]
    -\ExplSyntaxOn
    -\keys_define:nn
    -  { markdown/jekyllData }
    -  {
    -    name .code:n = { \gdef\name{#1} },
    -    age  .code:n = { \gdef\age{#1}  },
    -  }
    -\ExplSyntaxOff
    -\def\markdownRendererJekyllDataEnd{%
    -  \name{} is \age{} years old.}
    -\starttext
    -
    -\startmarkdown
    ----
    -name: Jane Doe
    -age:  99
    ----
    -\stopmarkdown
    -
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[jekyllData = yes]
    +\ExplSyntaxOn
    +\keys_define:nn
    +  { markdown/jekyllData }
    +  {
    +    name .code:n = { \gdef\name{#1} },
    +    age  .code:n = { \gdef\age{#1}  },
    +  }
    +\ExplSyntaxOff
    +\def\markdownRendererJekyllDataEnd{%
    +  \name{} is \age{} years old.}
    +\starttext
    +
    +\startmarkdown
    +---
    +name: Jane Doe
    +age:  99
    +---
    +\stopmarkdown
    +
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Jane Doe is 99 years old.

    -

    2.2.1.28 Option pipeTables

    +

    2.2.1.30 Option +pipeTables

    pipeTables (default value: false)
    -
    +
    +
    true
    -

    Enable the PHP Markdown pipe table syntax extension:

    -
    | Right | Left | Default | Center |
    -|------:|:-----|---------|:------:|
    -|   12  |  12  |    12   |    12  |
    -|  123  |  123 |   123   |   123  |
    -|    1  |    1 |     1   |     1  |
    +
    +

    Enable the PHP Markdown pipe table syntax extension:

    +
    | Right | Left | Default | Center |
    +|------:|:-----|---------|:------:|
    +|   12  |  12  |    12   |    12  |
    +|  123  |  123 |   123   |   123  |
    +|    1  |    1 |     1   |     1  |
    -
    +
    +
    false
    -

    Disable the PHP Markdown pipe table syntax extension.

    +
    +

    Disable the PHP Markdown pipe table syntax +extension.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[pipeTables]{markdown}
    -\begin{document}
    -\begin{markdown}
    -| Right | Left | Default | Center |
    -|------:|:-----|---------|:------:|
    -|   12  |  12  |    12   |    12  |
    -|  123  |  123 |   123   |   123  |
    -|    1  |    1 |     1   |     1  |
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[pipeTables]{markdown}
    +\begin{document}
    +\begin{markdown}
    +| Right | Left | Default | Center |
    +|------:|:-----|---------|:------:|
    +|   12  |  12  |    12   |    12  |
    +|  123  |  123 |   123   |   123  |
    +|    1  |    1 |     1   |     1  |
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    @@ -3049,22 +4385,27 @@ Thomas,Edison,1847
    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[pipeTables = yes]
    -\starttext
    -\startmarkdown
    -| Right | Left | Default | Center |
    -|------:|:-----|---------|:------:|
    -|   12  |  12  |    12   |    12  |
    -|  123  |  123 |   123   |   123  |
    -|    1  |    1 |     1   |     1  |
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[pipeTables = yes]
    +\starttext
    +\startmarkdown
    +| Right | Left | Default | Center |
    +|------:|:-----|---------|:------:|
    +|   12  |  12  |    12   |    12  |
    +|  123  |  123 |   123   |   123  |
    +|    1  |    1 |     1   |     1  |
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    @@ -3097,197 +4438,269 @@ Thomas,Edison,1847
    -

    2.2.1.29 Option preserveTabs

    +

    2.2.1.31 Option +preserveTabs

    preserveTabs (default value: false)
    -
    +
    +
    true
    -

    Preserve tabs in code block and fenced code blocks.

    +
    +

    Preserve tabs in code block and fenced code blocks.

    -
    +
    +
    false
    -

    Convert any tabs in the input to spaces.

    +
    +

    Convert any tabs in the input to spaces.

    -

    2.2.1.30 Option relativeReferences

    +

    2.2.1.32 Option +relativeReferences

    +
    +
    relativeReferences (default value: +false)
    +
    -
    relativeReferences (default value: false)
    -
    true
    -

    Enable relative references in autolinks:

    -
    I conclude in Section <#conclusion>.
    -
    -Conclusion {#conclusion}
    -==========
    -In this paper, we have discovered that most
    -grandmas would rather eat dinner with their
    -grandchildren than get eaten. Begone, wolf!
    +
    +

    Enable relative +references in autolinks:

    +
    I conclude in Section <#conclusion>.
    +
    +Conclusion {#conclusion}
    +==========
    +In this paper, we have discovered that most
    +grandmas would rather eat dinner with their
    +grandchildren than get eaten. Begone, wolf!
    -
    +
    +
    false
    -

    Disable relative references in autolinks.

    +
    +

    Disable relative references in autolinks.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[headerAttributes, relativeReferences]{markdown}
    -\begin{document}
    -\begin{markdown}
    -
    -I conclude in Section <#conclusion>.
    -
    -Conclusion {#conclusion}
    -==========
    -In this paper, we have discovered that most
    -grandmas would rather eat dinner with their
    -grandchildren than get eaten. Begone, wolf!
    -
    -\end{markdown}
    -\end{document}
    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[headerAttributes, relativeReferences]{markdown}
    +\begin{document}
    +\begin{markdown}
    +
    +I conclude in Section <#conclusion>.
    +
    +Conclusion {#conclusion}
    +==========
    +In this paper, we have discovered that most
    +grandmas would rather eat dinner with their
    +grandchildren than get eaten. Begone, wolf!
    +
    +\end{markdown}
    +\end{document}

    Next, invoke LuaTeX twice from the terminal:

    -
    lualatex document.tex
    -lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    lualatex document.tex
    +lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    I conclude in Section 1.

    1. Conclusion

    -

    In this paper, we have discovered that most grandmas would rather eat dinner with their grandchildren than get eaten. Begone, wolf!

    +

    In this paper, we have discovered that most grandmas would rather eat +dinner with their grandchildren than get eaten. Begone, wolf!

    -

    2.2.1.31 Option shiftHeadings

    +

    2.2.1.33 Option +shiftHeadings

    shiftHeadings (default value: 0)
    -

    All headings will be shifted by ⟨shift amount⟩, which can be both positive and negative. Headings will not be shifted beyond level 6 or below level 1. Instead, those headings will be shifted to level 6, when ⟨shift amount⟩ is positive, and to level 1, when ⟨shift amount⟩ is negative.

    +
    +

    All headings will be shifted by ⟨shift amount⟩, which can be +both positive and negative. Headings will not be shifted beyond level 6 +or below level 1. Instead, those headings will be shifted to level 6, +when ⟨shift amount⟩ is positive, and to level 1, when +⟨shift amount⟩ is negative.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named example.md with the following content:

    -
    ## A section
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -
    -\font\normal=cmr10\normal
    -\font\big=cmr10 at 12pt
    -\def\markdownRendererHeadingTwo#1{{\big #1\par}}
    -\font\bigger=cmr10 scaled 1440
    -\def\markdownRendererHeadingOne#1{{\bigger #1\par}}
    -
    -\def\markdownOptionShiftHeadings{-1}
    -\markdownInput{example.md}
    -
    -\def\markdownOptionShiftHeadings{0}
    -\markdownInput{example.md}
    -
    -\def\markdownOptionShiftHeadings{+1}
    -\markdownInput{example.md}
    -
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +example.md with the following content:

    +
    ## A section
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +
    +\font\normal=cmr10\normal
    +\font\big=cmr10 at 12pt
    +\def\markdownRendererHeadingTwo#1{{\big #1\par}}
    +\font\bigger=cmr10 scaled 1440
    +\def\markdownRendererHeadingOne#1{{\bigger #1\par}}
    +
    +\def\markdownOptionShiftHeadings{-1}
    +\markdownInput{example.md}
    +
    +\def\markdownOptionShiftHeadings{0}
    +\markdownInput{example.md}
    +
    +\def\markdownOptionShiftHeadings{+1}
    +\markdownInput{example.md}
    +
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    A section

    A section

    A section

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage{markdown}
    -\begin{filecontents}[overwrite,nosearch,noheader]{example.md}
    -## A section
    -\end{filecontents}
    -\begin{document}
    -\markdownInput[shiftHeadings=-1]{example.md}
    -\markdownInput{example.md}
    -\markdownInput[shiftHeadings=+1]{example.md}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage{markdown}
    +\begin{filecontents}[overwrite,nosearch,noheader]{example.md}
    +## A section
    +\end{filecontents}
    +\begin{document}
    +\markdownInput[shiftHeadings=-1]{example.md}
    +\markdownInput{example.md}
    +\markdownInput[shiftHeadings=+1]{example.md}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    A section

    A section

    A section

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named example.md with the following content:

    -
    ## A section
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\starttext
    -
    -\inputmarkdown[shiftHeadings = -1]{example.md}
    -\inputmarkdown[shiftHeadings =  0]{example.md}
    -\inputmarkdown[shiftHeadings = +1]{example.md}
    -
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +example.md with the following content:

    +
    ## A section
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\starttext
    +
    +\inputmarkdown[shiftHeadings = -1]{example.md}
    +\inputmarkdown[shiftHeadings =  0]{example.md}
    +\inputmarkdown[shiftHeadings = +1]{example.md}
    +
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    A section

    A section

    A section

    -

    2.2.1.32 Option slice

    +

    2.2.1.34 Option +slice

    slice (default value: ^ $)
    -

    Two space-separated selectors that specify the slice of a document that will be processed, whereas the remainder of the document will be ignored. The following selectors are recognized:

    +
    +

    Two space-separated selectors that specify the slice of a document +that will be processed, whereas the remainder of the document will be +ignored. The following selectors are recognized:

      -
    • The circumflex (^) selects the beginning of a document.
    • +
    • The circumflex (^) selects the beginning of a +document.
    • The dollar sign ($) selects the end of a document.
    • -
    • ^identifier⟩ selects the beginning of a section with the HTML attribute #identifier⟩.
    • -
    • $identifier⟩ selects the end of a section with the HTML attribute #identifier⟩.
    • -
    • identifier⟩ corresponds to ^identifier⟩ for the first selector and to $identifier⟩ for the second selector.
    • +
    • ^identifier⟩ selects the beginning of a +section with the HTML +attribute #identifier⟩.
    • +
    • $identifier⟩ selects the end of a section +with the HTML attribute +#identifier⟩.
    • +
    • identifier⟩ corresponds to +^identifier⟩ for the first selector and to +$identifier⟩ for the second selector.
    -

    Specifying only a single selector, ⟨identifier⟩, is equivalent to specifying the two selectors ⟨identifier⟩ ⟨identifier⟩, which is equivalent to ^identifier$identifier⟩, i.e. the entire section with the HTML attribute #identifier⟩ will be selected.

    +

    Specifying only a single selector, ⟨identifier⟩, is +equivalent to specifying the two selectors ⟨identifier⟩ +⟨identifier⟩, which is equivalent to +^identifier$identifier⟩, +i.e. the entire section with the HTML attribute +#identifier⟩ will be selected.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named hamlet.md with the following content:

    -
    # The Tragedy of Hamlet
    -Shakespeare's longest play.
    -
    -## Act III {#act-3}
    -Hamlet kills Polonius.
    -
    -## Act V   {#act-5}
    -Hamlet dies.
    -
    -## Act I   {#act-1}
    -Hamlet talks to ghost.
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownOptionHeaderAttributes{true}
    -
    -\font\normal=cmr10\normal
    -\font\big=cmr10 at 12pt
    -\def\markdownRendererHeadingTwo#1{{\big #1\par}}
    -\font\bigger=cmr10 scaled 1440
    -\def\markdownRendererHeadingOne#1{{\bigger #1\par}}
    -
    -\def\markdownOptionSlice{^ ^act-3}
    -\markdownInput{hamlet.md}
    -
    -\def\markdownOptionSlice{act-1}
    -\markdownInput{hamlet.md}
    -
    -\def\markdownOptionSlice{act-3 act-5}
    -\markdownInput{hamlet.md}
    -
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +hamlet.md with the following content:

    +
    # The Tragedy of Hamlet
    +Shakespeare's longest play.
    +
    +## Act III {#act-3}
    +Hamlet kills Polonius.
    +
    +## Act V   {#act-5}
    +Hamlet dies.
    +
    +## Act I   {#act-1}
    +Hamlet talks to ghost.
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownOptionHeaderAttributes{true}
    +
    +\font\normal=cmr10\normal
    +\font\big=cmr10 at 12pt
    +\def\markdownRendererHeadingTwo#1{{\big #1\par}}
    +\font\bigger=cmr10 scaled 1440
    +\def\markdownRendererHeadingOne#1{{\bigger #1\par}}
    +
    +\def\markdownOptionSlice{^ ^act-3}
    +\markdownInput{hamlet.md}
    +
    +\def\markdownOptionSlice{act-1}
    +\markdownInput{hamlet.md}
    +
    +\def\markdownOptionSlice{act-3 act-5}
    +\markdownInput{hamlet.md}
    +
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    The Tragedy of Hamlet

    Shakespeare’s longest play.

    @@ -3298,31 +4711,36 @@ Thomas,Edison,1847

    Act V

    Hamlet dies.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[headerAttributes]{markdown}
    -\begin{filecontents}[overwrite,nosearch,noheader]{hamlet.md}
    -# The Tragedy of Hamlet
    -Shakespeare's longest play.
    -
    -## Act III {#act-3}
    -Hamlet kills Polonius.
    -
    -## Act V   {#act-5}
    -Hamlet dies.
    -
    -## Act I   {#act-1}
    -Hamlet talks to ghost.
    -\end{filecontents}
    -\begin{document}
    -\markdownInput[slice=^ ^act-3]{hamlet.md}
    -\markdownInput[slice=act-1]{hamlet.md}
    -\markdownInput[slice=act-3 act-5]{hamlet.md}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[headerAttributes]{markdown}
    +\begin{filecontents}[overwrite,nosearch,noheader]{hamlet.md}
    +# The Tragedy of Hamlet
    +Shakespeare's longest play.
    +
    +## Act III {#act-3}
    +Hamlet kills Polonius.
    +
    +## Act V   {#act-5}
    +Hamlet dies.
    +
    +## Act I   {#act-1}
    +Hamlet talks to ghost.
    +\end{filecontents}
    +\begin{document}
    +\markdownInput[slice=^ ^act-3]{hamlet.md}
    +\markdownInput[slice=act-1]{hamlet.md}
    +\markdownInput[slice=act-3 act-5]{hamlet.md}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    The Tragedy of Hamlet

    Shakespeare’s longest play.

    @@ -3333,32 +4751,39 @@ Thomas,Edison,1847

    Act V

    Hamlet dies.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named hamlet.md with the following content:

    -
    # The Tragedy of Hamlet
    -Shakespeare's longest play.
    -
    -## Act III {#act-3}
    -Hamlet kills Polonius.
    -
    -## Act V   {#act-5}
    -Hamlet dies.
    -
    -## Act I   {#act-1}
    -Hamlet talks to ghost.
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[headerAttributes = yes]
    -\starttext
    -
    -\inputmarkdown[slice = ^ ^act-3]{example.md}
    -\inputmarkdown[slice = act-1]{example.md}
    -\inputmarkdown[slice = act-3 act-5]{example.md}
    -
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +hamlet.md with the following content:

    +
    # The Tragedy of Hamlet
    +Shakespeare's longest play.
    +
    +## Act III {#act-3}
    +Hamlet kills Polonius.
    +
    +## Act V   {#act-5}
    +Hamlet dies.
    +
    +## Act I   {#act-1}
    +Hamlet talks to ghost.
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[headerAttributes = yes]
    +\starttext
    +
    +\inputmarkdown[slice = ^ ^act-3]{example.md}
    +\inputmarkdown[slice = act-1]{example.md}
    +\inputmarkdown[slice = act-3 act-5]{example.md}
    +
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    The Tragedy of Hamlet

    Shakespeare’s longest play.

    @@ -3369,182 +4794,241 @@ Thomas,Edison,1847

    Act V

    Hamlet dies.

    -

    2.2.1.33 Option smartEllipses

    +

    2.2.1.35 Option +smartEllipses

    smartEllipses (default value: false)
    -
    +
    +
    true
    -

    Convert any ellipses in the input to the \markdownRendererEllipsis TeX macro.

    +
    +

    Convert any ellipses in the input to the +\markdownRendererEllipsis TeX macro.

    -
    +
    +
    false
    -

    Preserve all ellipses in the input.

    +
    +

    Preserve all ellipses in the input.

    -
    Lua Module Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownRendererEllipsis{. . .}
    -\input lmfonts
    -\directlua{
    -  local markdown = require("markdown")
    -  local convert = markdown.new()
    -  local input = "These are just three regular dots ..."
    -  tex.sprint(convert(input)) }
    -\par
    -\directlua{
    -  local markdown = require("markdown")
    -  local convert = markdown.new({smartEllipses = true})
    -  local input = "... and this is a victorian ellipsis."
    -  tex.sprint(convert(input)) }
    -\bye
    +
    Lua Module +Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownRendererEllipsis{. . .}
    +\input lmfonts
    +\directlua{
    +  local markdown = require("markdown")
    +  local convert = markdown.new()
    +  local input = "These are just three regular dots ..."
    +  tex.sprint(convert(input)) }
    +\par
    +\directlua{
    +  local markdown = require("markdown")
    +  local convert = markdown.new({smartEllipses = true})
    +  local input = "... and this is a victorian ellipsis."
    +  tex.sprint(convert(input)) }
    +\bye

    Then, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    These are just three regular dots …

    . . . and this is a victorian ellipsis.

    -
    Lua CLI Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownRendererEllipsis{. . .}
    -\input lmfonts
    -\input optionfalse
    -\par
    -\input optiontrue
    -\bye
    -

    Using a text editor, create a text document named content.md with the following content:

    -
    Are these just three regular dots, a victorian ellipsis, or ... ?
    -

    Next, invoke LuaTeX from the terminal:

    -
    texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
    -texlua ⟨CLI pathname⟩ smartEllipses=true -- content.md optiontrue.tex
    -luatex document.tex
    -

    where ⟨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\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:

    +
    Lua CLI Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownRendererEllipsis{. . .}
    +\input lmfonts
    +\input optionfalse
    +\par
    +\input optiontrue
    +\bye
    +

    Using a text editor, create a text document named +content.md with the following content:

    +
    Are these just three regular dots, a victorian ellipsis, or ... ?
    +

    Next, invoke LuaTeX from the terminal:

    +
    texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
    +texlua ⟨CLI pathname⟩ smartEllipses=true -- content.md optiontrue.tex
    +luatex document.tex
    +

    where ⟨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\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:

    Are these just three regular dots, a victorian ellipsis, or … ?

    -

    Are these just three regular dots, a victorian ellipsis, or . . . ?

    -
    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownRendererEllipsis{. . .}
    -
    -\markdownBegin
    -These are just three regular dots ...
    -\markdownEnd
    -
    -\def\markdownOptionSmartEllipses{true}
    -\markdownBegin
    -... and this is a victorian ellipsis.
    -\markdownEnd
    -
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    Are these just three regular dots, a victorian ellipsis, or . . . +?

    +
    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownRendererEllipsis{. . .}
    +
    +\markdownBegin
    +These are just three regular dots ...
    +\markdownEnd
    +
    +\def\markdownOptionSmartEllipses{true}
    +\markdownBegin
    +... and this is a victorian ellipsis.
    +\markdownEnd
    +
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    These are just three regular dots …

    . . . and this is a victorian ellipsis.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage{markdown}
    -\markdownSetup{
    -  renderers = {
    -    ellipsis = {. . .}
    -  }
    -}
    -\begin{document}
    -
    -\begin{markdown}
    -These are just three regular dots ...
    -\end{markdown}
    -
    -\begin{markdown*}{smartEllipses}
    -... and this is a victorian ellipsis.
    -\end{markdown*}
    -
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage{markdown}
    +\markdownSetup{
    +  renderers = {
    +    ellipsis = {. . .}
    +  }
    +}
    +\begin{document}
    +
    +\begin{markdown}
    +These are just three regular dots ...
    +\end{markdown}
    +
    +\begin{markdown*}{smartEllipses}
    +... and this is a victorian ellipsis.
    +\end{markdown*}
    +
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    These are just three regular dots …

    . . . and this is a victorian ellipsis.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\def\markdownRendererEllipsis{. . .}
    -\starttext
    -
    -\startmarkdown
    -These are just three regular dots ...
    -\stopmarkdown
    -
    -\setupmarkdown[smartEllipses = yes]
    -\startmarkdown
    -... and this is a victorian ellipsis.
    -\stopmarkdown
    -
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\def\markdownRendererEllipsis{. . .}
    +\starttext
    +
    +\startmarkdown
    +These are just three regular dots ...
    +\stopmarkdown
    +
    +\setupmarkdown[smartEllipses = yes]
    +\startmarkdown
    +... and this is a victorian ellipsis.
    +\stopmarkdown
    +
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    These are just three regular dots …

    . . . and this is a victorian ellipsis.

    -

    2.2.1.34 Option startNumber

    +

    2.2.1.36 Option +startNumber

    startNumber (default value: true)
    -
    +
    +
    true
    -

    Make the number in the first item of an ordered lists significant. The item numbers will be passed to the \markdownRendererOlItemWithNumber TeX macro.

    +
    +

    Make the number in the first item of an ordered lists significant. +The item numbers will be passed to the +\markdownRendererOlItemWithNumber TeX macro.

    -
    +
    +
    false
    -

    Ignore the numbers in the ordered list items. Each item will only produce a \markdownRendererOlItem TeX macro.

    +
    +

    Ignore the numbers in the ordered list items. Each item will only +produce a \markdownRendererOlItem TeX macro.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage{markdown}
    -\begin{document}
    -
    -\begin{markdown}
    -The following list respects the numbers specified in the markup:
    -
    -3. third item
    -4. fourth item
    -5. fifth item
    -\end{markdown}
    -
    -\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{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage{markdown}
    +\begin{document}
    +
    +\begin{markdown}
    +The following list respects the numbers specified in the markup:
    +
    +3. third item
    +4. fourth item
    +5. fifth item
    +\end{markdown}
    +
    +\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{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    The following list respects the numbers specified in the markup:

      @@ -3552,38 +5036,44 @@ Thomas,Edison,1847
    1. fourth item
    2. fifth item
    -

    The following list does not respect the numbers specified in the markup:

    +

    The following list does not respect the numbers specified in the +markup:

    1. third item
    2. fourth item
    3. fifth item
    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\starttext
    -
    -\startmarkdown
    -The following list respects the numbers specified in the markup:
    -
    -3. third item
    -4. fourth item
    -5. fifth item
    -\stopmarkdown
    -
    -\setupmarkdown[startNumber = no]
    -\startmarkdown
    -The following list respects the numbers specified in the markup:
    -
    -3. third item
    -4. fourth item
    -5. fifth item
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\starttext
    +
    +\startmarkdown
    +The following list respects the numbers specified in the markup:
    +
    +3. third item
    +4. fourth item
    +5. fifth item
    +\stopmarkdown
    +
    +\setupmarkdown[startNumber = no]
    +\startmarkdown
    +The following list respects the numbers specified in the markup:
    +
    +3. third item
    +4. fourth item
    +5. fifth item
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    The following list respects the numbers specified in the markup:

      @@ -3591,276 +5081,371 @@ Thomas,Edison,1847
    1. fourth item
    2. fifth item
    -

    The following list does not respect the numbers specified in the markup:

    +

    The following list does not respect the numbers specified in the +markup:

    1. third item
    2. fourth item
    3. fifth item
    -

    2.2.1.35 Option strikeThrough

    +

    2.2.1.37 Option +strikeThrough

    strikeThrough (default value: false)
    -
    +
    +
    true
    -

    Enable the Pandoc strike-through syntax extension:

    -
    This ~~is deleted text.~~
    +
    +

    Enable the Pandoc strike-through syntax extension:

    +
    This ~~is deleted text.~~
    -
    +
    +
    false
    -

    Disable the Pandoc strike-through syntax extension.

    +
    +

    Disable the Pandoc strike-through syntax extension.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownOptionStrikeThrough{true}
    -\input soulutf8.sty
    -\def\markdownRendererStrikeThrough#1{\st{#1}}
    -\markdownBegin
    -This is ~~a lunar roving vehicle~~ strike-through text.
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownOptionStrikeThrough{true}
    +\input soulutf8.sty
    +\def\markdownRendererStrikeThrough#1{\st{#1}}
    +\markdownBegin
    +This is ~~a lunar roving vehicle~~ strike-through text.
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    This is a lunar roving vehicle strike-through text.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[strikeThrough]{markdown}
    -\usepackage{soulutf8}
    -\markdownSetup{
    -  renderers = {
    -    strikeThrough = {\st{#1}},
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -This is ~~a lunar roving vehicle~~ strike-through text.
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[strikeThrough]{markdown}
    +\usepackage{soulutf8}
    +\markdownSetup{
    +  renderers = {
    +    strikeThrough = {\st{#1}},
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +This is ~~a lunar roving vehicle~~ strike-through text.
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    This is a lunar roving vehicle strike-through text.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[strikeThrough = yes]
    -\def\markdownRendererStrikeThrough#1{\overstrikes{#1}}
    -\starttext
    -\startmarkdown
    -This is ~~a lunar roving vehicle~~ strike-through text.
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[strikeThrough = yes]
    +\def\markdownRendererStrikeThrough#1{\overstrikes{#1}}
    +\starttext
    +\startmarkdown
    +This is ~~a lunar roving vehicle~~ strike-through text.
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    This is a lunar roving vehicle strike-through text.

    -

    2.2.1.36 Option stripIndent

    +

    2.2.1.38 Option +stripIndent

    stripIndent (default value: false)
    -
    +
    +
    true
    -

    Strip the minimal indentation of non-blank lines from all lines in a markdown document. Requires that the preserveTabs Lua option is disabled:

    -
    \documentclass{article}
    -\usepackage[stripIndent]{markdown}
    -\begin{document}
    -    \begin{markdown}
    -        Hello *world*!
    -    \end{markdown}
    -\end{document}
    +
    +

    Strip the minimal indentation of non-blank lines from all lines in a +markdown document. Requires that the +preserveTabs Lua option is disabled:

    +
    \documentclass{article}
    +\usepackage[stripIndent]{markdown}
    +\begin{document}
    +    \begin{markdown}
    +        Hello *world*!
    +    \end{markdown}
    +\end{document}
    -
    +
    +
    false
    -

    Do not strip any indentation from the lines in a markdown document.

    +
    +

    Do not strip any indentation from the lines in a markdown +document.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownOptionStripIndent{true}
    -\markdownBegin
    -    Hello *world*!
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the text “Hello world!”

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[stripIndent]{markdown}
    -\begin{document}
    -    \begin{markdown}
    -        Hello *world*!
    -    \end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the text “Hello world!”

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[stripIndent = yes]
    -\starttext
    -    \startmarkdown
    -        Hello *world*!
    -    \stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the text “Hello world!”

    -

    2.2.1.37 Option subscripts

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownOptionStripIndent{true}
    +\markdownBegin
    +    Hello *world*!
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the text “Hello world!”

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[stripIndent]{markdown}
    +\begin{document}
    +    \begin{markdown}
    +        Hello *world*!
    +    \end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the text “Hello world!”

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[stripIndent = yes]
    +\starttext
    +    \startmarkdown
    +        Hello *world*!
    +    \stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the text “Hello world!”

    +

    2.2.1.39 Option +subscripts

    subscripts (default value: false)
    -
    +
    +
    true
    -

    Enable the Pandoc subscript syntax extension:

    -
    H~2~O is a liquid.
    +
    +

    Enable the Pandoc subscript syntax extension:

    +
    H~2~O is a liquid.
    -
    +
    +
    false
    -

    Disable the Pandoc subscript syntax extension.

    +
    +

    Disable the Pandoc subscript syntax extension.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[subscripts]{markdown}
    -\begin{document}
    -\begin{markdown}
    -H~2~O is a liquid.
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[subscripts]{markdown}
    +\begin{document}
    +\begin{markdown}
    +H~2~O is a liquid.
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    H2O is a liquid.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[subscripts = yes]
    -\starttext
    -\startmarkdown
    -H~2~O is a liquid.
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[subscripts = yes]
    +\starttext
    +\startmarkdown
    +H~2~O is a liquid.
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    H2O is a liquid.

    -

    2.2.1.38 Option superscripts

    +

    2.2.1.40 Option +superscripts

    superscripts (default value: false)
    -
    +
    +
    true
    -

    Enable the Pandoc superscript syntax extension:

    -
    2^10^ is 1024.
    +
    +

    Enable the Pandoc superscript syntax extension:

    +
    2^10^ is 1024.
    -
    +
    +
    false
    -

    Disable the Pandoc superscript syntax extension.

    +
    +

    Disable the Pandoc superscript syntax extension.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[superscripts]{markdown}
    -\begin{document}
    -\begin{markdown}
    -2^10^ is 1024.
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[superscripts]{markdown}
    +\begin{document}
    +\begin{markdown}
    +2^10^ is 1024.
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    210 is 1024.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[superscripts = yes]
    -\starttext
    -\startmarkdown
    -2^10^ is 1024.
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[superscripts = yes]
    +\starttext
    +\startmarkdown
    +2^10^ is 1024.
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    210 is 1024.

    -

    2.2.1.39 Option tableCaptions

    +

    2.2.1.41 Option +tableCaptions

    tableCaptions (default value: false)
    -
    +
    +
    true
    -

    Enable the Pandoc table_captions syntax extension for pipe tables.

    -
    | Right | Left | Default | Center |
    -|------:|:-----|---------|:------:|
    -|   12  |  12  |    12   |    12  |
    -|  123  |  123 |   123   |   123  |
    -|    1  |    1 |     1   |     1  |
    -
    -  : Demonstration of pipe table syntax.
    +
    +

    Enable the Pandoc table_captions syntax extension for pipe tables.

    +
    | Right | Left | Default | Center |
    +|------:|:-----|---------|:------:|
    +|   12  |  12  |    12   |    12  |
    +|  123  |  123 |   123   |   123  |
    +|    1  |    1 |     1   |     1  |
    +
    +  : Demonstration of pipe table syntax.
    -
    +
    +
    false
    -

    Disable the Pandoc table_captions syntax extension.

    +
    +

    Disable the Pandoc table_captions syntax extension.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[pipeTables, tableCaptions]{markdown}
    -\begin{document}
    -\begin{markdown}
    -| Right | Left | Default | Center |
    -|------:|:-----|---------|:------:|
    -|   12  |  12  |    12   |    12  |
    -|  123  |  123 |   123   |   123  |
    -|    1  |    1 |     1   |     1  |
    -
    -  : Demonstration of pipe table syntax.
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[pipeTables, tableCaptions]{markdown}
    +\begin{document}
    +\begin{markdown}
    +| Right | Left | Default | Center |
    +|------:|:-----|---------|:------:|
    +|   12  |  12  |    12   |    12  |
    +|  123  |  123 |   123   |   123  |
    +|    1  |    1 |     1   |     1  |
    +
    +  : Demonstration of pipe table syntax.
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    @@ -3894,28 +5479,33 @@ Thomas,Edison,1847
    Demonstration of pipe table syntax.
    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown
    -  [
    -    pipeTables = yes,
    -    tableCaptions = yes,
    -  ]
    -\starttext
    -\startmarkdown
    -| Right | Left | Default | Center |
    -|------:|:-----|---------|:------:|
    -|   12  |  12  |    12   |    12  |
    -|  123  |  123 |   123   |   123  |
    -|    1  |    1 |     1   |     1  |
    -
    -  : Demonstration of pipe table syntax.
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown
    +  [
    +    pipeTables = yes,
    +    tableCaptions = yes,
    +  ]
    +\starttext
    +\startmarkdown
    +| Right | Left | Default | Center |
    +|------:|:-----|---------|:------:|
    +|   12  |  12  |    12   |    12  |
    +|  123  |  123 |   123   |   123  |
    +|    1  |    1 |     1   |     1  |
    +
    +  : Demonstration of pipe table syntax.
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    @@ -3949,46 +5539,58 @@ Thomas,Edison,1847
    Demonstration of pipe table syntax.
    -

    2.2.1.40 Option taskLists

    +

    2.2.1.42 Option +taskLists

    taskLists (default value: false)
    -
    +
    +
    true
    -

    Enable the Pandoc task_lists syntax extension.

    -
    - [ ] an unticked task list item
    -- [/] a half-checked task list item
    -- [X] a ticked task list item
    +
    +

    Enable the Pandoc task_lists syntax extension.

    +
    - [ ] an unticked task list item
    +- [/] a half-checked task list item
    +- [X] a ticked task list item
    -
    +
    +
    false
    -

    Disable the Pandoc task_lists syntax extension.

    +
    +

    Disable the Pandoc task_lists syntax extension.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[taskLists]{markdown}
    -\markdownSetup{
    -  renderers = {
    -    untickedBox = No,
    -    halfTickedBox = Maybe,
    -    tickedBox = Yes,
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -- [ ] you can't.
    -- [/] I can?
    -- [X] I can!
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[taskLists]{markdown}
    +\markdownSetup{
    +  renderers = {
    +    untickedBox = No,
    +    halfTickedBox = Maybe,
    +    tickedBox = Yes,
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +- [ ] you can't.
    +- [/] I can?
    +- [X] I can!
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    • No you can’t.
    • @@ -3996,23 +5598,28 @@ Thomas,Edison,1847
    • Yes I can!
    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[taskLists = yes]
    -\def\markdownRendererUntickedBox{No}
    -\def\markdownRendererHalftickedBox{Maybe}
    -\def\markdownRendererTickedBox{Yes}
    -\starttext
    -\startmarkdown
    -- [ ] you can't.
    -- [/] I can?
    -- [X] I can!
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[taskLists = yes]
    +\def\markdownRendererUntickedBox{No}
    +\def\markdownRendererHalftickedBox{Maybe}
    +\def\markdownRendererTickedBox{Yes}
    +\starttext
    +\startmarkdown
    +- [ ] you can't.
    +- [/] I can?
    +- [X] I can!
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    • No you can’t.
    • @@ -4020,128 +5627,169 @@ Thomas,Edison,1847
    • Yes I can!
    -

    2.2.1.41 Option texComments

    +

    2.2.1.43 Option +texComments

    texComments (default value: false)
    -
    +
    +
    true
    -

    Strip TeX-style comments.

    -
    \documentclass{article}
    -\usepackage[texComments]{markdown}
    -\begin{document}
    -\begin{markdown}
    -Hel%  this is a comment
    -   lo *world*!
    -\end{markdown}
    -\end{document}
    -

    Always enabled when hybrid is enabled.

    +
    +

    Strip TeX-style comments.

    +
    \documentclass{article}
    +\usepackage[texComments]{markdown}
    +\begin{document}
    +\begin{markdown}
    +Hel%  this is a comment
    +   lo *world*!
    +\end{markdown}
    +\end{document}
    +

    Always enabled when hybrid is +enabled.

    -
    +
    +
    false
    -

    Do not strip TeX-style comments.

    +
    +

    Do not strip TeX-style +comments.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownOptionTexComments{true}
    -\markdownBegin
    -Hel%  this is a comment
    -   lo *world*!
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the text “Hello world!”

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[texComments]{markdown}
    -\begin{document}
    -\begin{markdown}
    -Hel%  this is a comment
    -   lo *world*!
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the text “Hello world!”

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[texComments = yes]
    -\starttext
    -\startmarkdown
    -Hel%  this is a comment
    -   lo *world*!
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the text “Hello world!”

    -

    2.2.1.42 Option tightLists

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownOptionTexComments{true}
    +\markdownBegin
    +Hel%  this is a comment
    +   lo *world*!
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the text “Hello world!”

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[texComments]{markdown}
    +\begin{document}
    +\begin{markdown}
    +Hel%  this is a comment
    +   lo *world*!
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the text “Hello world!”

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[texComments = yes]
    +\starttext
    +\startmarkdown
    +Hel%  this is a comment
    +   lo *world*!
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the text “Hello world!”

    +

    2.2.1.44 Option +tightLists

    tightLists (default value: true)
    -
    +
    +
    true
    -

    Unordered and ordered lists whose items do not consist of multiple paragraphs will be considered tight. Tight lists will produce tight renderers that may produce different output than lists that are not tight:

    -
    - This is
    -- a tight
    -- unordered list.
    -
    -- This is
    -
    -  not a tight
    -
    -- unordered list.
    +
    +

    Unordered and ordered lists whose items do not consist of multiple +paragraphs will be considered tight. Tight lists will produce +tight renderers that may produce different output than lists that are +not tight:

    +
    - This is
    +- a tight
    +- unordered list.
    +
    +- This is
    +
    +  not a tight
    +
    +- unordered list.
    -
    +
    +
    false
    -

    Unordered and ordered lists whose items consist of multiple paragraphs will be treated the same way as lists that consist of multiple paragraphs.

    +
    +

    Unordered and ordered lists whose items consist of multiple +paragraphs will be treated the same way as lists that consist of +multiple paragraphs.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage{markdown}
    -\begin{document}
    -
    -\begin{markdown}
    -The following list is tight:
    -
    -  - first item
    -  - second item
    -  - third item
    -
    -The following list is loose:
    -
    -  - first item
    -  - second item that spans
    -
    -    multiple paragraphs
    -  - third item
    -\end{markdown}
    -
    -\begin{markdown*}{tightLists=false}
    -The following list is now also loose:
    -
    -  - first item
    -  - second item
    -  - third item
    -\end{markdown*}
    -
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage{markdown}
    +\begin{document}
    +
    +\begin{markdown}
    +The following list is tight:
    +
    +  - first item
    +  - second item
    +  - third item
    +
    +The following list is loose:
    +
    +  - first item
    +  - second item that spans
    +
    +    multiple paragraphs
    +  - third item
    +\end{markdown}
    +
    +\begin{markdown*}{tightLists=false}
    +The following list is now also loose:
    +
    +  - first item
    +  - second item
    +  - third item
    +\end{markdown*}
    +
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    The following list is tight:

      @@ -4163,111 +5811,178 @@ Thomas,Edison,1847
    • third item

    -

    2.2.1.43 Option underscores

    +

    2.2.1.45 Option +underscores

    underscores (default value: true)
    -
    +
    +
    true
    -

    Both underscores and asterisks can be used to denote emphasis and strong emphasis:

    -
    *single asterisks*
    -_single underscores_
    -**double asterisks**
    -__double underscores__
    +
    +

    Both underscores and asterisks can be used to denote emphasis and +strong emphasis:

    +
    *single asterisks*
    +_single underscores_
    +**double asterisks**
    +__double underscores__
    -
    +
    +
    false
    -

    Only asterisks can be used to denote emphasis and strong emphasis. This makes it easy to write math with the hybrid option without the need to constantly escape subscripts.

    +
    +

    Only asterisks can be used to denote emphasis and strong emphasis. +This makes it easy to write math with the +hybrid option without the need to +constantly escape subscripts.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownOptionHybrid{true}
    -
    -\markdownBegin
    -This is _emphasized text_ and this is a math subscript: $m\_n$.
    -\markdownEnd
    -
    -\def\markdownOptionUnderscores{false}
    -\markdownBegin
    -This is *emphasized text* and this is a math subscript: $m_n$.
    -\markdownEnd
    -
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    This is emphasized text and this is a math subscript: mₙ.

    -

    This is emphasized text and this is a math subscript: mₙ.

    -
    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[hybrid]{markdown}
    -\begin{document}
    -
    -\begin{markdown}
    -This is _emphasized text_ and this is a math subscript: $m\_n$.
    -\end{markdown}
    -
    -\begin{markdown*}{underscores=false}
    -This is *emphasized text* and this is a math subscript: $m_n$.
    -\end{markdown*}
    -
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    This is emphasized text and this is a math subscript: mₙ.

    -

    This is emphasized text and this is a math subscript: mₙ.

    -
    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[hybrid = yes]
    -\starttext
    -
    -\startmarkdown
    -This is _emphasized text_ and this is a math subscript: $m\_n$.
    -\stopmarkdown
    -
    -\setupmarkdown[underscores = yes]
    -\startmarkdown
    -This is *emphasized text* and this is a math subscript: $m_n$.
    -\stopmarkdown
    -
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    This is emphasized text and this is a math subscript: mₙ.

    -

    This is emphasized text and this is a math subscript: mₙ.

    -
    -

    2.2.2 Plain TeX

    -

    Plain TeX options control the communication between the TeX interface and the markdown Lua module. They are supported by all higher-level interfaces of the Markdown package, i.e. the plain TeX, LaTeX and ConTeXt interfaces.

    -

    2.2.2.1 Setting Lua options from plain TeX

    -

    As a rule of thumb, you can set all Lua options directly from plain TeX. For example, to set the taskLists Lua option to true, you would include the following code in your plain TeX document:

    -
    \def\markdownOptionTaskLists{true}
    -

    2.2.2.2 Finalizing and Freezing the Cache

    -

    The \markdownOptionFrozenCache option uses the mapping previously created by the Lua interface finalizeCache option, and uses it to typeset the plain TeX document without invoking Lua. As a result, the plain TeX document becomes more portable, but further changes in the order and the content of markdown documents will not be reflected. It defaults to false.

    -

    The standard usage of the finalizeCache and frozenCache options is as follows:

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownOptionHybrid{true}
    +
    +\markdownBegin
    +This is _emphasized text_ and this is a math subscript: $m\_n$.
    +\markdownEnd
    +
    +\def\markdownOptionUnderscores{false}
    +\markdownBegin
    +This is *emphasized text* and this is a math subscript: $m_n$.
    +\markdownEnd
    +
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    This is emphasized text and this is a math subscript: +mₙ.

    +

    This is emphasized text and this is a math subscript: +mₙ.

    +
    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[hybrid]{markdown}
    +\begin{document}
    +
    +\begin{markdown}
    +This is _emphasized text_ and this is a math subscript: $m\_n$.
    +\end{markdown}
    +
    +\begin{markdown*}{underscores=false}
    +This is *emphasized text* and this is a math subscript: $m_n$.
    +\end{markdown*}
    +
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    This is emphasized text and this is a math subscript: +mₙ.

    +

    This is emphasized text and this is a math subscript: +mₙ.

    +
    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[hybrid = yes]
    +\starttext
    +
    +\startmarkdown
    +This is _emphasized text_ and this is a math subscript: $m\_n$.
    +\stopmarkdown
    +
    +\setupmarkdown[underscores = yes]
    +\startmarkdown
    +This is *emphasized text* and this is a math subscript: $m_n$.
    +\stopmarkdown
    +
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    This is emphasized text and this is a math subscript: +mₙ.

    +

    This is emphasized text and this is a math subscript: +mₙ.

    +
    +

    2.2.2 Plain TeX

    +

    Plain TeX options control the +communication between the TeX +interface and the markdown Lua module. They are supported +by all higher-level interfaces of the Markdown package, i.e. the plain +TeX, LaTeX and ConTeXt interfaces.

    +

    2.2.2.1 Setting Lua options from +plain TeX

    +

    As a rule of thumb, you can set all Lua options directly from plain +TeX. For example, to set the +taskLists Lua option to true, +you would include the following code in your plain TeX document:

    +
    \def\markdownOptionTaskLists{true}
    +

    2.2.2.2 Finalizing and Freezing the +Cache

    +

    The \markdownOptionFrozenCache option uses the mapping +previously created by the Lua interface +finalizeCache option, and uses it to +typeset the plain TeX document +without invoking Lua. As a result, the plain TeX document becomes more portable, but +further changes in the order and the content of markdown documents will +not be reflected. It defaults to false.

    +

    The standard usage of the finalizeCache +and frozenCache options is as follows:

      -
    1. Remove the cacheDir cache directory with stale auxiliary cache files.
    2. +
    3. Remove the cacheDir cache directory +with stale auxiliary cache files.
    4. Enable the finalizeCache option.
    5. -
    6. Typeset the plain TeX document to populate and finalize the cache.
    7. +
    8. Typeset the plain TeX document +to populate and finalize the cache.
    9. Enable the \markdownOptionFrozenCache option.
    10. -
    11. Publish the source code of the plain TeX document and the cacheDir directory.
    12. +
    13. Publish the source code of the plain TeX document and the +cacheDir directory.
    -

    For more information, see the examples for the finalizeCache option.

    -

    2.2.2.3 File and Directory Names

    -

    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:

    +

    For more information, see the examples for the +finalizeCache option.

    +

    2.2.2.3 File and Directory +Names

    +

    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:

    • \markdownOptionHelperScriptFileName,
    • \markdownOptionInputTempFileName,
    • @@ -4277,313 +5992,495 @@ Thomas,Edison,1847
    • \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:

    -
    \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}
    -\markdownBegin
    -Hello *world*!
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    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:

    +

    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:

    +
    \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}
    +\markdownBegin
    +Hello *world*!
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    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:

    -
    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.

    -

    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.

    -

    2.2.2.4 Package Documentation

    -

    The \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 by Frank Mittelbach. The recognized values of the macro are true (discard) and false (retain). It defaults to false.

    -

    Using a text editor, create a text document named document.dtx with the following content:

    -
    % \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:

    -
    lualatex document.dtx
    -

    A PDF document named document.pdf should be produced and contain the text “Hello world!”

    -

    2.2.3 LaTeX

    -

    LaTeX options allow us to disable the redefinition of the default renderer prototypes from plain TeX, load user-defined themes, and invoke user-defined setup snippets.

    -

    2.2.3.1 Setting Lua and plain TeX options from LaTeX

    -

    As a rule of thumb, we can set all Lua options directly from LaTeX. For example, to set the taskLists Lua option to true, we would include the following code in our LaTeX document:

    -
    \markdownSetup{
    -  taskLists = true,
    -}
    -

    We can also set all plain TeX options directly from LaTeX. For example, to set the \markdownOptionHelperScriptFileName plain TeX option to helper-script.lua, we would inclde the following code in our LaTeX document:

    -
    \markdownSetup{
    -  helperScriptFileName = helper-script.lua,
    -}
    -

    2.2.3.2 No default token renderer prototypes

    -

    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 and prevent the soft 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.

    -
    \usepackage[plain]{markdown}
    -

    2.2.3.3 LaTeX themes

    -

    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.

    -

    For example, to load themes named witiko/beamer/MU and witiko/dot, you would use the following code in the preamble of your document:

    -
    \usepackage[
    -  theme = witiko/beamer/MU,
    -  theme = witiko/dot,
    -]{markdown}
    -

    Due to limitations of LaTeX, themes may not be loaded after the beginning of a LaTeX document.

    +

    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:

    +
    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.

    +

    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.

    +

    2.2.2.4 Package Documentation

    +

    The \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 by Frank +Mittelbach. The recognized values of the macro are true +(discard) and false (retain). It defaults to +false.

    +

    Using a text editor, create a text document named +document.dtx with the following content:

    +
    % \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:

    +
    lualatex document.dtx
    +

    A PDF document named document.pdf should be produced and +contain the text “Hello world!”

    +

    2.2.3 LaTeX

    +

    LaTeX options allow +us to disable the redefinition of the default renderer prototypes from +plain TeX, load user-defined themes, +and invoke user-defined setup snippets.

    +

    2.2.3.1 Setting Lua and plain TeX options from LaTeX

    +

    As a rule of thumb, we can set all Lua options directly from LaTeX. For example, to set +the taskLists Lua option to +true, we would include the following code in our LaTeX document:

    +
    \markdownSetup{
    +  taskLists = true,
    +}
    +

    We can also set all plain TeX +options directly from LaTeX. For example, to set +the \markdownOptionHelperScriptFileName plain TeX option to +helper-script.lua, we would inclde the following code in +our LaTeX document:

    +
    \markdownSetup{
    +  helperScriptFileName = helper-script.lua,
    +}
    +

    2.2.3.2 No default token renderer +prototypes

    +

    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 and prevent the soft +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.

    +
    \usepackage[plain]{markdown}
    +

    2.2.3.3 LaTeX themes

    +

    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.

    +

    For example, to load themes named witiko/beamer/MU and +witiko/dot, you would use the following code in the +preamble of your document:

    +
    \usepackage[
    +  theme = witiko/beamer/MU,
    +  theme = witiko/dot,
    +]{markdown}
    +

    Due to limitations of LaTeX, themes may not be +loaded after the beginning of a LaTeX document.

    Example themes provided with the Markdown package include:

    witiko/dot
    -

    A theme that typesets fenced code blocks with the dot … infostring as images of directed graphs rendered by the Graphviz tools. The right tail of the infostring is used as the image title. The theme requires a Unix-like operating system with GNU Diffutils and Graphviz installed. The theme also requires shell access unless the \markdownOptionFrozenCache plain TeX option is enabled.

    +
    +

    A theme that typesets fenced code blocks with the dot … +infostring as images of directed graphs rendered by the Graphviz tools. +The right tail of the infostring is used as the image title. The theme +requires a Unix-like operating system with GNU Diffutils and Graphviz +installed. The theme also requires shell access unless the +\markdownOptionFrozenCache plain TeX option is enabled.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[theme=witiko/dot]{markdown}
    -\setkeys{Gin}{
    -  width=\columnwidth,
    -  height=0.65\paperheight,
    -  keepaspectratio}
    -\begin{document}
    -\begin{markdown}
    -``` dot Various formats of mathemathical formulae
    -digraph tree {
    -  margin = 0;
    -  rankdir = "LR";
    -
    -  latex -> pmml;
    -  latex -> cmml;
    -  pmml -> slt;
    -  cmml -> opt;
    -  cmml -> prefix;
    -  cmml -> infix;
    -  pmml -> mterms [style=dashed];
    -  cmml -> mterms;
    -
    -  latex [label = "LaTeX"];
    -  pmml [label = "Presentation MathML"];
    -  cmml [label = "Content MathML"];
    -  slt [label = "Symbol Layout Tree"];
    -  opt [label = "Operator Tree"];
    -  prefix [label = "Prefix"];
    -  infix [label = "Infix"];
    -  mterms [label = "M-Terms"];
    -}
    -```
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain a drawing of a directed graph similar to Figure 1 from the following conference article:

    -
    -

    NOVOTNÝ, Vít, Petr SOJKA, Michal ŠTEFÁNIK and Dávid LUPTÁK. Three is Better than One: Ensembling Math Information Retrieval Systems. CEUR Workshop Proceedings. Thessaloniki, Greece: M. Jeusfeld c/o Redaktion Sun SITE, Informatik V, RWTH Aachen., 2020, vol. 2020, No 2696, p. 1-30. ISSN 1613-0073. http://ceur-ws.org/Vol-2696/paper_235.pdf

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[theme=witiko/dot]{markdown}
    +\setkeys{Gin}{
    +  width=\columnwidth,
    +  height=0.65\paperheight,
    +  keepaspectratio}
    +\begin{document}
    +\begin{markdown}
    +``` dot Various formats of mathemathical formulae
    +digraph tree {
    +  margin = 0;
    +  rankdir = "LR";
    +
    +  latex -> pmml;
    +  latex -> cmml;
    +  pmml -> slt;
    +  cmml -> opt;
    +  cmml -> prefix;
    +  cmml -> infix;
    +  pmml -> mterms [style=dashed];
    +  cmml -> mterms;
    +
    +  latex [label = "LaTeX"];
    +  pmml [label = "Presentation MathML"];
    +  cmml [label = "Content MathML"];
    +  slt [label = "Symbol Layout Tree"];
    +  opt [label = "Operator Tree"];
    +  prefix [label = "Prefix"];
    +  infix [label = "Infix"];
    +  mterms [label = "M-Terms"];
    +}
    +```
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain a drawing of a directed graph similar to Figure 1 from the +following conference article:

    +
    +

    NOVOTNÝ, Vít, Petr SOJKA, Michal ŠTEFÁNIK and Dávid LUPTÁK. Three is +Better than One: Ensembling Math Information Retrieval Systems. CEUR +Workshop Proceedings. Thessaloniki, Greece: M. Jeusfeld c/o +Redaktion Sun SITE, Informatik V, RWTH Aachen., 2020, vol. 2020, No +2696, p. 1-30. ISSN 1613-0073. http://ceur-ws.org/Vol-2696/paper_235.pdf

    witiko/graphicx/http
    -

    A theme that adds support for downloading images whose URL has the http or https protocol. The theme requires the catchfile LaTeX package and a Unix-like operating system with GNU Coreutils md5sum and either GNU Wget or cURL installed. The theme also requires shell access unless the \markdownOptionFrozenCache plain TeX option is enabled.

    +
    +

    A theme that adds support for downloading images whose URL has the +http or https protocol. The theme requires the +catchfile LaTeX package and a Unix-like +operating system with GNU Coreutils md5sum and either GNU +Wget or cURL installed. The theme also requires shell access unless the +\markdownOptionFrozenCache plain TeX option is enabled.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[theme=witiko/graphicx/http]{markdown}
    -\begin{document}
    -\begin{markdown}
    -![img](https://github.com/witiko/markdown/raw/main/markdown.png
    -       "The banner of the Markdown package")
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following image:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[theme=witiko/graphicx/http]{markdown}
    +\begin{document}
    +\begin{markdown}
    +![img](https://github.com/witiko/markdown/raw/main/markdown.png
    +       "The banner of the Markdown package")
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following image:

    -
    img
    +img +
    witiko/tilde
    -

    A theme that makes tilde (~) always typeset the non-breaking space even when the hybrid Lua option is disabled.

    +
    +

    A theme that makes tilde (~) always typeset the +non-breaking space even when the hybrid +Lua option is disabled.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[theme=witiko/tilde]{markdown}
    -\begin{document}
    -\begin{markdown}
    -Bartel~Leendert van~der~Waerden
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    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:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[theme=witiko/tilde]{markdown}
    +\begin{document}
    +\begin{markdown}
    +Bartel~Leendert van~der~Waerden
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    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

    -

    2.2.3.4 LaTeX setup snippets

    -

    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 setup snippets provide syntactic sugar for defining and invoking various options locally.

    -

    Here is how we can use setup snippets to store options and invoke them later:

    -
    \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*}
    -

    2.3 Markdown Tokens

    -

    A key feature of the Markdown package is the support for manipulating markdown tokens, such as headings, emphasized text, links, and lists, in TeX. Instead of reducing TeX to a PDF document producer, the Markdown package allows the user to specify how every markdown token should be processed and rendered.

    -

    2.3.1 Token Renderers

    -

    Token renderers are user-defined TeX macros, which render markdown tokens. In this section, I will describe the individual token renderers.

    -

    2.3.1.1 Tickbox Renderers

    -

    The macros named \markdownRendererTickedBox, \markdownRendererHalfTickedBox, and \markdownRendererUntickedBox represent ticked and unticked boxes, respectively. These macros will either be produced, when the taskLists option is enabled, or 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.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[taskLists]{markdown}
    -\markdownSetup{
    -  renderers = {
    -    untickedBox = No,
    -    tickedBox = Yes,
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -- [ ] you can't.
    -- [x] I can!
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    2.2.3.4 LaTeX setup snippets

    +

    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 setup snippets provide +syntactic sugar for defining and invoking various options locally.

    +

    Here is how we can use setup snippets to store options and invoke +them later:

    +
    \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*}
    +

    2.3 Markdown Tokens

    +

    A key feature of the Markdown package is the support for manipulating +markdown tokens, such as headings, emphasized text, links, and lists, in +TeX. Instead of reducing TeX to a PDF document producer, the +Markdown package allows the user to specify how every markdown token +should be processed and rendered.

    +

    2.3.1 Token Renderers

    +

    Token renderers are user-defined TeX macros, which render markdown tokens. +In this section, I will describe the individual token renderers.

    +

    2.3.1.1 Tickbox Renderers

    +

    The macros named \markdownRendererTickedBox, +\markdownRendererHalfTickedBox, and +\markdownRendererUntickedBox represent ticked and unticked +boxes, respectively. These macros will either be produced, when the +taskLists option is enabled, or 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.

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[taskLists]{markdown}
    +\markdownSetup{
    +  renderers = {
    +    untickedBox = No,
    +    tickedBox = Yes,
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +- [ ] you can't.
    +- [x] I can!
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    • No you can’t.
    • Yes I can!
    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[taskLists = yes]
    -\def\markdownRendererUntickedBox{No}
    -\def\markdownRendererTickedBox{Yes}
    -\starttext
    -\startmarkdown
    -- [ ] you can't.
    -- [x] I can!
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[taskLists = yes]
    +\def\markdownRendererUntickedBox{No}
    +\def\markdownRendererTickedBox{Yes}
    +\starttext
    +\startmarkdown
    +- [ ] you can't.
    +- [x] I can!
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    • No you can’t.
    • Yes I can!
    -

    2.3.1.2 Markdown Document Renderers

    -

    The \markdownRendererDocumentBegin and \markdownRendererDocumentEnd macros represent the beginning and the end of a markdown document. The macros receive no arguments.

    -

    A TeX document may contain any number of markdown documents. Additionally, markdown documents may appear not only in a sequence, but several markdown documents may also be nested. Redefinitions of the macros should take this into account.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named nested.md with the following content:

    -
    This is a *nested* markdown document.
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[contentBlocks]{markdown}
    -\markdownSetup{
    -  renderers = {
    -    contentBlock = {%
    -      \markdownInput{#3}%
    -    },
    -    documentBegin = {%
    -      \par
    -      \emph{(The beginning of a document)}
    -      \par
    -      \begingroup
    -      \markdownSetup{snippet=first-nesting-level}%
    -    },
    -    documentEnd = {%
    -      \endgroup
    -      \par
    -      \emph{(The end of a document)}
    -      \par
    -    },
    -  },
    -}
    -\markdownSetupSnippet{first-nesting-level}{
    -  renderers = {
    -    documentBegin = {
    -      \par
    -      \emph{(The beginning of a nested document)}
    -      \par
    -      \begingroup
    -      \markdownSetup{snippet=second-nesting-level-and-below}
    -    },
    -  },
    -}
    -\markdownSetupSnippet{second-nesting-level-and-below}{
    -  renderers = {
    -    documentBegin = {
    -      \par
    -      \emph{(The beginning of a nested document)}
    -      \par
    -      \begingroup
    -    },
    -    documentEnd = {
    -      \endgroup
    -      \par
    -      \emph{(The end of a nested document)}
    -      \par
    -    },
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -Hello *world*!
    -
    -/nested.md
    -
    -_Foo_ bar!
    -\end{markdown}
    -\begin{markdown}
    -
    -Bar baz!
    -
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    2.3.1.2 Markdown Document +Renderers

    +

    The \markdownRendererDocumentBegin and +\markdownRendererDocumentEnd macros represent the beginning +and the end of a markdown document. The macros receive no +arguments.

    +

    A TeX document may contain any +number of markdown documents. Additionally, markdown documents may +appear not only in a sequence, but several markdown documents may also +be nested. Redefinitions of the macros should take this into +account.

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +nested.md with the following content:

    +
    This is a *nested* markdown document.
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[contentBlocks]{markdown}
    +\markdownSetup{
    +  renderers = {
    +    contentBlock = {%
    +      \markdownInput{#3}%
    +    },
    +    documentBegin = {%
    +      \par
    +      \emph{(The beginning of a document)}
    +      \par
    +      \begingroup
    +      \markdownSetup{snippet=first-nesting-level}%
    +    },
    +    documentEnd = {%
    +      \endgroup
    +      \par
    +      \emph{(The end of a document)}
    +      \par
    +    },
    +  },
    +}
    +\markdownSetupSnippet{first-nesting-level}{
    +  renderers = {
    +    documentBegin = {
    +      \par
    +      \emph{(The beginning of a nested document)}
    +      \par
    +      \begingroup
    +      \markdownSetup{snippet=second-nesting-level-and-below}
    +    },
    +  },
    +}
    +\markdownSetupSnippet{second-nesting-level-and-below}{
    +  renderers = {
    +    documentBegin = {
    +      \par
    +      \emph{(The beginning of a nested document)}
    +      \par
    +      \begingroup
    +    },
    +    documentEnd = {
    +      \endgroup
    +      \par
    +      \emph{(The end of a nested document)}
    +      \par
    +    },
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +Hello *world*!
    +
    +/nested.md
    +
    +_Foo_ bar!
    +\end{markdown}
    +\begin{markdown}
    +
    +Bar baz!
    +
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    (The beginning of a document)

    Hello world!

    @@ -4596,664 +6493,937 @@ Thomas,Edison,1847

    Bar baz!

    (The end of a document)

    -

    2.3.1.3 Interblock Separator Renderer

    -

    The \markdownRendererInterblockSeparator macro represents a separator between two markdown block elements. The macro receives no arguments.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownRendererInterblockSeparator{%
    -  \par
    -  {\it(The end of a block)}%
    -  \par
    -}
    -\markdownBegin
    -Hello *world*!
    -
    -_Foo_ bar!
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    2.3.1.3 Interblock Separator +Renderer

    +

    The \markdownRendererInterblockSeparator macro +represents a separator between two markdown block elements. The macro +receives no arguments.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownRendererInterblockSeparator{%
    +  \par
    +  {\it(The end of a block)}%
    +  \par
    +}
    +\markdownBegin
    +Hello *world*!
    +
    +_Foo_ bar!
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Hello world!

    (The end of a block)

    Foo bar!

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage{markdown}
    -\markdownSetup{
    -  renderers = {
    -    interblockSeparator = {%
    -      \par
    -      \emph{(The end of a block)}%
    -      \par
    -    },
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -Hello *world*!
    -
    -_Foo_ bar!
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage{markdown}
    +\markdownSetup{
    +  renderers = {
    +    interblockSeparator = {%
    +      \par
    +      \emph{(The end of a block)}%
    +      \par
    +    },
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +Hello *world*!
    +
    +_Foo_ bar!
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Hello world!

    (The end of a block)

    Foo bar!

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\def\markdownRendererInterblockSeparator{%
    -  \par
    -  \emph{(The end of a block)}%
    -  \par
    -}
    -\starttext
    -\startmarkdown
    -Hello *world*!
    -
    -_Foo_ bar!
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\def\markdownRendererInterblockSeparator{%
    +  \par
    +  \emph{(The end of a block)}%
    +  \par
    +}
    +\starttext
    +\startmarkdown
    +Hello *world*!
    +
    +_Foo_ bar!
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Hello world!

    (The end of a block)

    Foo bar!

    -

    2.3.1.4 Line Break Renderer

    -

    The \markdownRendererLineBreak macro represents a forced line break. The macro receives no arguments.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownRendererLineBreak{%
    -  \par
    -  {\it(A forced linebreak)}%
    -  \par
    -}
    -\markdownInput{example.md}
    -\bye
    -

    Using a text editor, create a text document named example.md with the following content. Note the two spaces at the end of the first line, which specify a hard linebreak. Due to the limitations of the TeX input processor, hard linebreaks would be ignored if we typed them directly into the document.tex document.

    +

    2.3.1.4 Line Break Renderer

    +

    The \markdownRendererLineBreak macro represents a forced +line break. The macro receives no arguments.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownRendererLineBreak{%
    +  \par
    +  {\it(A forced linebreak)}%
    +  \par
    +}
    +\markdownInput{example.md}
    +\bye
    +

    Using a text editor, create a text document named +example.md with the following content. Note the two spaces +at the end of the first line, which specify a hard linebreak. Due to the +limitations of the TeX input +processor, hard linebreaks would be ignored if we typed them directly +into the document.tex document.

    Hello world!  
    _Foo_ bar!

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Hello world!

    (A forced linebreak)

    Foo bar!

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage{markdown}
    -\markdownSetup{
    -  renderers = {
    -    lineBreak = {%
    -      \par
    -      \emph{(A forced linebreak)}%
    -      \par
    -    },
    -  },
    -}
    -\begin{document}
    -\markdownInput{example.md}
    -\end{document}
    -

    Using a text editor, create a text document named example.md with the following content. Note the two spaces at the end of the first line, which specify a hard linebreak. Due to the limitations of the TeX input processor, hard linebreaks would be ignored if we typed them directly into the document.tex document.

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage{markdown}
    +\markdownSetup{
    +  renderers = {
    +    lineBreak = {%
    +      \par
    +      \emph{(A forced linebreak)}%
    +      \par
    +    },
    +  },
    +}
    +\begin{document}
    +\markdownInput{example.md}
    +\end{document}
    +

    Using a text editor, create a text document named +example.md with the following content. Note the two spaces +at the end of the first line, which specify a hard linebreak. Due to the +limitations of the TeX input +processor, hard linebreaks would be ignored if we typed them directly +into the document.tex document.

    Hello world!  
    _Foo_ bar!

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Hello world!

    (A forced linebreak)

    Foo bar!

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\def\markdownRendererLineBreak{%
    -  \par
    -  \emph{(A forced linebreak)}%
    -  \par
    -}
    -\starttext
    -\markdownInput{example.md}
    -\stoptext
    -

    Using a text editor, create a text document named example.md with the following content. Note the two spaces at the end of the first line, which specify a hard linebreak. Due to the limitations of the TeX input processor, hard linebreaks would be ignored if we typed them directly into the document.tex document.

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\def\markdownRendererLineBreak{%
    +  \par
    +  \emph{(A forced linebreak)}%
    +  \par
    +}
    +\starttext
    +\markdownInput{example.md}
    +\stoptext
    +

    Using a text editor, create a text document named +example.md with the following content. Note the two spaces +at the end of the first line, which specify a hard linebreak. Due to the +limitations of the TeX input +processor, hard linebreaks would be ignored if we typed them directly +into the document.tex document.

    Hello world!  
    _Foo_ bar!

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Hello world!

    (A forced linebreak)

    Foo bar!

    -

    2.3.1.5 Ellipsis Renderer

    -

    The \markdownRendererEllipsis macro replaces any occurance of ASCII ellipses in the input text. This macro will only be produced, when the smartEllipses option is enabled. The macro receives no arguments.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownOptionSmartEllipses{true}
    -\def\markdownRendererEllipsis{{\it SHAZAM}!}
    -\markdownBegin
    -The secret word is ...
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    2.3.1.5 Ellipsis Renderer

    +

    The \markdownRendererEllipsis macro replaces any +occurance of ASCII ellipses in the input text. This macro will only be +produced, when the smartEllipses option is +enabled. The macro receives no arguments.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownOptionSmartEllipses{true}
    +\def\markdownRendererEllipsis{{\it SHAZAM}!}
    +\markdownBegin
    +The secret word is ...
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    The secret word is SHAZAM!

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[smartEllipses]{markdown}
    -\markdownSetup{
    -  renderers = {
    -    ellipsis = \emph{SHAZAM}!,
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -The secret word is ...
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[smartEllipses]{markdown}
    +\markdownSetup{
    +  renderers = {
    +    ellipsis = \emph{SHAZAM}!,
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +The secret word is ...
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    The secret word is SHAZAM!

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[smartEllipses = yes]
    -\def\markdownRendererEllipsis{\emph{SHAZAM}!}
    -\starttext
    -\startmarkdown
    -The secret word is ...
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[smartEllipses = yes]
    +\def\markdownRendererEllipsis{\emph{SHAZAM}!}
    +\starttext
    +\startmarkdown
    +The secret word is ...
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Hello world!

    (The end of a block)

    Foo bar!

    -

    2.3.1.6 Non-Breaking Space Renderer

    -

    The \markdownRendererNbsp macro represents a non-breaking space.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.bib with the following content:

    -
    @book{knuth:tex,
    -  author    = "Knuth, Donald Ervin",
    -  title     = "The \TeX book, volume A of Computers and typesetting",
    -  publisher = "Addison-Wesley",
    -  year      = "1984"
    -}
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[
    -  citations,
    -  citationNbsps,
    -]{markdown}
    -\markdownSetup{
    -  renderers = {
    -    nbsp = {$\cdot$},
    -  },
    -}
    -\begin{document}
    -
    -\begin{markdown}
    -The TeXbook [@knuth:tex, p. 123 and 130] is good.
    -\end{markdown}
    -
    -\bibliographystyle{plain}
    -\bibliography{document.bib}
    -
    -\end{document}
    +

    2.3.1.6 Non-Breaking Space +Renderer

    +

    The \markdownRendererNbsp macro represents a +non-breaking space.

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.bib with the following content:

    +
    @book{knuth:tex,
    +  author    = "Knuth, Donald Ervin",
    +  title     = "The \TeX book, volume A of Computers and typesetting",
    +  publisher = "Addison-Wesley",
    +  year      = "1984"
    +}
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[
    +  citations,
    +  citationNbsps,
    +]{markdown}
    +\markdownSetup{
    +  renderers = {
    +    nbsp = {$\cdot$},
    +  },
    +}
    +\begin{document}
    +
    +\begin{markdown}
    +The TeXbook [@knuth:tex, p. 123 and 130] is good.
    +\end{markdown}
    +
    +\bibliographystyle{plain}
    +\bibliography{document.bib}
    +
    +\end{document}

    Next, invoke LuaTeX and BibTeX from the terminal:

    -
    lualatex document.tex
    -bibtex document.aux
    -lualatex document.tex
    -lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    lualatex document.tex
    +bibtex document.aux
    +lualatex document.tex
    +lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    The TeXbook [1, p.·123·and·130] is good.

    References

    -

    1 Donald Ervin Knuth. The TeXbook, volume A of Computers and typesetting. Addison-Wesley, 1984.

    -
    -

    2.3.1.7 Special Character Renderers

    -

    The following macros replace any special plain TeX characters, including the active pipe character (|) of ConTeXt, in the input text:

    +

    1 +Donald Ervin Knuth. The TeXbook, volume A of Computers and +typesetting. Addison-Wesley, 1984.

    +
    +

    2.3.1.7 Special Character +Renderers

    +

    The following macros replace any special plain TeX characters, including the active pipe +character (|) of ConTeXt, in the input text:

      -
    • \markdownRendererAmpersand replaces the ampersand (&).
    • -
    • \markdownRendererBackslash replaces the backslash (\).
    • -
    • \markdownRendererCircumflex replaces the circumflex (^).
    • -
    • \markdownRendererDollarSign replaces the dollar sign ($).
    • -
    • \markdownRendererHash replaces the hash sign (#).
    • -
    • \markdownRendererLeftBrace replaces the left brace ({).
    • -
    • \markdownRendererPercentSign replaces the percent sign (%).
    • -
    • \markdownRendererPipe replaces the pipe character (|).
    • -
    • \markdownRendererRightBrace replaces the right brace (}).
    • -
    • \markdownRendererTilde replaces the tilde (~).
    • -
    • \markdownRendererUnderscore replaces the underscore (_).
    • +
    • \markdownRendererAmpersand replaces the ampersand +(&).
    • +
    • \markdownRendererBackslash replaces the backslash +(\).
    • +
    • \markdownRendererCircumflex replaces the circumflex +(^).
    • +
    • \markdownRendererDollarSign replaces the dollar sign +($).
    • +
    • \markdownRendererHash replaces the hash sign +(#).
    • +
    • \markdownRendererLeftBrace replaces the left brace +({).
    • +
    • \markdownRendererPercentSign replaces the percent sign +(%).
    • +
    • \markdownRendererPipe replaces the pipe character +(|).
    • +
    • \markdownRendererRightBrace replaces the right brace +(}).
    • +
    • \markdownRendererTilde replaces the tilde +(~).
    • +
    • \markdownRendererUnderscore replaces the underscore +(_).
    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content. We will make the tilde behave as if it were written in TeX, where it represents a non-breaking space.

    -
    \input markdown
    -\def\markdownRendererTilde{~}
    -\markdownBegin
    -Bartel~Leendert van~der~Waerden
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    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:

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content. We will make the +tilde behave as if it were written in TeX, where it represents a non-breaking +space.

    +
    \input markdown
    +\def\markdownRendererTilde{~}
    +\markdownBegin
    +Bartel~Leendert van~der~Waerden
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    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:

    Bartel·Leendert van·der·Waerden

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content. We will make the tilde behave as if it were written in TeX, where it represents a non-breaking space.

    -
    \documentclass{article}
    -\usepackage{markdown}
    -\markdownSetup{
    -  renderers = {
    -    tilde = ~,
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -Bartel~Leendert van~der~Waerden
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    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:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content. We will make the +tilde behave as if it were written in TeX, where it represents a non-breaking +space.

    +
    \documentclass{article}
    +\usepackage{markdown}
    +\markdownSetup{
    +  renderers = {
    +    tilde = ~,
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +Bartel~Leendert van~der~Waerden
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    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

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content. We will make the tilde behave as if it were written in TeX, where it represents a non-breaking space.

    -
    \usemodule[t][markdown]
    -\def\markdownRendererTilde{~}
    -\starttext
    -\startmarkdown
    -Bartel~Leendert van~der~Waerden
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text, where the middot (·) denotes a non-breaking space:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content. We will make the +tilde behave as if it were written in TeX, where it represents a non-breaking +space.

    +
    \usemodule[t][markdown]
    +\def\markdownRendererTilde{~}
    +\starttext
    +\startmarkdown
    +Bartel~Leendert van~der~Waerden
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context 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

    -

    2.3.1.8 Code Span Renderer

    -

    The \markdownRendererCodeSpan macro represents inlined code span in the input text. It receives a single argument that corresponds to the inlined code span.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\input lmfonts
    -
    -\def\markdownRendererCodeSpan#1{#1}
    -
    -\markdownBegin
    -`$\sqrt{-1}$ *equals* $i$`
    -
    -$\sqrt{-1}$ *equals* $i$
    -\markdownEnd
    -
    -\def\markdownOptionHybrid{true}
    -\markdownBegin
    -$\sqrt{-1}$ *equals* $i$
    -\markdownEnd
    -
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    2.3.1.8 Code Span Renderer

    +

    The \markdownRendererCodeSpan macro represents inlined +code span in the input text. It receives a single argument that +corresponds to the inlined code span.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\input lmfonts
    +
    +\def\markdownRendererCodeSpan#1{#1}
    +
    +\markdownBegin
    +`$\sqrt{-1}$ *equals* $i$`
    +
    +$\sqrt{-1}$ *equals* $i$
    +\markdownEnd
    +
    +\def\markdownOptionHybrid{true}
    +\markdownBegin
    +$\sqrt{-1}$ *equals* $i$
    +\markdownEnd
    +
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    $\sqrt{-1}$ *equals* $i$.

    $\sqrt{-1}$ equals $i$.

    √-̅1̅ equals i.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[smartEllipses]{markdown}
    -\markdownSetup{
    -  renderers = {
    -    codeSpan = {#1},
    -  },
    -}
    -\begin{document}
    -
    -\begin{markdown}
    -`$\sqrt{-1}$ *equals* $i$`
    -
    -$\sqrt{-1}$ *equals* $i$
    -\end{markdown}
    -
    -\begin{markdown*}{hybrid}
    -$\sqrt{-1}$ *equals* $i$
    -\end{markdown*}
    -
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[smartEllipses]{markdown}
    +\markdownSetup{
    +  renderers = {
    +    codeSpan = {#1},
    +  },
    +}
    +\begin{document}
    +
    +\begin{markdown}
    +`$\sqrt{-1}$ *equals* $i$`
    +
    +$\sqrt{-1}$ *equals* $i$
    +\end{markdown}
    +
    +\begin{markdown*}{hybrid}
    +$\sqrt{-1}$ *equals* $i$
    +\end{markdown*}
    +
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    $\sqrt{-1}$ *equals* $i$.

    $\sqrt{-1}$ equals $i$.

    √-̅1̅ equals i.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\def\markdownRendererCodeSpan#1{#1}
    -\starttext
    -
    -\startmarkdown
    -`$\sqrt{-1}$ *equals* $i$`
    -
    -$\sqrt{-1}$ *equals* $i$
    -\stopmarkdown
    -
    -\setupmarkdown[hybrid = yes]
    -\startmarkdown
    -$\sqrt{-1}$ *equals* $i$
    -\stopmarkdown
    -
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\def\markdownRendererCodeSpan#1{#1}
    +\starttext
    +
    +\startmarkdown
    +`$\sqrt{-1}$ *equals* $i$`
    +
    +$\sqrt{-1}$ *equals* $i$
    +\stopmarkdown
    +
    +\setupmarkdown[hybrid = yes]
    +\startmarkdown
    +$\sqrt{-1}$ *equals* $i$
    +\stopmarkdown
    +
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    $\sqrt{-1}$ *equals* $i$.

    $\sqrt{-1}$ equals $i$.

    √-̅1̅ equals i.

    - -

    The \markdownRendererLink macro represents a hyperlink. It receives four arguments: the label, the fully escaped uri that can be directly typeset, the raw uri that can be used outside typesetting, and the title of the link.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownRendererLink#1#2#3#4{%
    -  #1 {\tt#2} titled {\it#4}%
    -}
    -\markdownBegin
    -Please visit [the link][ctan].
    -
    - [ctan]: https://ctan.org/
    -         (the Comprehensive TeX Archive Network)
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    Please visit the link https://ctan.org/ titled the Comprehensive TeX Archive Network.

    -
    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage{markdown}
    -\markdownSetup{
    -  renderers = {
    -    link = {%
    -      #1 \texttt{#2} titled \emph{#4}%
    -    },
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -Please visit [the link][ctan].
    -
    - [ctan]: https://ctan.org/
    -         (the Comprehensive TeX Archive Network)
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    Please visit the link https://ctan.org/ titled the Comprehensive TeX Archive Network.

    -
    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\def\markdownRendererLink#1#2#3#4{%
    -  #1 {\tt#2} titled \emph{#4}%
    -}
    -\starttext
    -\startmarkdown
    -Please visit [the link][ctan].
    -
    - [ctan]: https://ctan.org/
    -         (the Comprehensive TeX Archive Network)
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    Please visit the link https://ctan.org/ titled the Comprehensive TeX Archive Network.

    -
    -

    2.3.1.10 Image Renderer

    -

    The \markdownRendererImage macro represents an image. It receives four arguments: the label, the fully escaped uri that can be directly typeset, the raw uri that can be used outside typesetting, and the title of the link.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage{markdown}
    -\begingroup
    -\catcode`\@=11
    -\catcode`\%=12
    -\catcode`\^^A=14
    -\global\def\markdownRendererImage#1#2#3#4{^^A
    -  \immediate\write18{^^A
    -
        if printf '%s' "#3" | grep -q ^http; then
    -      OUTPUT="$(printf '%s' "#3" | md5sum | cut -d' ' -f1).^^A
    -              $(printf '%s' "#3" | sed 's/.*[.]//')";
    -      if ! [ -e "$OUTPUT" ]; then
    -        wget -O "$OUTPUT" '#3' || rm "$OUTPUT";
    -        convert "$OUTPUT" png:"$OUTPUT";
    -      fi;
    -      printf '%s%%' "$OUTPUT" > \jobname.fetched;
    -    else
    -      printf '%s%%' "#3"      > \jobname.fetched;
    -    fi^^A
    -
      }^^A
    -  {^^A
    -    \everyeof={\noexpand}^^A
    -    \edef\filename{\__markdowninput"\jobname.fetched" }^^A
    -    \includegraphics[width=\textwidth]{\filename}^^A
    -  }^^A
    -}
    -\endgroup
    -\begin{document}
    -\begin{markdown}
    -![TUGboat](https://tug.org/tugboat/noword.jpg)
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex --shell-escape document.tex
    -

    A PDF document named document.pdf 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 of the current user. It also assumes that the md5sum, wget, and convert binaries are installed and that the TeX engine has shell access.

    -
    -

    -
    -

    2.3.1.11 Content Block Renderers

    -

    The \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 uri that can be directly typeset, the raw uri that can be used outside typesetting, and the title of the content block.

    -

    The \markdownRendererContentBlockOnlineImage macro represents an iA Writer online image content block. The macro receives the same arguments as \markdownRendererContentBlock.

    -

    The \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 kpathsea contains a record (k, v), then a non-online-image content block with the filename extension s, s:lower() = k is considered to be in a known programming language v. The macro receives five arguments: the local file name extension s cast to the lower case, the language v, the fully escaped uri that can be directly typeset, the raw uri that can be used outside typesetting, and the title of the content block.

    -

    Note that you will need to place place a markdown-languages.json file inside your working directory or inside your local TeX directory structure. In this file, you will define a mapping between filename extensions and the language names recognized by your favorite syntax highlighter; there may exist other creative uses beside syntax highlighting. The Languages.json file provided by Anton Sotkov is a good starting point.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownOptionContentBlocks{true}
    -\def\markdownRendererContentBlock#1#2#3#4{%
    -  This is {\tt #2}, #4.
    -}
    -\def\markdownRendererContentBlockOnlineImage#1#2#3#4{%
    -  This is the image {\tt #2}, #4.
    -}
    -\def\markdownRendererContentBlockCode#1#2#3#4#5{%
    -  This is the #2 (\uppercase{#1}) document {\tt #3}, #5.
    -}
    -\markdownBegin
    -/document.tex (the document that we are currently typesetting)
    -/markdown-languages.json (the mapping between filename extensions
    -                          and programming language names)
    -https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)
    -\markdownEnd
    -\bye
    -

    Create also a text document named markdown-languages.json with the following content:

    -
    {
    -  "json": "JavaScript Object Notation",
    -}
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    This is document.tex, the document that we are currently typesetting.

    -

    This is the JavaScript Object Notation (JSON) document markdown-languages.json, the mapping between filename extensions and programming language names.

    -

    This is the image https://tug.org/tugboat/noword.jpg, the logotype of TUGboat.

    -
    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\begin{filecontents}[overwrite,nosearch,noheader]{markdown-languages.json}
    -{
    -  "json": "JavaScript Object Notation",
    -}
    -\end{filecontents}
    -\usepackage[contentBlocks]{markdown}
    -\markdownSetup{
    -  renderers = {
    -    contentBlock = {This is \texttt{#2}, #4.},
    -    contentBlockOnlineImage = {This is the image \texttt{#2}, #4.},
    -    contentBlockCode = {%
    -      This is the #2 (\MakeUppercase{#1}) document \texttt{#3}, #5.
    -    },
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -/document.tex (the document that we are currently typesetting)
    -/markdown-languages.json (the mapping between filename extensions
    -                          and programming language names)
    -https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    This is document.tex, the document that we are currently typesetting.

    -

    This is the JavaScript Object Notation (JSON) document markdown-languages.json, the mapping between filename extensions and programming language names.

    -

    This is the image https://tug.org/tugboat/noword.jpg, the logotype of TUGboat.

    -
    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[contentBlocks = yes]
    -\def\markdownRendererContentBlock#1#2#3#4{%
    -  This is {\tt #2}, #4.
    -}
    -\def\markdownRendererContentBlockOnlineImage#1#2#3#4{%
    -  This is the image {\tt #2}, #4.
    -}
    -\def\markdownRendererContentBlockCode#1#2#3#4#5{%
    -  This is the #2 (\uppercase{#1}) document {\tt #3}, #5.
    -}
    -\starttext
    -\startmarkdown
    -/document.tex (the document that we are currently typesetting)
    -/markdown-languages.json (the mapping between filename extensions
    -                          and programming language names)
    -https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)
    -\stopmarkdown
    -\stoptext
    -

    Create also a text document named markdown-languages.json with the following content:

    -
    {
    -  "json": "JavaScript Object Notation",
    -}
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    This is document.tex, the document that we are currently typesetting.

    -

    This is the JavaScript Object Notation (JSON) document markdown-languages.json, the mapping between filename extensions and programming language names.

    -

    This is the image https://tug.org/tugboat/noword.jpg, the logotype of TUGboat.

    -
    -

    2.3.1.12 Bullet List Renderers

    -

    The \markdownRendererUlBegin macro represents the beginning of a bulleted list that contains an item with several paragraphs of text (the list is not tight). The macro receives no arguments.

    -

    The \markdownRendererUlBeginTight macro represents the beginning 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 tightLists option is disabled. The macro receives no arguments.

    -

    The \markdownRendererUlItem macro represents an item in a bulleted list. The macro receives no arguments.

    -

    The \markdownRendererUlItemEnd macro represents the end of an item in a bulleted list. The macro receives no arguments.

    -

    The \markdownRendererUlEnd macro represents the end of a bulleted list that contains an item with several paragraphs of text (the list is not tight). The macro receives no arguments.

    -

    The \markdownRendererUlEndTight macro represents the end 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 tightLists option is disabled. The macro receives no arguments.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownOptionTightLists{true}
    -
    -\def\markdownRendererInterblockSeparator{}
    -\def\markdownRendererUlBeginTight{ (}
    -\def\markdownRendererUlItem{%
    -  \def\markdownRendererUlItem{%
    -    ,
    -    \def\markdownRendererUlItem{, and }%
    -  }%
    -}
    -\def\markdownRendererUlItemEnd{}
    -\def\markdownRendererUlEndTight{).}
    -
    -\markdownBegin
    -This is a tight list
    -
    -- the first item
    -- the second item
    -- the third item
    -\markdownEnd
    -
    -\def\markdownRendererInterblockSeparator{%
    -  :\par
    -  \def\markdownRendererInterblockSeparator{\par}%
    -}
    -\def\markdownRendererUlBegin{}
    -\def\markdownRendererUlItem{--\kern 0.5em}
    -\def\markdownRendererUlItemEnd{.\par}
    -\def\markdownRendererUlEnd{}
    -
    -\markdownBegin
    -This is a loose list
    -
    -- This is the first item
    -
    -- This is the second item
    -
    -- This is the third item
    -\markdownEnd
    -
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    This is a tight list (the first item, the second item, and the third item).

    + +

    The \markdownRendererLink macro represents a hyperlink. +It receives four arguments: the label, the fully escaped +uri that can be directly typeset, the raw uri +that can be used outside typesetting, and the title of the link.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownRendererLink#1#2#3#4{%
    +  #1 {\tt#2} titled {\it#4}%
    +}
    +\markdownBegin
    +Please visit [the link][ctan].
    +
    + [ctan]: https://ctan.org/
    +         (the Comprehensive TeX Archive Network)
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    Please visit the link https://ctan.org/ titled the Comprehensive TeX +Archive Network.

    +
    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage{markdown}
    +\markdownSetup{
    +  renderers = {
    +    link = {%
    +      #1 \texttt{#2} titled \emph{#4}%
    +    },
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +Please visit [the link][ctan].
    +
    + [ctan]: https://ctan.org/
    +         (the Comprehensive TeX Archive Network)
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    Please visit the link https://ctan.org/ titled the Comprehensive TeX +Archive Network.

    +
    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\def\markdownRendererLink#1#2#3#4{%
    +  #1 {\tt#2} titled \emph{#4}%
    +}
    +\starttext
    +\startmarkdown
    +Please visit [the link][ctan].
    +
    + [ctan]: https://ctan.org/
    +         (the Comprehensive TeX Archive Network)
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    Please visit the link https://ctan.org/ titled the Comprehensive TeX +Archive Network.

    +
    +

    2.3.1.10 Image Renderer

    +

    The \markdownRendererImage macro represents an image. It +receives four arguments: the label, the fully escaped uri +that can be directly typeset, the raw uri that can be used +outside typesetting, and the title of the link.

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage{markdown}
    +\begingroup
    +\catcode`\@=11
    +\catcode`\%=12
    +\catcode`\^^A=14
    +\global\def\markdownRendererImage#1#2#3#4{^^A
    +  \immediate\write18{^^A
    +
        if printf '%s' "#3" | grep -q ^http; then
    +      OUTPUT="$(printf '%s' "#3" | md5sum | cut -d' ' -f1).^^A
    +              $(printf '%s' "#3" | sed 's/.*[.]//')";
    +      if ! [ -e "$OUTPUT" ]; then
    +        wget -O "$OUTPUT" '#3' || rm "$OUTPUT";
    +        convert "$OUTPUT" png:"$OUTPUT";
    +      fi;
    +      printf '%s%%' "$OUTPUT" > \jobname.fetched;
    +    else
    +      printf '%s%%' "#3"      > \jobname.fetched;
    +    fi^^A
    +
      }^^A
    +  {^^A
    +    \everyeof={\noexpand}^^A
    +    \edef\filename{\__markdowninput"\jobname.fetched" }^^A
    +    \includegraphics[width=\textwidth]{\filename}^^A
    +  }^^A
    +}
    +\endgroup
    +\begin{document}
    +\begin{markdown}
    +![TUGboat](https://tug.org/tugboat/noword.jpg)
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex --shell-escape document.tex
    +

    A PDF document named document.pdf 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 +of the current user. It also assumes that the md5sum, +wget, and convert binaries are installed and +that the TeX engine has shell +access.

    +
    +

    +
    +

    2.3.1.11 Content Block +Renderers

    +

    The \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 uri that can be directly typeset, the raw +uri that can be used outside typesetting, and the title of +the content block.

    +

    The \markdownRendererContentBlockOnlineImage macro +represents an iA Writer online image content block. The macro receives +the same arguments as \markdownRendererContentBlock.

    +

    The \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 +kpathsea contains a record (k,v), then a +non-online-image content block with the filename extension s, s:lower() = k is considered to be in a known +programming language v. The +macro receives five arguments: the local file name extension s cast to the lower case, the +language v, the fully escaped +uri that can be directly typeset, the raw uri +that can be used outside typesetting, and the title of the content +block.

    +

    Note that you will need to place place a +markdown-languages.json file inside your working directory +or inside your local TeX directory +structure. In this file, you will define a mapping between filename +extensions and the language names recognized by your favorite syntax +highlighter; there may exist other creative uses beside syntax +highlighting. The +Languages.json file provided by Anton Sotkov is a good +starting point.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownOptionContentBlocks{true}
    +\def\markdownRendererContentBlock#1#2#3#4{%
    +  This is {\tt #2}, #4.
    +}
    +\def\markdownRendererContentBlockOnlineImage#1#2#3#4{%
    +  This is the image {\tt #2}, #4.
    +}
    +\def\markdownRendererContentBlockCode#1#2#3#4#5{%
    +  This is the #2 (\uppercase{#1}) document {\tt #3}, #5.
    +}
    +\markdownBegin
    +/document.tex (the document that we are currently typesetting)
    +/markdown-languages.json (the mapping between filename extensions
    +                          and programming language names)
    +https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)
    +\markdownEnd
    +\bye
    +

    Create also a text document named +markdown-languages.json with the following content:

    +
    {
    +  "json": "JavaScript Object Notation",
    +}
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    This is document.tex, the document that we are currently +typesetting.

    +

    This is the JavaScript Object Notation (JSON) document +markdown-languages.json, the mapping between filename +extensions and programming language names.

    +

    This is the image https://tug.org/tugboat/noword.jpg, +the logotype of TUGboat.

    +
    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\begin{filecontents}[overwrite,nosearch,noheader]{markdown-languages.json}
    +{
    +  "json": "JavaScript Object Notation",
    +}
    +\end{filecontents}
    +\usepackage[contentBlocks]{markdown}
    +\markdownSetup{
    +  renderers = {
    +    contentBlock = {This is \texttt{#2}, #4.},
    +    contentBlockOnlineImage = {This is the image \texttt{#2}, #4.},
    +    contentBlockCode = {%
    +      This is the #2 (\MakeUppercase{#1}) document \texttt{#3}, #5.
    +    },
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +/document.tex (the document that we are currently typesetting)
    +/markdown-languages.json (the mapping between filename extensions
    +                          and programming language names)
    +https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    This is document.tex, the document that we are currently +typesetting.

    +

    This is the JavaScript Object Notation (JSON) document +markdown-languages.json, the mapping between filename +extensions and programming language names.

    +

    This is the image https://tug.org/tugboat/noword.jpg, +the logotype of TUGboat.

    +
    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[contentBlocks = yes]
    +\def\markdownRendererContentBlock#1#2#3#4{%
    +  This is {\tt #2}, #4.
    +}
    +\def\markdownRendererContentBlockOnlineImage#1#2#3#4{%
    +  This is the image {\tt #2}, #4.
    +}
    +\def\markdownRendererContentBlockCode#1#2#3#4#5{%
    +  This is the #2 (\uppercase{#1}) document {\tt #3}, #5.
    +}
    +\starttext
    +\startmarkdown
    +/document.tex (the document that we are currently typesetting)
    +/markdown-languages.json (the mapping between filename extensions
    +                          and programming language names)
    +https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)
    +\stopmarkdown
    +\stoptext
    +

    Create also a text document named +markdown-languages.json with the following content:

    +
    {
    +  "json": "JavaScript Object Notation",
    +}
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    This is document.tex, the document that we are currently +typesetting.

    +

    This is the JavaScript Object Notation (JSON) document +markdown-languages.json, the mapping between filename +extensions and programming language names.

    +

    This is the image https://tug.org/tugboat/noword.jpg, +the logotype of TUGboat.

    +
    +

    2.3.1.12 Bullet List Renderers

    +

    The \markdownRendererUlBegin macro represents the +beginning of a bulleted list that contains an item with several +paragraphs of text (the list is not tight). The macro receives no +arguments.

    +

    The \markdownRendererUlBeginTight macro represents the +beginning 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 tightLists option is +disabled. The macro receives no arguments.

    +

    The \markdownRendererUlItem macro represents an item in +a bulleted list. The macro receives no arguments.

    +

    The \markdownRendererUlItemEnd macro represents the end +of an item in a bulleted list. The macro receives no arguments.

    +

    The \markdownRendererUlEnd macro represents the end of a +bulleted list that contains an item with several paragraphs of text (the +list is not tight). The macro receives no arguments.

    +

    The \markdownRendererUlEndTight macro represents the end +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 +tightLists option is disabled. The macro +receives no arguments.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownOptionTightLists{true}
    +
    +\def\markdownRendererInterblockSeparator{}
    +\def\markdownRendererUlBeginTight{ (}
    +\def\markdownRendererUlItem{%
    +  \def\markdownRendererUlItem{%
    +    ,
    +    \def\markdownRendererUlItem{, and }%
    +  }%
    +}
    +\def\markdownRendererUlItemEnd{}
    +\def\markdownRendererUlEndTight{).}
    +
    +\markdownBegin
    +This is a tight list
    +
    +- the first item
    +- the second item
    +- the third item
    +\markdownEnd
    +
    +\def\markdownRendererInterblockSeparator{%
    +  :\par
    +  \def\markdownRendererInterblockSeparator{\par}%
    +}
    +\def\markdownRendererUlBegin{}
    +\def\markdownRendererUlItem{--\kern 0.5em}
    +\def\markdownRendererUlItemEnd{.\par}
    +\def\markdownRendererUlEnd{}
    +
    +\markdownBegin
    +This is a loose list
    +
    +- This is the first item
    +
    +- This is the second item
    +
    +- This is the third item
    +\markdownEnd
    +
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    This is a tight list (the first item, the second item, and the third +item).

    This is a loose list:

    • This is the first item.

    • @@ -5261,60 +7431,66 @@ Thomas,Edison,1847
    • This is the third item.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[tightLists]{markdown}
    -\begin{document}
    -
    -\begin{markdown*}{
    -  renderers = {
    -    interblockSeparator = {},
    -    ulBeginTight = { (},
    -    ulItem = {%
    -      \def\markdownRendererUlItem{%
    -        ,
    -        \def\markdownRendererUlItem{, and }%
    -      }%
    -    },
    -    ulItemEnd = {},
    -    ulEndTight = {).},
    -  },
    -}
    -This is a tight list
    -
    -- the first item
    -- the second item
    -- the third item
    -\end{markdown*}
    -
    -\begin{markdown*}{
    -  renderers = {
    -    interblockSeparator = {%
    -      :\par
    -      \def\markdownRendererInterblockSeparator{\par}%
    -    },
    -    ulBeginTight = {\begin{itemize}},
    -    ulItem = {\item},
    -    ulItemEnd = {.},
    -    ulEnd = {\end{itemize}},
    -  },
    -}
    -This is a loose list
    -
    -- This is the first item
    -
    -- This is the second item
    -
    -- This is the third item
    -\end{markdown*}
    -
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    This is a tight list (the first item, the second item, and the third item).

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[tightLists]{markdown}
    +\begin{document}
    +
    +\begin{markdown*}{
    +  renderers = {
    +    interblockSeparator = {},
    +    ulBeginTight = { (},
    +    ulItem = {%
    +      \def\markdownRendererUlItem{%
    +        ,
    +        \def\markdownRendererUlItem{, and }%
    +      }%
    +    },
    +    ulItemEnd = {},
    +    ulEndTight = {).},
    +  },
    +}
    +This is a tight list
    +
    +- the first item
    +- the second item
    +- the third item
    +\end{markdown*}
    +
    +\begin{markdown*}{
    +  renderers = {
    +    interblockSeparator = {%
    +      :\par
    +      \def\markdownRendererInterblockSeparator{\par}%
    +    },
    +    ulBeginTight = {\begin{itemize}},
    +    ulItem = {\item},
    +    ulItemEnd = {.},
    +    ulEnd = {\end{itemize}},
    +  },
    +}
    +This is a loose list
    +
    +- This is the first item
    +
    +- This is the second item
    +
    +- This is the third item
    +\end{markdown*}
    +
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    This is a tight list (the first item, the second item, and the third +item).

    This is a loose list:

    • This is the first item.

    • @@ -5322,56 +7498,62 @@ Thomas,Edison,1847
    • This is the third item.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[tightLists = yes]
    -\starttext
    -
    -\def\markdownRendererInterblockSeparator{}
    -\def\markdownRendererUlBeginTight{ (}
    -\def\markdownRendererUlItem{%
    -  \def\markdownRendererUlItem{%
    -    ,
    -    \def\markdownRendererUlItem{, and }%
    -  }%
    -}
    -\def\markdownRendererUlItemEnd{}
    -\def\markdownRendererUlEndTight{).}
    -
    -\startmarkdown
    -This is a tight list
    -
    -- the first item
    -- the second item
    -- the third item
    -\stopmarkdown
    -
    -\def\markdownRendererInterblockSeparator{%
    -  :\par
    -  \def\markdownRendererInterblockSeparator{\par}%
    -}
    -\def\markdownRendererUlBegin{\startitemize}
    -\def\markdownRendererUlItem{\item}
    -\def\markdownRendererUlItemEnd{.}
    -\def\markdownRendererUlEnd{\stopitemize}
    -
    -\startmarkdown
    -This is a loose list
    -
    -- This is the first item
    -
    -- This is the second item
    -
    -- This is the third item
    -\stopmarkdown
    -
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    This is a tight list (the first item, the second item, and the third item).

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[tightLists = yes]
    +\starttext
    +
    +\def\markdownRendererInterblockSeparator{}
    +\def\markdownRendererUlBeginTight{ (}
    +\def\markdownRendererUlItem{%
    +  \def\markdownRendererUlItem{%
    +    ,
    +    \def\markdownRendererUlItem{, and }%
    +  }%
    +}
    +\def\markdownRendererUlItemEnd{}
    +\def\markdownRendererUlEndTight{).}
    +
    +\startmarkdown
    +This is a tight list
    +
    +- the first item
    +- the second item
    +- the third item
    +\stopmarkdown
    +
    +\def\markdownRendererInterblockSeparator{%
    +  :\par
    +  \def\markdownRendererInterblockSeparator{\par}%
    +}
    +\def\markdownRendererUlBegin{\startitemize}
    +\def\markdownRendererUlItem{\item}
    +\def\markdownRendererUlItemEnd{.}
    +\def\markdownRendererUlEnd{\stopitemize}
    +
    +\startmarkdown
    +This is a loose list
    +
    +- This is the first item
    +
    +- This is the second item
    +
    +- This is the third item
    +\stopmarkdown
    +
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    This is a tight list (the first item, the second item, and the third +item).

    This is a loose list:

    • This is the first item.

    • @@ -5379,88 +7561,164 @@ Thomas,Edison,1847
    • This is the third item.

    -

    2.3.1.13 Ordered List Renderers

    -

    The \markdownRendererOlBegin macro represents the beginning of an ordered list that contains an item with several paragraphs of text (the list is not tight). This macro will only be produced, when the fancyLists option is disabled. The macro receives no arguments.

    -

    The \markdownRendererOlBeginTight macro represents the beginning of an ordered list that contains no item with several paragraphs of text (the list is tight). This macro will only be produced, when the tightLists option is enabled and the fancyLists option is disabled. The macro receives no arguments.

    -

    The \markdownRendererFancyOlBegin macro represents the beginning of a fancy ordered list that contains an item with several paragraphs of text (the list is not tight). This macro will only be produced, when the fancyLists option is enabled. The macro receives two arguments: the style of the list item labels (Decimal, LowerRoman, UpperRoman, LowerAlpha, and UpperAlpha), and the style of delimiters between list item labels and texts (Default, OneParen, and Period).

    -

    The \markdownRendererFancyOlBeginTight macro represents the beginning of a fancy ordered list that contains no item with several paragraphs of text (the list is tight). This macro will only be produced, when the fancyLists and tightLists options are enabled. The macro receives two arguments: the style of the list item labels, and the style of delimiters between list item labels and texts. See the \markdownRendererFancyOlBegin macro for the valid style values.

    -

    The \markdownRendererOlItem macro represents an item in an ordered list. This macro will only be produced, when the startNumber option is disabled and the fancyLists option is disabled. The macro receives no arguments.

    -

    The \markdownRendererOlItemEnd macro represents the end of an item in an ordered list. This macro will only be produced, when the fancyLists option is disabled. The macro receives no arguments.

    -

    The \markdownRendererOlItemWithNumber macro represents an item in an ordered list. This macro will only be produced, when the startNumber option is enabled and the fancyLists option is disabled. The macro receives a single numeric argument that corresponds to the item number.

    -

    The \markdownRendererFancyOlItem macro represents an item in a fancy ordered list. This macro will only be produced, when the startNumber option is disabled and the fancyLists option is enabled. The macro receives no arguments.

    -

    The \markdownRendererFancyOlItemEnd macro represents the end of an item in a fancy ordered list. This macro will only be produced, when the fancyLists option is enabled. The macro receives no arguments.

    -

    The \markdownRendererFancyOlItemWithNumber macro represents an item in a fancy ordered list. This macro will only be produced, when the startNumber and fancyLists options are enabled. The macro receives a single numeric argument that corresponds to the item number.

    -

    The \markdownRendererOlEnd macro represents the end of an ordered list that contains an item with several paragraphs of text (the list is not tight). This macro will only be produced, when the fancyLists option is disabled. The macro receives no arguments.

    -

    The \markdownRendererOlEndTight macro represents the end of an ordered list that contains no item with several paragraphs of text (the list is tight). This macro will only be produced, when the tightLists option is enabled and the fancyLists option is disabled. The macro receives no arguments.

    -

    The \markdownRendererFancyOlEnd macro represents the end of a fancy ordered list that contains an item with several paragraphs of text (the list is not tight). This macro will only be produced, when the fancyLists option is enabled. The macro receives no arguments.

    -

    The \markdownRendererFancyOlEndTight macro represents the end of a fancy ordered list that contains no item with several paragraphs of text (the list is tight). This macro will only be produced, when the fancyLists and tightLists options are enabled. The macro receives no arguments.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownOptionTightLists{true}
    -\def\markdownOptionStartNumber{true}
    -
    -\def\markdownRendererInterblockSeparator{}
    -\def\markdownRendererOlBeginTight{ (}
    -\def\markdownRendererOlItemWithNumber#1{%
    -  \ifnum #1=1\relax
    -    the first
    -  \else
    -    \ifnum #1=2\relax
    -      , the second
    -    \else
    -      , and the third
    -    \fi
    -  \fi
    -}
    -\def\markdownRendererOlItemEnd{}
    -\def\markdownRendererOlEndTight{).}
    -
    -\markdownBegin
    -This is a tight list
    -
    -1. item
    -2. item
    -3. item
    -\markdownEnd
    -
    -\def\markdownRendererInterblockSeparator{%
    -  :\par
    -  \def\markdownRendererInterblockSeparator{\par}%
    -}
    -\def\markdownRendererOlBegin{}
    -\def\markdownRendererOlItemWithNumber#1{%
    -  #1.\kern 0.5em%
    -  This is the
    -  \ifnum #1=1\relax
    -    first
    -  \else
    -    \ifnum #1=2\relax
    -      second
    -    \else
    -      third
    -    \fi
    -  \fi
    -}
    -\def\markdownRendererOlItemEnd{.\par}
    -\def\markdownRendererOlEnd{}
    -
    -\markdownBegin
    -This is a loose list
    -
    -1. item
    -
    -2. item
    -
    -3. item
    -\markdownEnd
    -
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    This is a tight list (the first item, the second item, and the third item).

    +

    2.3.1.13 Ordered List +Renderers

    +

    The \markdownRendererOlBegin macro represents the +beginning of an ordered list that contains an item with several +paragraphs of text (the list is not tight). This macro will only be +produced, when the fancyLists option is +disabled. The macro receives no arguments.

    +

    The \markdownRendererOlBeginTight macro represents the +beginning of an ordered list that contains no item with several +paragraphs of text (the list is tight). This macro will only be +produced, when the tightLists option is +enabled and the fancyLists option is +disabled. The macro receives no arguments.

    +

    The \markdownRendererFancyOlBegin macro represents the +beginning of a fancy ordered list that contains an item with several +paragraphs of text (the list is not tight). This macro will only be +produced, when the fancyLists option is +enabled. The macro receives two arguments: the style of the list item +labels (Decimal, LowerRoman, +UpperRoman, LowerAlpha, and +UpperAlpha), and the style of delimiters between list item +labels and texts (Default, OneParen, and +Period).

    +

    The \markdownRendererFancyOlBeginTight macro represents +the beginning of a fancy ordered list that contains no item with several +paragraphs of text (the list is tight). This macro will only be +produced, when the fancyLists and +tightLists options are enabled. The macro +receives two arguments: the style of the list item labels, and the style +of delimiters between list item labels and texts. See the +\markdownRendererFancyOlBegin macro for the valid style +values.

    +

    The \markdownRendererOlItem macro represents an item in +an ordered list. This macro will only be produced, when the +startNumber option is disabled and the +fancyLists option is disabled. The macro +receives no arguments.

    +

    The \markdownRendererOlItemEnd macro represents the end +of an item in an ordered list. This macro will only be produced, when +the fancyLists option is disabled. The +macro receives no arguments.

    +

    The \markdownRendererOlItemWithNumber macro represents +an item in an ordered list. This macro will only be produced, when the +startNumber option is enabled and the +fancyLists option is disabled. The macro +receives a single numeric argument that corresponds to the item +number.

    +

    The \markdownRendererFancyOlItem macro represents an +item in a fancy ordered list. This macro will only be produced, when the +startNumber option is disabled and the +fancyLists option is enabled. The macro +receives no arguments.

    +

    The \markdownRendererFancyOlItemEnd macro represents the +end of an item in a fancy ordered list. This macro will only be +produced, when the fancyLists option is +enabled. The macro receives no arguments.

    +

    The \markdownRendererFancyOlItemWithNumber macro +represents an item in a fancy ordered list. This macro will only be +produced, when the startNumber and +fancyLists options are enabled. The macro +receives a single numeric argument that corresponds to the item +number.

    +

    The \markdownRendererOlEnd macro represents the end of +an ordered list that contains an item with several paragraphs of text +(the list is not tight). This macro will only be produced, when the +fancyLists option is disabled. The macro +receives no arguments.

    +

    The \markdownRendererOlEndTight macro represents the end +of an ordered list that contains no item with several paragraphs of text +(the list is tight). This macro will only be produced, when the +tightLists option is enabled and the +fancyLists option is disabled. The macro +receives no arguments.

    +

    The \markdownRendererFancyOlEnd macro represents the end +of a fancy ordered list that contains an item with several paragraphs of +text (the list is not tight). This macro will only be produced, when the +fancyLists option is enabled. The macro +receives no arguments.

    +

    The \markdownRendererFancyOlEndTight macro represents +the end of a fancy ordered list that contains no item with several +paragraphs of text (the list is tight). This macro will only be +produced, when the fancyLists and +tightLists options are enabled. The macro +receives no arguments.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownOptionTightLists{true}
    +\def\markdownOptionStartNumber{true}
    +
    +\def\markdownRendererInterblockSeparator{}
    +\def\markdownRendererOlBeginTight{ (}
    +\def\markdownRendererOlItemWithNumber#1{%
    +  \ifnum #1=1\relax
    +    the first
    +  \else
    +    \ifnum #1=2\relax
    +      , the second
    +    \else
    +      , and the third
    +    \fi
    +  \fi
    +}
    +\def\markdownRendererOlItemEnd{}
    +\def\markdownRendererOlEndTight{).}
    +
    +\markdownBegin
    +This is a tight list
    +
    +1. item
    +2. item
    +3. item
    +\markdownEnd
    +
    +\def\markdownRendererInterblockSeparator{%
    +  :\par
    +  \def\markdownRendererInterblockSeparator{\par}%
    +}
    +\def\markdownRendererOlBegin{}
    +\def\markdownRendererOlItemWithNumber#1{%
    +  #1.\kern 0.5em%
    +  This is the
    +  \ifnum #1=1\relax
    +    first
    +  \else
    +    \ifnum #1=2\relax
    +      second
    +    \else
    +      third
    +    \fi
    +  \fi
    +}
    +\def\markdownRendererOlItemEnd{.\par}
    +\def\markdownRendererOlEnd{}
    +
    +\markdownBegin
    +This is a loose list
    +
    +1. item
    +
    +2. item
    +
    +3. item
    +\markdownEnd
    +
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    This is a tight list (the first item, the second item, and the third +item).

    This is a loose list:

    1. This is the first item.

    2. @@ -5468,76 +7726,82 @@ Thomas,Edison,1847
    3. This is the third item.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[tightLists, startNumber]{markdown}
    -\begin{document}
    -
    -\begin{markdown*}{
    -  renderers = {
    -    interblockSeparator = {},
    -    olBeginTight = { (},
    -    olItemWithNumber = {%
    -      \ifnum #1=1\relax
    -        the first
    -      \else
    -        \ifnum #1=2\relax
    -          , the second
    -        \else
    -          , and the third
    -        \fi
    -      \fi
    -    },
    -    olItemEnd = {},
    -    olEndTight = {).},
    -  },
    -}
    -This is a tight list
    -
    -1. item
    -2. item
    -3. item
    -\end{markdown*}
    -
    -\begin{markdown*}{
    -  renderers = {
    -    interblockSeparator = {%
    -      :\par
    -      \def\markdownRendererInterblockSeparator{\par}%
    -    },
    -    olBeginTight = {\begin{enumerate}},
    -    olItemWithNumber = {%
    -      \item This is the
    -      \ifnum #1=1\relax
    -        first
    -      \else
    -        \ifnum #1=2\relax
    -          second
    -        \else
    -          third
    -        \fi
    -      \fi
    -    },
    -    olItemEnd = {.},
    -    olEnd = {\end{enumerate}},
    -  },
    -}
    -This is a loose list
    -
    -1. item
    -
    -2. item
    -
    -3. item
    -\end{markdown*}
    -
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    This is a tight list (the first item, the second item, and the third item).

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[tightLists, startNumber]{markdown}
    +\begin{document}
    +
    +\begin{markdown*}{
    +  renderers = {
    +    interblockSeparator = {},
    +    olBeginTight = { (},
    +    olItemWithNumber = {%
    +      \ifnum #1=1\relax
    +        the first
    +      \else
    +        \ifnum #1=2\relax
    +          , the second
    +        \else
    +          , and the third
    +        \fi
    +      \fi
    +    },
    +    olItemEnd = {},
    +    olEndTight = {).},
    +  },
    +}
    +This is a tight list
    +
    +1. item
    +2. item
    +3. item
    +\end{markdown*}
    +
    +\begin{markdown*}{
    +  renderers = {
    +    interblockSeparator = {%
    +      :\par
    +      \def\markdownRendererInterblockSeparator{\par}%
    +    },
    +    olBeginTight = {\begin{enumerate}},
    +    olItemWithNumber = {%
    +      \item This is the
    +      \ifnum #1=1\relax
    +        first
    +      \else
    +        \ifnum #1=2\relax
    +          second
    +        \else
    +          third
    +        \fi
    +      \fi
    +    },
    +    olItemEnd = {.},
    +    olEnd = {\end{enumerate}},
    +  },
    +}
    +This is a loose list
    +
    +1. item
    +
    +2. item
    +
    +3. item
    +\end{markdown*}
    +
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    This is a tight list (the first item, the second item, and the third +item).

    This is a loose list:

    1. This is the first item.

    2. @@ -5545,77 +7809,83 @@ Thomas,Edison,1847
    3. This is the third item.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown
    -  [
    -    tightLists = yes,
    -    startNumber = yes,
    -  ]
    -\starttext
    -
    -\def\markdownRendererInterblockSeparator{}
    -\def\markdownRendererOlBeginTight{ (}
    -\def\markdownRendererOlItemWithNumber#1{%
    -  \ifnum #1=1\relax
    -    the first
    -  \else
    -    \ifnum #1=2\relax
    -      , the second
    -    \else
    -      , and the third
    -    \fi
    -  \fi
    -}
    -\def\markdownRendererOlItemEnd{}
    -\def\markdownRendererOlEndTight{).}
    -
    -\startmarkdown
    -This is a tight list
    -
    -1. item
    -2. item
    -3. item
    -\stopmarkdown
    -
    -\def\markdownRendererInterblockSeparator{%
    -  :\par
    -  \def\markdownRendererInterblockSeparator{\par}%
    -}
    -\def\markdownRendererOlBegin{\startitemize}
    -\def\markdownRendererOlItemWithNumber#1{%
    -  \sym{#1.}
    -  This is the
    -  \ifnum #1=1\relax
    -    first
    -  \else
    -    \ifnum #1=2\relax
    -      second
    -    \else
    -      third
    -    \fi
    -  \fi
    -}
    -\def\markdownRendererOlItemEnd{.\par}
    -\def\markdownRendererOlEnd{\stopitemize}
    -
    -\startmarkdown
    -This is a loose list
    -
    -1. item
    -
    -2. item
    -
    -3. item
    -\stopmarkdown
    -
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    This is a tight list (the first item, the second item, and the third item).

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown
    +  [
    +    tightLists = yes,
    +    startNumber = yes,
    +  ]
    +\starttext
    +
    +\def\markdownRendererInterblockSeparator{}
    +\def\markdownRendererOlBeginTight{ (}
    +\def\markdownRendererOlItemWithNumber#1{%
    +  \ifnum #1=1\relax
    +    the first
    +  \else
    +    \ifnum #1=2\relax
    +      , the second
    +    \else
    +      , and the third
    +    \fi
    +  \fi
    +}
    +\def\markdownRendererOlItemEnd{}
    +\def\markdownRendererOlEndTight{).}
    +
    +\startmarkdown
    +This is a tight list
    +
    +1. item
    +2. item
    +3. item
    +\stopmarkdown
    +
    +\def\markdownRendererInterblockSeparator{%
    +  :\par
    +  \def\markdownRendererInterblockSeparator{\par}%
    +}
    +\def\markdownRendererOlBegin{\startitemize}
    +\def\markdownRendererOlItemWithNumber#1{%
    +  \sym{#1.}
    +  This is the
    +  \ifnum #1=1\relax
    +    first
    +  \else
    +    \ifnum #1=2\relax
    +      second
    +    \else
    +      third
    +    \fi
    +  \fi
    +}
    +\def\markdownRendererOlItemEnd{.\par}
    +\def\markdownRendererOlEnd{\stopitemize}
    +
    +\startmarkdown
    +This is a loose list
    +
    +1. item
    +
    +2. item
    +
    +3. item
    +\stopmarkdown
    +
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    This is a tight list (the first item, the second item, and the third +item).

    This is a loose list:

    1. This is the first item.

    2. @@ -5623,99 +7893,127 @@ Thomas,Edison,1847
    3. This is the third item.

    -

    2.3.1.14 Definition List Renderers

    -

    The following macros are only produced, when the definitionLists option is enabled.

    -

    The \markdownRendererDlBegin macro represents the beginning of a definition list that contains an item with several paragraphs of text (the list is not tight). The macro receives no arguments.

    -

    The \markdownRendererDlBeginTight macro represents the beginning of a definition list that contains an item with several paragraphs of text (the list is not tight). This macro will only be produced, when the tightLists option is disabled. The macro receives no arguments.

    -

    The \markdownRendererDlItem macro represents a term in a definition list. The macro receives a single argument that corresponds to the term being defined.

    -

    The \markdownRendererDlItemEnd macro represents the end of a list of definitions for a single term.

    -

    The \markdownRendererDlDefinitionBegin macro represents the beginning of a definition in a definition list. There can be several definitions for a single term.

    -

    The \markdownRendererDlDefinitionEnd macro represents the end of a definition in a definition list. There can be several definitions for a single term.

    -

    The \markdownRendererDlEnd macro represents the end of a definition list that contains an item with several paragraphs of text (the list is not tight). The macro receives no arguments.

    -

    The \markdownRendererDlEndTight macro represents the end 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 tightLists option is disabled. The macro receives no arguments.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownOptionDefinitionLists{true}
    -\def\markdownOptionTightLists{true}
    -
    -\def\markdownRendererInterblockSeparator{%
    -  :%
    -  \def\markdownRendererInterblockSeparator{\par}%
    -}
    -\def\markdownRendererDlBeginTight{%
    -  \begingroup
    -  \parindent=0pt
    -}
    -\def\markdownRendererDlItem#1{%
    -  \par{\bf#1}%
    -  \def\markdownRendererDlDefinitionEnd{%
    -    ,
    -    \def\markdownRendererDlDefinitionEnd{%
    -      , and
    -      \def\markdownRendererDlDefinitionEnd{.}%
    -    }%
    -  }%
    -}
    -\def\markdownRendererDlItemEnd{}
    -\def\markdownRendererDlDefinitionBegin{\par--\kern 0.5em}
    -\def\markdownRendererDlEndTight{\endgroup}
    -
    -\markdownBegin
    -This is a tight definition list
    -
    -Coffee
    -:   black hot drink
    -:   prepared from roasted coffee beans
    -:   one of the most traded agricultural commodities in the world
    -
    -Milk
    -:   white cold drink
    -:   nutrient-rich
    -:   produced on an industrial scale
    -\markdownEnd
    -
    -\def\markdownRendererInterblockSeparator{%
    -  \def\markdownRendererInterblockSeparator{\par}%
    -}
    -\def\markdownRendererDlBegin{}
    -\def\markdownRendererDlItem#1{%
    -  . #1 is a
    -  \def\markdownRendererDlDefinitionBegin{%
    -    \def\markdownRendererDlDefinitionBegin{%
    -      ,
    -      \def\markdownRendererDlDefinitionBegin{, and }%
    -    }%
    -  }%
    -}
    -\def\markdownRendererDlItemEnd{}
    -\def\markdownRendererDlDefinitionEnd{}
    -\def\markdownRendererDlEnd{.}
    -
    -\markdownBegin
    -This is a loose definition list
    -
    -Coffee
    -
    -:   black hot drink
    -
    -:   prepared from roasted coffee beans
    -
    -:   one of the most traded agricultural commodities in the world
    -
    -Milk
    -
    -:   white cold drink
    -
    -:   nutrient-rich
    -
    -:   produced on an industrial scale
    -\markdownEnd
    -
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    2.3.1.14 Definition List +Renderers

    +

    The following macros are only produced, when the +definitionLists option is enabled.

    +

    The \markdownRendererDlBegin macro represents the +beginning of a definition list that contains an item with several +paragraphs of text (the list is not tight). The macro receives no +arguments.

    +

    The \markdownRendererDlBeginTight macro represents the +beginning of a definition list that contains an item with several +paragraphs of text (the list is not tight). This macro will only be +produced, when the tightLists option is +disabled. The macro receives no arguments.

    +

    The \markdownRendererDlItem macro represents a term in a +definition list. The macro receives a single argument that corresponds +to the term being defined.

    +

    The \markdownRendererDlItemEnd macro represents the end +of a list of definitions for a single term.

    +

    The \markdownRendererDlDefinitionBegin macro represents +the beginning of a definition in a definition list. There can be several +definitions for a single term.

    +

    The \markdownRendererDlDefinitionEnd macro represents +the end of a definition in a definition list. There can be several +definitions for a single term.

    +

    The \markdownRendererDlEnd macro represents the end of a +definition list that contains an item with several paragraphs of text +(the list is not tight). The macro receives no arguments.

    +

    The \markdownRendererDlEndTight macro represents the end +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 +tightLists option is disabled. The macro +receives no arguments.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownOptionDefinitionLists{true}
    +\def\markdownOptionTightLists{true}
    +
    +\def\markdownRendererInterblockSeparator{%
    +  :%
    +  \def\markdownRendererInterblockSeparator{\par}%
    +}
    +\def\markdownRendererDlBeginTight{%
    +  \begingroup
    +  \parindent=0pt
    +}
    +\def\markdownRendererDlItem#1{%
    +  \par{\bf#1}%
    +  \def\markdownRendererDlDefinitionEnd{%
    +    ,
    +    \def\markdownRendererDlDefinitionEnd{%
    +      , and
    +      \def\markdownRendererDlDefinitionEnd{.}%
    +    }%
    +  }%
    +}
    +\def\markdownRendererDlItemEnd{}
    +\def\markdownRendererDlDefinitionBegin{\par--\kern 0.5em}
    +\def\markdownRendererDlEndTight{\endgroup}
    +
    +\markdownBegin
    +This is a tight definition list
    +
    +Coffee
    +:   black hot drink
    +:   prepared from roasted coffee beans
    +:   one of the most traded agricultural commodities in the world
    +
    +Milk
    +:   white cold drink
    +:   nutrient-rich
    +:   produced on an industrial scale
    +\markdownEnd
    +
    +\def\markdownRendererInterblockSeparator{%
    +  \def\markdownRendererInterblockSeparator{\par}%
    +}
    +\def\markdownRendererDlBegin{}
    +\def\markdownRendererDlItem#1{%
    +  . #1 is a
    +  \def\markdownRendererDlDefinitionBegin{%
    +    \def\markdownRendererDlDefinitionBegin{%
    +      ,
    +      \def\markdownRendererDlDefinitionBegin{, and }%
    +    }%
    +  }%
    +}
    +\def\markdownRendererDlItemEnd{}
    +\def\markdownRendererDlDefinitionEnd{}
    +\def\markdownRendererDlEnd{.}
    +
    +\markdownBegin
    +This is a loose definition list
    +
    +Coffee
    +
    +:   black hot drink
    +
    +:   prepared from roasted coffee beans
    +
    +:   one of the most traded agricultural commodities in the world
    +
    +Milk
    +
    +:   white cold drink
    +
    +:   nutrient-rich
    +
    +:   produced on an industrial scale
    +\markdownEnd
    +
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    This is a tight definition list:

    Coffee

    @@ -5730,93 +8028,101 @@ Thomas,Edison,1847
  • nutrient-rich, and
  • produced on an industrial scale.
  • -

    This is a loose definition list. Coffee is a black hot drink, 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.

    -
    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[definitionLists, tightLists]{markdown}
    -\begin{document}
    -
    -\begin{markdown*}{
    -  renderers = {
    -    interblockSeparator = {%
    -      :%
    -      \def\markdownRendererInterblockSeparator{\par}%
    -    },
    -    dlBeginTight = {\begin{description}},
    -    dlItem = {%
    -      \item[#1]
    -      \begin{itemize}
    -      \def\markdownRendererDlDefinitionEnd{%
    -        ,
    -        \def\markdownRendererDlDefinitionEnd{%
    -          , and
    -          \def\markdownRendererDlDefinitionEnd{.}%
    -        }%
    -      }%
    -    },
    -    dlItemEnd = {\end{itemize}},
    -    dlDefinitionBegin = \item,
    -    dlEndTight = {\end{description}},
    -  },
    -}
    -This is a tight definition list
    -
    -Coffee
    -:   black hot drink
    -:   prepared from roasted coffee beans
    -:   one of the most traded agricultural commodities in the world
    -
    -Milk
    -:   white cold drink
    -:   nutrient-rich
    -:   produced on an industrial scale
    -\end{markdown*}
    -
    -\begin{markdown*}{
    -  renderers = {
    -    interblockSeparator = {%
    -      \def\markdownRendererInterblockSeparator{\par}%
    -    },
    -    dlBegin = {},
    -    dlItem = {%
    -      . #1 is a
    -      \def\markdownRendererDlDefinitionBegin{%
    -        \def\markdownRendererDlDefinitionBegin{%
    -          ,
    -          \def\markdownRendererDlDefinitionBegin{, and }%
    -        }%
    -      }%
    -    },
    -    dlItemEnd = {},
    -    dlDefinitionEnd = {},
    -    dlEnd = {.},
    -  },
    -}
    -This is a loose definition list
    -
    -Coffee
    -
    -:   black hot drink
    -
    -:   prepared from roasted coffee beans
    -
    -:   one of the most traded agricultural commodities in the world
    -
    -Milk
    -
    -:   white cold drink
    -
    -:   nutrient-rich
    -
    -:   produced on an industrial scale
    -\end{markdown*}
    -
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    This is a loose definition list. Coffee is a black hot drink, +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.

    +
    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[definitionLists, tightLists]{markdown}
    +\begin{document}
    +
    +\begin{markdown*}{
    +  renderers = {
    +    interblockSeparator = {%
    +      :%
    +      \def\markdownRendererInterblockSeparator{\par}%
    +    },
    +    dlBeginTight = {\begin{description}},
    +    dlItem = {%
    +      \item[#1]
    +      \begin{itemize}
    +      \def\markdownRendererDlDefinitionEnd{%
    +        ,
    +        \def\markdownRendererDlDefinitionEnd{%
    +          , and
    +          \def\markdownRendererDlDefinitionEnd{.}%
    +        }%
    +      }%
    +    },
    +    dlItemEnd = {\end{itemize}},
    +    dlDefinitionBegin = \item,
    +    dlEndTight = {\end{description}},
    +  },
    +}
    +This is a tight definition list
    +
    +Coffee
    +:   black hot drink
    +:   prepared from roasted coffee beans
    +:   one of the most traded agricultural commodities in the world
    +
    +Milk
    +:   white cold drink
    +:   nutrient-rich
    +:   produced on an industrial scale
    +\end{markdown*}
    +
    +\begin{markdown*}{
    +  renderers = {
    +    interblockSeparator = {%
    +      \def\markdownRendererInterblockSeparator{\par}%
    +    },
    +    dlBegin = {},
    +    dlItem = {%
    +      . #1 is a
    +      \def\markdownRendererDlDefinitionBegin{%
    +        \def\markdownRendererDlDefinitionBegin{%
    +          ,
    +          \def\markdownRendererDlDefinitionBegin{, and }%
    +        }%
    +      }%
    +    },
    +    dlItemEnd = {},
    +    dlDefinitionEnd = {},
    +    dlEnd = {.},
    +  },
    +}
    +This is a loose definition list
    +
    +Coffee
    +
    +:   black hot drink
    +
    +:   prepared from roasted coffee beans
    +
    +:   one of the most traded agricultural commodities in the world
    +
    +Milk
    +
    +:   white cold drink
    +
    +:   nutrient-rich
    +
    +:   produced on an industrial scale
    +\end{markdown*}
    +
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    This is a tight definition list:

    Coffee

    @@ -5831,93 +8137,101 @@ Thomas,Edison,1847
  • nutrient-rich, and
  • produced on an industrial scale.
  • -

    This is a loose definition list. Coffee is a black hot drink, 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.

    -
    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown
    -  [
    -    definitionLists = yes,
    -    tightLists = yes,
    -  ]
    -\starttext
    -
    -\def\markdownRendererInterblockSeparator{%
    -  :%
    -  \def\markdownRendererInterblockSeparator{\par}%
    -}
    -\def\markdownRendererDlBeginTight{}
    -\def\markdownRendererDlItem#1{%
    -  \par{\bf#1}%
    -  \startitemize
    -  \def\markdownRendererDlDefinitionEnd{%
    -    ,
    -    \def\markdownRendererDlDefinitionEnd{%
    -      , and
    -      \def\markdownRendererDlDefinitionEnd{.}%
    -    }%
    -  }%
    -}
    -\def\markdownRendererDlItemEnd{\stopitemize}
    -\def\markdownRendererDlDefinitionBegin{\item}
    -\def\markdownRendererDlEndTight{}
    -
    -\startmarkdown
    -This is a tight definition list
    -
    -Coffee
    -:   black hot drink
    -:   prepared from roasted coffee beans
    -:   one of the most traded agricultural commodities in the world
    -
    -Milk
    -:   white cold drink
    -:   nutrient-rich
    -:   produced on an industrial scale
    -\stopmarkdown
    -
    -\def\markdownRendererInterblockSeparator{%
    -  \def\markdownRendererInterblockSeparator{\par}%
    -}
    -\def\markdownRendererDlBegin{}
    -\def\markdownRendererDlItem#1{%
    -  . #1 is a
    -  \def\markdownRendererDlDefinitionBegin{%
    -    \def\markdownRendererDlDefinitionBegin{%
    -      ,
    -      \def\markdownRendererDlDefinitionBegin{, and }%
    -    }%
    -  }%
    -}
    -\def\markdownRendererDlItemEnd{}
    -\def\markdownRendererDlDefinitionEnd{}
    -\def\markdownRendererDlEnd{.}
    -
    -\startmarkdown
    -This is a loose definition list
    -
    -Coffee
    -
    -:   black hot drink
    -
    -:   prepared from roasted coffee beans
    -
    -:   one of the most traded agricultural commodities in the world
    -
    -Milk
    -
    -:   white cold drink
    -
    -:   nutrient-rich
    -
    -:   produced on an industrial scale
    -\stopmarkdown
    -
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    This is a loose definition list. Coffee is a black hot drink, +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.

    +
    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown
    +  [
    +    definitionLists = yes,
    +    tightLists = yes,
    +  ]
    +\starttext
    +
    +\def\markdownRendererInterblockSeparator{%
    +  :%
    +  \def\markdownRendererInterblockSeparator{\par}%
    +}
    +\def\markdownRendererDlBeginTight{}
    +\def\markdownRendererDlItem#1{%
    +  \par{\bf#1}%
    +  \startitemize
    +  \def\markdownRendererDlDefinitionEnd{%
    +    ,
    +    \def\markdownRendererDlDefinitionEnd{%
    +      , and
    +      \def\markdownRendererDlDefinitionEnd{.}%
    +    }%
    +  }%
    +}
    +\def\markdownRendererDlItemEnd{\stopitemize}
    +\def\markdownRendererDlDefinitionBegin{\item}
    +\def\markdownRendererDlEndTight{}
    +
    +\startmarkdown
    +This is a tight definition list
    +
    +Coffee
    +:   black hot drink
    +:   prepared from roasted coffee beans
    +:   one of the most traded agricultural commodities in the world
    +
    +Milk
    +:   white cold drink
    +:   nutrient-rich
    +:   produced on an industrial scale
    +\stopmarkdown
    +
    +\def\markdownRendererInterblockSeparator{%
    +  \def\markdownRendererInterblockSeparator{\par}%
    +}
    +\def\markdownRendererDlBegin{}
    +\def\markdownRendererDlItem#1{%
    +  . #1 is a
    +  \def\markdownRendererDlDefinitionBegin{%
    +    \def\markdownRendererDlDefinitionBegin{%
    +      ,
    +      \def\markdownRendererDlDefinitionBegin{, and }%
    +    }%
    +  }%
    +}
    +\def\markdownRendererDlItemEnd{}
    +\def\markdownRendererDlDefinitionEnd{}
    +\def\markdownRendererDlEnd{.}
    +
    +\startmarkdown
    +This is a loose definition list
    +
    +Coffee
    +
    +:   black hot drink
    +
    +:   prepared from roasted coffee beans
    +
    +:   one of the most traded agricultural commodities in the world
    +
    +Milk
    +
    +:   white cold drink
    +
    +:   nutrient-rich
    +
    +:   produced on an industrial scale
    +\stopmarkdown
    +
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    This is a tight definition list:

    Coffee

    @@ -5932,825 +8246,1135 @@ Thomas,Edison,1847
  • nutrient-rich, and
  • produced on an industrial scale.
  • -

    This is a loose definition list. Coffee is a black hot drink, 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.

    -
    -

    2.3.1.15 Emphasis Renderers

    -

    The \markdownRendererEmphasis macro represents an emphasized span of text. The macro receives a single argument that corresponds to the emphasized span of text.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownRendererEmphasis#1{{\it#1}}
    -\def\markdownRendererStrongEmphasis#1{{\bf#1}}
    -\markdownBegin
    -This is *emphasis*.
    -
    -This is **strong emphasis**.
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    This is a loose definition list. Coffee is a black hot drink, +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.

    +
    +

    2.3.1.15 Emphasis Renderers

    +

    The \markdownRendererEmphasis macro represents an +emphasized span of text. The macro receives a single argument that +corresponds to the emphasized span of text.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownRendererEmphasis#1{{\it#1}}
    +\def\markdownRendererStrongEmphasis#1{{\bf#1}}
    +\markdownBegin
    +This is *emphasis*.
    +
    +This is **strong emphasis**.
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    This is emphasis.

    This is strong emphasis.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage{markdown}
    -\markdownSetup{
    -  renderers = {
    -    emphasis = {\emph{#1}},
    -    strongEmphasis = {\textbf{#1}},
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -This is *emphasis*.
    -
    -This is **strong emphasis**.
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage{markdown}
    +\markdownSetup{
    +  renderers = {
    +    emphasis = {\emph{#1}},
    +    strongEmphasis = {\textbf{#1}},
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +This is *emphasis*.
    +
    +This is **strong emphasis**.
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    This is emphasis.

    This is strong emphasis.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\def\markdownRendererEmphasis#1{\emph{#1}}
    -\def\markdownRendererStrongEmphasis#1{\bold{#1}}
    -\starttext
    -\startmarkdown
    -This is *emphasis*.
    -
    -This is **strong emphasis**.
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\def\markdownRendererEmphasis#1{\emph{#1}}
    +\def\markdownRendererStrongEmphasis#1{\bold{#1}}
    +\starttext
    +\startmarkdown
    +This is *emphasis*.
    +
    +This is **strong emphasis**.
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    This is emphasis.

    This is strong emphasis.

    -

    The \markdownRendererStrongEmphasis macro represents a strongly emphasized span of text. The macro receives a single argument that corresponds to the emphasized span of text.

    -

    2.3.1.16 Block Quote Renderers

    -

    The \markdownRendererBlockQuoteBegin macro represents the beginning of a block quote. The macro receives no arguments.

    -

    The \markdownRendererBlockQuoteEnd macro represents the end of a block quote. The macro receives no arguments.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownRendererBlockQuoteBegin{%
    -  \begingroup
    -  \vskip\parindent
    -  \leftskip=2\parindent
    -  \parindent=0pt
    -}
    -\def\markdownRendererBlockQuoteEnd{%
    -  \par
    -  \vskip\parindent
    -  \endgroup
    -}
    -\markdownBegin
    -A quote from William Shakespeare's King Lear:
    -
    -> This is the excellent foppery of the world that when we are
    -> sick in fortune---often the surfeit of our own behavior---we
    -> make guilty of our disasters the sun, the moon, and the
    -> stars [...]
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    The \markdownRendererStrongEmphasis macro represents a +strongly emphasized span of text. The macro receives a single argument +that corresponds to the emphasized span of text.

    +

    2.3.1.16 Block Quote Renderers

    +

    The \markdownRendererBlockQuoteBegin macro represents +the beginning of a block quote. The macro receives no arguments.

    +

    The \markdownRendererBlockQuoteEnd macro represents the +end of a block quote. The macro receives no arguments.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownRendererBlockQuoteBegin{%
    +  \begingroup
    +  \vskip\parindent
    +  \leftskip=2\parindent
    +  \parindent=0pt
    +}
    +\def\markdownRendererBlockQuoteEnd{%
    +  \par
    +  \vskip\parindent
    +  \endgroup
    +}
    +\markdownBegin
    +A quote from William Shakespeare's King Lear:
    +
    +> This is the excellent foppery of the world that when we are
    +> sick in fortune---often the surfeit of our own behavior---we
    +> make guilty of our disasters the sun, the moon, and the
    +> stars [...]
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    A quote from William Shakespeare’s King Lear:

    -

    This is the excellent foppery of the world that when we are sick in fortune—often the surfeit of our own behavior—we make guilty of our disasters the sun, the moon, and the stars […]

    -
    -
    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage{markdown}
    -\markdownSetup{
    -  renderers = {
    -    blockQuoteBegin = {\begin{quote}},
    -    blockQuoteEnd = {\end{quote}},
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -A quote from William Shakespeare's King Lear:
    -
    -> This is the excellent foppery of the world that when we are
    -> sick in fortune---often the surfeit of our own behavior---we
    -> make guilty of our disasters the sun, the moon, and the
    -> stars [...]
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    This is the excellent foppery of the world that when we are sick in +fortune—often the surfeit of our own behavior—we make guilty of our +disasters the sun, the moon, and the stars […]

    +
    +
    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage{markdown}
    +\markdownSetup{
    +  renderers = {
    +    blockQuoteBegin = {\begin{quote}},
    +    blockQuoteEnd = {\end{quote}},
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +A quote from William Shakespeare's King Lear:
    +
    +> This is the excellent foppery of the world that when we are
    +> sick in fortune---often the surfeit of our own behavior---we
    +> make guilty of our disasters the sun, the moon, and the
    +> stars [...]
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    A quote from William Shakespeare’s King Lear:

    -

    This is the excellent foppery of the world that when we are sick in fortune—often the surfeit of our own behavior—we make guilty of our disasters the sun, the moon, and the stars […]

    -
    -
    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\def\markdownRendererBlockQuoteBegin{\startquotation}
    -\def\markdownRendererBlockQuoteEnd{\stopquotation}
    -\starttext
    -\startmarkdown
    -A quote from William Shakespeare's King Lear:
    -
    -> This is the excellent foppery of the world that when we are
    -> sick in fortune---often the surfeit of our own behavior---we
    -> make guilty of our disasters the sun, the moon, and the
    -> stars [...]
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    This is the excellent foppery of the world that when we are sick in +fortune—often the surfeit of our own behavior—we make guilty of our +disasters the sun, the moon, and the stars […]

    +
    +
    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\def\markdownRendererBlockQuoteBegin{\startquotation}
    +\def\markdownRendererBlockQuoteEnd{\stopquotation}
    +\starttext
    +\startmarkdown
    +A quote from William Shakespeare's King Lear:
    +
    +> This is the excellent foppery of the world that when we are
    +> sick in fortune---often the surfeit of our own behavior---we
    +> make guilty of our disasters the sun, the moon, and the
    +> stars [...]
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    A quote from William Shakespeare’s King Lear:

    -

    This is the excellent foppery of the world that when we are sick in fortune—often the surfeit of our own behavior—we make guilty of our disasters the sun, the moon, and the stars […]

    -
    -
    -

    2.3.1.17 Code Block Renderers

    -

    The \markdownRendererInputVerbatim macro represents a code block. The macro receives a single argument that corresponds to the filename of a file contaning the code block contents.

    -

    The \markdownRendererInputFencedCode macro represents a fenced code block. This macro will only be produced, when the 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.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage{verbatim}
    -\usepackage[hyphens]{url}
    -\usepackage[fencedCode]{markdown}
    -\markdownSetup{
    -  renderers = {
    -    interblockSeparator = {
    -      \def\markdownRendererInterblockSeparator{%
    -        \par
    -        \def\markdownRendererInterblockSeparator{%
    -          \def\markdownRendererInterblockSeparator{%
    -            \par
    -          }%
    -        }%
    -      }%
    -    },
    -    inputVerbatim = {
    -      is contained in file \url{#1}:%
    -      \verbatiminput{#1}%
    -    },
    -    inputFencedCode = {
    -      in #2 \markdownRendererInputVerbatim{#1}%
    -    },
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -The following code
    -
    -    def foo(bar):
    -      if len(bar) <= 1:
    -        return bar[0]
    -      elif len(bar) == 2:
    -        return sorted(bar)
    -      else:
    -        baz = len(bar) // 2
    -        return foo(bar[baz:], bar[:baz])
    -
    -The following code
    -
    -~~~ Python
    ->>> foo([4, 2, 1, 3])
    -[1, 2, 3, 4]
    -~~~~~~~~~~
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text except for the filename, which may differ:

    -
    -

    The following code is contained in file ./_markdown_document/882453149edcf288976647f6fe147ada.verbatim:

    -
    def foo(bar):
    -  if len(bar) <= 1:
    -    return bar[:1]
    -  elif len(bar) == 2:
    -    return sorted(bar)
    -  else:
    -    baz = bar[len(bar) // 2]
    -    return (
    -      foo([qux for qux in bar if qux < baz]) + [baz] +
    -      foo([qux for qux in bar if qux > baz])
    -    )
    -

    The following code in Python contained in file ./_markdown_document/cf2a96e2120cef5b1fae5fea36fcc27b.verbatim:

    -
    >>> foo([4, 2, 1, 3])
    -[1, 2, 3, 4]
    -
    -

    2.3.1.18 YAML Metadata Renderers

    -

    The \markdownRendererJekyllDataBegin macro represents the beginning of a yaml document. This macro will only be produced when the jekyllData option is enabled. The macro receives no arguments.

    -

    The \markdownRendererJekyllDataEnd macro represents the end of a yaml document. This macro will only be produced when the jekyllData option is enabled. The macro receives no arguments.

    -

    The \markdownRendererJekyllDataMappingBegin macro represents the beginning of a mapping in a yaml document. This macro will only be produced when the jekyllData option is enabled. The macro receives two arguments: the scalar key in the parent structure, cast to a string following yaml serialization rules, and the number of items in the mapping.

    -

    The \markdownRendererJekyllDataMappingEnd macro represents the end of a mapping in a yaml document. This macro will only be produced when the jekyllData option is enabled. The macro receives no arguments.

    -

    The \markdownRendererJekyllDataSequenceBegin macro represents the beginning of a sequence in a yaml document. This macro will only be produced when the jekyllData option is enabled. The macro receives two arguments: the scalar key in the parent structure, cast to a string following yaml serialization rules, and the number of items in the sequence.

    -

    The \markdownRendererJekyllDataSequenceEnd macro represents the end of a sequence in a yaml document. This macro will only be produced when the jekyllData option is enabled. The macro receives no arguments.

    -

    The \markdownRendererJekyllDataBoolean macro represents a boolean scalar value in a yaml document. This macro will only be produced when the jekyllData option is enabled. The macro receives two arguments: the scalar key in the parent structure, and the scalar value, both cast to a string following yaml serialization rules.

    -

    The \markdownRendererJekyllDataNumber macro represents a numeric scalar value in a yaml document. This macro will only be produced when the jekyllData option is enabled. The macro receives two arguments: the scalar key in the parent structure, and the scalar value, both cast to a string following yaml serialization rules.

    -

    The \markdownRendererJekyllDataString macro represents a string scalar value in a yaml document. This macro will only be produced when the jekyllData option is enabled. The macro receives two arguments: the scalar key in the parent structure, cast to a string following yaml serialization rules, and the scalar value.

    -

    The \markdownRendererJekyllDataEmpty macro represents an empty scalar value in a yaml document. This macro will only be produced when the jekyllData option is enabled. The macro receives one argument: the scalar key in the parent structure, cast to a string following yaml serialization rules.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownOptionJekyllData{true}
    -\def\markdownRendererJekyllDataString#1#2{\gdef\name{#2}}
    -\def\markdownRendererJekyllDataNumber#1#2{\gdef\age{#2}}
    -\def\markdownRendererJekyllDataEnd{%
    -  \name{} is \age{} years old.}
    -\markdownBegin
    ----
    -name: Jane Doe
    -age:  99
    ----
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    This is the excellent foppery of the world that when we are sick in +fortune—often the surfeit of our own behavior—we make guilty of our +disasters the sun, the moon, and the stars […]

    +
    +
    +

    2.3.1.17 Code Block Renderers

    +

    The \markdownRendererInputVerbatim macro represents a +code block. The macro receives a single argument that corresponds to the +filename of a file contaning the code block contents.

    +

    The \markdownRendererInputFencedCode macro represents a +fenced code block. This macro will only be produced, when the +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.

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage{verbatim}
    +\usepackage[hyphens]{url}
    +\usepackage[fencedCode]{markdown}
    +\markdownSetup{
    +  renderers = {
    +    interblockSeparator = {
    +      \def\markdownRendererInterblockSeparator{%
    +        \par
    +        \def\markdownRendererInterblockSeparator{%
    +          \def\markdownRendererInterblockSeparator{%
    +            \par
    +          }%
    +        }%
    +      }%
    +    },
    +    inputVerbatim = {
    +      is contained in file \url{#1}:%
    +      \verbatiminput{#1}%
    +    },
    +    inputFencedCode = {
    +      in #2 \markdownRendererInputVerbatim{#1}%
    +    },
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +The following code
    +
    +    def foo(bar):
    +      if len(bar) <= 1:
    +        return bar[0]
    +      elif len(bar) == 2:
    +        return sorted(bar)
    +      else:
    +        baz = len(bar) // 2
    +        return foo(bar[baz:], bar[:baz])
    +
    +The following code
    +
    +~~~ Python
    +>>> foo([4, 2, 1, 3])
    +[1, 2, 3, 4]
    +~~~~~~~~~~
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text except for the filename, which may +differ:

    +
    +

    The following code is contained in file +./_markdown_document/882453149edcf288976647f6fe147ada.verbatim:

    +
    def foo(bar):
    +  if len(bar) <= 1:
    +    return bar[:1]
    +  elif len(bar) == 2:
    +    return sorted(bar)
    +  else:
    +    baz = bar[len(bar) // 2]
    +    return (
    +      foo([qux for qux in bar if qux < baz]) + [baz] +
    +      foo([qux for qux in bar if qux > baz])
    +    )
    +

    The following code in Python contained in file +./_markdown_document/cf2a96e2120cef5b1fae5fea36fcc27b.verbatim:

    +
    >>> foo([4, 2, 1, 3])
    +[1, 2, 3, 4]
    +
    +

    2.3.1.18 YAML Metadata +Renderers

    +

    The \markdownRendererJekyllDataBegin macro represents +the beginning of a yaml document. This macro will only be +produced when the jekyllData option is +enabled. The macro receives no arguments.

    +

    The \markdownRendererJekyllDataEnd macro represents the +end of a yaml document. This macro will only be produced +when the jekyllData option is enabled. The +macro receives no arguments.

    +

    The \markdownRendererJekyllDataMappingBegin macro +represents the beginning of a mapping in a yaml document. +This macro will only be produced when the +jekyllData option is enabled. The macro +receives two arguments: the scalar key in the parent structure, cast to +a string following yaml serialization rules, and the number +of items in the mapping.

    +

    The \markdownRendererJekyllDataMappingEnd macro +represents the end of a mapping in a yaml document. This +macro will only be produced when the +jekyllData option is enabled. The macro +receives no arguments.

    +

    The \markdownRendererJekyllDataSequenceBegin macro +represents the beginning of a sequence in a yaml document. +This macro will only be produced when the +jekyllData option is enabled. The macro +receives two arguments: the scalar key in the parent structure, cast to +a string following yaml serialization rules, and the number +of items in the sequence.

    +

    The \markdownRendererJekyllDataSequenceEnd macro +represents the end of a sequence in a yaml document. This +macro will only be produced when the +jekyllData option is enabled. The macro +receives no arguments.

    +

    The \markdownRendererJekyllDataBoolean macro represents +a boolean scalar value in a yaml document. This macro will +only be produced when the jekyllData +option is enabled. The macro receives two arguments: the scalar key in +the parent structure, and the scalar value, both cast to a string +following yaml serialization rules.

    +

    The \markdownRendererJekyllDataNumber macro represents a +numeric scalar value in a yaml document. This macro will +only be produced when the jekyllData +option is enabled. The macro receives two arguments: the scalar key in +the parent structure, and the scalar value, both cast to a string +following yaml serialization rules.

    +

    The \markdownRendererJekyllDataString macro represents a +string scalar value in a yaml document. This macro will +only be produced when the jekyllData +option is enabled. The macro receives two arguments: the scalar key in +the parent structure, cast to a string following yaml +serialization rules, and the scalar value.

    +

    The \markdownRendererJekyllDataEmpty macro represents an +empty scalar value in a yaml document. This macro will only +be produced when the jekyllData option is +enabled. The macro receives one argument: the scalar key in the parent +structure, cast to a string following yaml serialization +rules.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownOptionJekyllData{true}
    +\def\markdownRendererJekyllDataString#1#2{\gdef\name{#2}}
    +\def\markdownRendererJekyllDataNumber#1#2{\gdef\age{#2}}
    +\def\markdownRendererJekyllDataEnd{%
    +  \name{} is \age{} years old.}
    +\markdownBegin
    +---
    +name: Jane Doe
    +age:  99
    +---
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Jane Doe is 99 years old.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[jekyllData]{markdown}
    -\markdownSetup{
    -  renderers = {
    -    jekyllDataString = {\gdef\name{#2}},
    -    jekyllDataNumber = {\gdef\age{#2}},
    -    jekyllDataEnd = {\name{} is \age{} years old.},
    -  }
    -}
    -\begin{document}
    -
    -\begin{markdown}
    ----
    -name: Jane Doe
    -age:  99
    ----
    -\end{markdown}
    -
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[jekyllData]{markdown}
    +\markdownSetup{
    +  renderers = {
    +    jekyllDataString = {\gdef\name{#2}},
    +    jekyllDataNumber = {\gdef\age{#2}},
    +    jekyllDataEnd = {\name{} is \age{} years old.},
    +  }
    +}
    +\begin{document}
    +
    +\begin{markdown}
    +---
    +name: Jane Doe
    +age:  99
    +---
    +\end{markdown}
    +
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Jane Doe is 99 years old.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[jekyllData = yes]
    -\def\markdownRendererJekyllDataString#1#2{\gdef\name{#2}}
    -\def\markdownRendererJekyllDataNumber#1#2{\gdef\age{#2}}
    -\def\markdownRendererJekyllDataEnd{%
    -  \name{} is \age{} years old.}
    -\starttext
    -
    -\startmarkdown
    ----
    -name: Jane Doe
    -age:  99
    ----
    -\stopmarkdown
    -
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[jekyllData = yes]
    +\def\markdownRendererJekyllDataString#1#2{\gdef\name{#2}}
    +\def\markdownRendererJekyllDataNumber#1#2{\gdef\age{#2}}
    +\def\markdownRendererJekyllDataEnd{%
    +  \name{} is \age{} years old.}
    +\starttext
    +
    +\startmarkdown
    +---
    +name: Jane Doe
    +age:  99
    +---
    +\stopmarkdown
    +
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Jane Doe is 99 years old.

    -

    2.3.1.19 Heading Renderers

    -

    The \markdownRendererHeadingOne macro represents a first level heading. The macro receives a single argument that corresponds to the heading text.

    -

    The \markdownRendererHeadingTwo macro represents a second level heading. The macro receives a single argument that corresponds to the heading text.

    -

    The \markdownRendererHeadingThree macro represents a third level heading. The macro receives a single argument that corresponds to the heading text.

    -

    The \markdownRendererHeadingFour macro represents a fourth level heading. The macro receives a single argument that corresponds to the heading text.

    -

    The \markdownRendererHeadingFive macro represents a fifth level heading. The macro receives a single argument that corresponds to the heading text.

    -

    The \markdownRendererHeadingSix macro represents a sixth level heading. The macro receives a single argument that corresponds to the heading text.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownRendererInterblockSeparator{}
    -\def\markdownRendererHeadingOne{1}
    -\def\markdownRendererHeadingTwo{2}
    -\def\markdownRendererHeadingThree{3}
    -\def\markdownRendererHeadingFour{4}
    -\def\markdownRendererHeadingFive{5}
    -\def\markdownRendererHeadingSix{6}
    -\markdownBegin
    -######
    -#####
    -#####
    -###
    -######
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    2.3.1.19 Heading Renderers

    +

    The \markdownRendererHeadingOne macro represents a first +level heading. The macro receives a single argument that corresponds to +the heading text.

    +

    The \markdownRendererHeadingTwo macro represents a +second level heading. The macro receives a single argument that +corresponds to the heading text.

    +

    The \markdownRendererHeadingThree macro represents a +third level heading. The macro receives a single argument that +corresponds to the heading text.

    +

    The \markdownRendererHeadingFour macro represents a +fourth level heading. The macro receives a single argument that +corresponds to the heading text.

    +

    The \markdownRendererHeadingFive macro represents a +fifth level heading. The macro receives a single argument that +corresponds to the heading text.

    +

    The \markdownRendererHeadingSix macro represents a sixth +level heading. The macro receives a single argument that corresponds to +the heading text.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownRendererInterblockSeparator{}
    +\def\markdownRendererHeadingOne{1}
    +\def\markdownRendererHeadingTwo{2}
    +\def\markdownRendererHeadingThree{3}
    +\def\markdownRendererHeadingFour{4}
    +\def\markdownRendererHeadingFive{5}
    +\def\markdownRendererHeadingSix{6}
    +\markdownBegin
    +######
    +#####
    +#####
    +###
    +######
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    65536

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage{markdown}
    -\markdownSetup{
    -  renderers = {
    -    interblockSeparator = {},
    -    headingOne = 1,
    -    headingTwo = 2,
    -    headingThree = 3,
    -    headingFour = 4,
    -    headingFive = 5,
    -    headingSix = 6,
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -######
    -#####
    -#####
    -###
    -######
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage{markdown}
    +\markdownSetup{
    +  renderers = {
    +    interblockSeparator = {},
    +    headingOne = 1,
    +    headingTwo = 2,
    +    headingThree = 3,
    +    headingFour = 4,
    +    headingFive = 5,
    +    headingSix = 6,
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +######
    +#####
    +#####
    +###
    +######
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    65536

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\def\markdownRendererInterblockSeparator{}
    -\def\markdownRendererHeadingOne{1}
    -\def\markdownRendererHeadingTwo{2}
    -\def\markdownRendererHeadingThree{3}
    -\def\markdownRendererHeadingFour{4}
    -\def\markdownRendererHeadingFive{5}
    -\def\markdownRendererHeadingSix{6}
    -\starttext
    -\startmarkdown
    -######
    -#####
    -#####
    -###
    -######
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\def\markdownRendererInterblockSeparator{}
    +\def\markdownRendererHeadingOne{1}
    +\def\markdownRendererHeadingTwo{2}
    +\def\markdownRendererHeadingThree{3}
    +\def\markdownRendererHeadingFour{4}
    +\def\markdownRendererHeadingFive{5}
    +\def\markdownRendererHeadingSix{6}
    +\starttext
    +\startmarkdown
    +######
    +#####
    +#####
    +###
    +######
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    65536

    -

    2.3.1.20 Horizontal Rule Renderer

    -

    The \markdownRendererHorizontalRule macro represents a horizontal rule. The macro receives no arguments.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownRendererHorizontalRule{\vfil\break}
    -\markdownBegin
    -This is the first page.
    -
    -***
    -
    -This is the second page.
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    2.3.1.20 Horizontal Rule +Renderer

    +

    The \markdownRendererHorizontalRule macro represents a +horizontal rule. The macro receives no arguments.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownRendererHorizontalRule{\vfil\break}
    +\markdownBegin
    +This is the first page.
    +
    +***
    +
    +This is the second page.
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    This is the first page.


    This is the second page.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage{markdown}
    -\markdownSetup{
    -  renderers = {
    -    horizontalRule = \newpage,
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -This is the first page.
    -
    -***
    -
    -This is the second page.
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage{markdown}
    +\markdownSetup{
    +  renderers = {
    +    horizontalRule = \newpage,
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +This is the first page.
    +
    +***
    +
    +This is the second page.
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    This is the first page.


    This is the second page.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\def\markdownRendererHorizontalRule{\page[yes]}
    -\starttext
    -\startmarkdown
    -This is the first page.
    -
    -***
    -
    -This is the second page.
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\def\markdownRendererHorizontalRule{\page[yes]}
    +\starttext
    +\startmarkdown
    +This is the first page.
    +
    +***
    +
    +This is the second page.
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    This is the first page.


    This is the second page.

    -

    2.3.1.21 Footnote Renderer

    -

    The \markdownRendererFootnote macro represents a footnote. This macro will only be produced, when the footnotes option is enabled. The macro receives a single argument that corresponds to the footnote text.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownOptionFootnotes{true}
    -\def\markdownRendererFootnote#1{ (and \lowercase{#1})}
    -\markdownBegin
    -This is some text[^1] and this is some other text[^2].
    -
    - [^1]: this is a footnote
    -
    - [^2]: this is some other footnote
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    This is some text (and this is a footnote) and this is some other text (and this is some other footnote).

    -
    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[footnotes]{markdown}
    -\markdownSetup{
    -  renderers = {
    -    footnote = { (and \MakeLowercase{#1})},
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -This is some text[^1] and this is some other text[^2].
    -
    - [^1]: this is a footnote
    -
    - [^2]: this is some other footnote
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    This is some text (and this is a footnote) and this is some other text (and this is some other footnote).

    -
    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[footnotes = yes]
    -\def\markdownRendererFootnote#1{ (and \lowercase{#1})}
    -\starttext
    -\startmarkdown
    -This is some text[^1] and this is some other text[^2].
    -
    - [^1]: this is a footnote
    -
    - [^2]: this is some other footnote
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    This is some text (and this is a footnote) and this is some other text (and this is some other footnote).

    -
    -

    2.3.1.22 Parenthesized Citations Renderer

    -

    The \markdownRendererCite macro represents a string of one or more parenthetical citations. This macro will only be produced, when the citations option is enabled. The macro receives the parameter {number of citations} followed by ⟨suppress author{prenote}{postnote}{name} repeated ⟨number of citations⟩ times. The ⟨suppress author⟩ parameter is either the token -, when the author’s name is to be suppressed, or + otherwise.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \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:

    -
    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.

    -
    -

    2.3.1.23 Text Citations Renderer

    -

    The \markdownRendererTextCite macro represents a string of one or more text citations. This macro will only be produced, when the citations option is enabled. The macro receives parameters in the same format as the \markdownRendererCite macro.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \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:

    -
    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.

    -
    -

    2.3.1.24 Table Renderer

    -

    The \markdownRendererTable macro represents a table. This macro will only be produced, when the pipeTables option is enabled. The macro receives the parameters {caption}{number of rows}{number of columns} followed by {alignments} and then by {row} repeated ⟨number of rows⟩ times, where ⟨row⟩ is {column} repeated ⟨number of columns⟩ times, ⟨alignments⟩ is ⟨alignment⟩ repeated ⟨number of columns⟩ times, and ⟨alignment⟩ is one of the following:

    +

    2.3.1.21 Footnote Renderer

    +

    The \markdownRendererFootnote macro represents a +footnote. This macro will only be produced, when the +footnotes option is enabled. The macro +receives a single argument that corresponds to the footnote text.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownOptionFootnotes{true}
    +\def\markdownRendererFootnote#1{ (and \lowercase{#1})}
    +\markdownBegin
    +This is some text[^1] and this is some other text[^2].
    +
    + [^1]: this is a footnote
    +
    + [^2]: this is some other footnote
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    This is some text (and this is a footnote) and this is some other +text (and this is some other footnote).

    +
    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[footnotes]{markdown}
    +\markdownSetup{
    +  renderers = {
    +    footnote = { (and \MakeLowercase{#1})},
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +This is some text[^1] and this is some other text[^2].
    +
    + [^1]: this is a footnote
    +
    + [^2]: this is some other footnote
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    This is some text (and this is a footnote) and this is some other +text (and this is some other footnote).

    +
    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[footnotes = yes]
    +\def\markdownRendererFootnote#1{ (and \lowercase{#1})}
    +\starttext
    +\startmarkdown
    +This is some text[^1] and this is some other text[^2].
    +
    + [^1]: this is a footnote
    +
    + [^2]: this is some other footnote
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    This is some text (and this is a footnote) and this is some other +text (and this is some other footnote).

    +
    +

    2.3.1.22 Parenthesized Citations +Renderer

    +

    The \markdownRendererCite macro represents a string of +one or more parenthetical citations. This macro will only be produced, +when the citations option is enabled. The +macro receives the parameter {number of +citations} followed by ⟨suppress author⟩ +{prenote}{postnote}{name} +repeated ⟨number of citations⟩ times. The ⟨suppress +author⟩ parameter is either the token -, when the +author’s name is to be suppressed, or + otherwise.

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \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:

    +
    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.

    +
    +

    2.3.1.23 Text Citations +Renderer

    +

    The \markdownRendererTextCite macro represents a string +of one or more text citations. This macro will only be produced, when +the citations option is enabled. The macro +receives parameters in the same format as the +\markdownRendererCite macro.

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \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:

    +
    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.

    +
    +

    2.3.1.24 Table Renderer

    +

    The \markdownRendererTable macro represents a table. +This macro will only be produced, when the +pipeTables option is enabled. The macro +receives the parameters +{caption}{number of +rows}{number of columns} +followed by {alignments} and then +by {row} repeated ⟨number of +rows⟩ times, where ⟨row⟩ is +{column} repeated ⟨number of +columns⟩ times, ⟨alignments⟩ is ⟨alignment⟩ +repeated ⟨number of columns⟩ times, and ⟨alignment⟩ is +one of the following:

      -
    • d – The corresponding column has an unspecified (default) alignment.
    • +
    • d – The corresponding column has an unspecified +(default) alignment.
    • l – The corresponding column is left-aligned.
    • c – The corresponding column is centered.
    • r – The corresponding column is right-aligned.
    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[pipeTables, tableCaptions]{markdown}
    -\newcount\rowCounter
    -\newcount\columnCounter
    -\makeatletter
    -\def\processRow#1{%
    -  \columnCounter=1%
    -  \ifnum\rowCounter=0\relax
    -    As for the alignment,
    -  \else
    -    In row \the\rowCounter,
    -  \fi
    -  \processColumn#1
    -  \advance\rowCounter by 1\relax
    -  \ifnum\rowCounter>\rowTotal\relax
    -    \expandafter\@gobble
    -  \fi\processRow}%
    -\def\processColumn#1{%
    -  column number \the\columnCounter{}
    -  \ifnum\rowCounter=0\relax
    -    \if#1d{}has default alignment\fi
    -    \if#1l{}is left-aligned\fi
    -    \if#1c{}is centered\fi
    -    \if#1r{}is right-aligned\fi
    -  \else
    -    says \emph{#1}%
    -  \fi
    -  \advance\columnCounter by 1\relax
    -  \ifnum\columnCounter<\columnTotal\relax, \fi
    -  \ifnum\columnCounter=\columnTotal\relax, and \fi
    -  \ifnum\columnCounter>\columnTotal\relax
    -    .\expandafter\@gobble
    -  \fi\processColumn}%
    -\makeatother
    -\markdownSetup{
    -  renderers = {
    -    table = {%
    -      This is a table with caption \emph{#1} that is #3 colums wide
    -      and #2 rows long.
    -      \rowCounter=0%
    -      \def\rowTotal{#2}%
    -      \def\columnTotal{#3}%
    -      \processRow
    -    },
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -| Right | Left | Default | Center |
    -|------:|:-----|---------|:------:|
    -|   12  |  12  |    12   |    12  |
    -|  123  |  123 |   123   |   123  |
    -|    1  |    1 |     1   |     1  |
    -
    -  : Demonstration of pipe table syntax
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    -
    -

    This is a table with caption Demonstration of pipe table syntax that is 4 colums wide and 4 rows long. As for the alignment, column number 1 is right-aligned, column number 2 is left-aligned, column number 3 has default alignment, and column number 4 is centered. In row 1, column number 1 says Right, column number 2 says Left, column number 3 says Default, and column number 4 says Center. In row 2, column number 1 says 12, column number 2 says 12, column number 3 says 12, and column number 4 says 12. In row 3, column number 1 says 123, column number 2 says 123, column number 3 says 123, and column number 4 says 123. In row 4, column number 1 says 1, column number 2 says 1, column number 3 says 1, and column number 4 says 1.

    -
    -

    2.3.1.25 HTML Comment Renderers

    -

    The \markdownRendererInlineHtmlComment macro represents the contents of an inline HTML comment. This macro will only be produced, when the html option is enabled. The macro receives a single argument that corresponds to the contents of the HTML comment.

    -

    The \markdownRendererBlockHtmlCommentBegin and \markdownRendererBlockHtmlCommentEnd macros represent the beginning and the end of a block HTML comment. The macros receive no arguments.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[html]{markdown}
    -\usepackage{marginnote}
    -\markdownSetup{
    -  renderers = {
    -    inlineHtmlComment = {\marginnote{#1}},
    -    blockHtmlCommentBegin = {\begin{quote}},
    -    blockHtmlCommentEnd = {\end{quote}},
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -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 footnotes. -->
    -
    -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}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following body text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[pipeTables, tableCaptions]{markdown}
    +\newcount\rowCounter
    +\newcount\columnCounter
    +\makeatletter
    +\def\processRow#1{%
    +  \columnCounter=1%
    +  \ifnum\rowCounter=0\relax
    +    As for the alignment,
    +  \else
    +    In row \the\rowCounter,
    +  \fi
    +  \processColumn#1
    +  \advance\rowCounter by 1\relax
    +  \ifnum\rowCounter>\rowTotal\relax
    +    \expandafter\@gobble
    +  \fi\processRow}%
    +\def\processColumn#1{%
    +  column number \the\columnCounter{}
    +  \ifnum\rowCounter=0\relax
    +    \if#1d{}has default alignment\fi
    +    \if#1l{}is left-aligned\fi
    +    \if#1c{}is centered\fi
    +    \if#1r{}is right-aligned\fi
    +  \else
    +    says \emph{#1}%
    +  \fi
    +  \advance\columnCounter by 1\relax
    +  \ifnum\columnCounter<\columnTotal\relax, \fi
    +  \ifnum\columnCounter=\columnTotal\relax, and \fi
    +  \ifnum\columnCounter>\columnTotal\relax
    +    .\expandafter\@gobble
    +  \fi\processColumn}%
    +\makeatother
    +\markdownSetup{
    +  renderers = {
    +    table = {%
    +      This is a table with caption \emph{#1} that is #3 colums wide
    +      and #2 rows long.
    +      \rowCounter=0%
    +      \def\rowTotal{#2}%
    +      \def\columnTotal{#3}%
    +      \processRow
    +    },
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +| Right | Left | Default | Center |
    +|------:|:-----|---------|:------:|
    +|   12  |  12  |    12   |    12  |
    +|  123  |  123 |   123   |   123  |
    +|    1  |    1 |     1   |     1  |
    +
    +  : Demonstration of pipe table syntax
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    +
    +

    This is a table with caption Demonstration of pipe table +syntax that is 4 colums wide and 4 rows long. As for the alignment, +column number 1 is right-aligned, column number 2 is left-aligned, +column number 3 has default alignment, and column number 4 is centered. +In row 1, column number 1 says Right, column number 2 says +Left, column number 3 says Default, and column number +4 says Center. In row 2, column number 1 says 12, +column number 2 says 12, column number 3 says 12, and +column number 4 says 12. In row 3, column number 1 says +123, column number 2 says 123, column number 3 says +123, and column number 4 says 123. In row 4, column +number 1 says 1, column number 2 says 1, column number +3 says 1, and column number 4 says 1.

    +
    +

    2.3.1.25 HTML Comment +Renderers

    +

    The \markdownRendererInlineHtmlComment macro represents +the contents of an inline HTML comment. This macro will +only be produced, when the html option is +enabled. The macro receives a single argument that corresponds to the +contents of the HTML comment.

    +

    The \markdownRendererBlockHtmlCommentBegin and +\markdownRendererBlockHtmlCommentEnd macros represent the +beginning and the end of a block HTML comment. The macros +receive no arguments.

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[html]{markdown}
    +\usepackage{marginnote}
    +\markdownSetup{
    +  renderers = {
    +    inlineHtmlComment = {\marginnote{#1}},
    +    blockHtmlCommentBegin = {\begin{quote}},
    +    blockHtmlCommentEnd = {\end{quote}},
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +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 footnotes. -->
    +
    +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}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +lualatex document.tex
    +

    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:

    +

    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:

    -

    Side notes are displayed in the horizontal margins next to the relevant passages, which makes them easier for the reader to find than footnotes.

    -
    -

    2.3.1.26 HTML Tag and Element Renderers

    -

    The \markdownRendererInlineHtmlTag macro represents an opening, closing, or empty inline HTML tag. This macro will only be produced, when the html option is enabled. The macro receives a single argument that corresponds to the contents of the HTML tag.

    -

    The \markdownRendererInputBlockHtmlElement macro represents a block HTML element. This macro will only be produced, when the html option is enabled. The macro receives a single argument that filename of a file containing the contents of the HTML element.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[html]{markdown}
    -\usepackage{marginnote}
    -\usepackage{verbatim}
    -\markdownSetup{
    -  renderers = {
    -    inlineHtmlTag = {\textbf{#1}},
    -    inputBlockHtmlElement = {\verbatiminput{#1}},
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -<b>_Hello,_ world!</b><br/>
    -
    -<div>_Hello,_ world!</div>
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following body text:

    +

    Side notes are displayed in the horizontal margins next to the +relevant passages, which makes them easier for the reader to +find than footnotes.

    +
    +

    2.3.1.26 HTML Tag and Element +Renderers

    +

    The \markdownRendererInlineHtmlTag macro represents an +opening, closing, or empty inline HTML tag. This macro will +only be produced, when the html option is +enabled. The macro receives a single argument that corresponds to the +contents of the HTML tag.

    +

    The \markdownRendererInputBlockHtmlElement macro +represents a block HTML element. This macro will only be +produced, when the html option is enabled. +The macro receives a single argument that filename of a file containing +the contents of the HTML element.

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[html]{markdown}
    +\usepackage{marginnote}
    +\usepackage{verbatim}
    +\markdownSetup{
    +  renderers = {
    +    inlineHtmlTag = {\textbf{#1}},
    +    inputBlockHtmlElement = {\verbatiminput{#1}},
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +<b>_Hello,_ world!</b><br/>
    +
    +<div>_Hello,_ world!</div>
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following body text:

    _Hello,_ world!

    <div>_Hello,_ world!</div>
    -

    2.3.1.27 Attribute Renderers

    -

    The following macros are only produced, when the headerAttributes option is enabled.

    -

    \markdownRendererAttributeIdentifier represents the ⟨identifier⟩ of a markdown element (id="identifier" in HTML and #identifier⟩ in Markdown’s headerAttributes syntax extension). The macro receives a single attribute that corresponds to the ⟨identifier⟩.

    -

    \markdownRendererAttributeClassName represents the ⟨class name⟩ of a markdown element (class="class name⟩ …" in HTML and .class name⟩ in Markdown’s headerAttributes syntax extension). The macro receives a single attribute that corresponds to the .

    -

    \markdownRendererAttributeKeyValue represents a HTML attribute in the form ⟨key=value⟩ that is neither an identifier nor a class name. The macro receives two attributes that correspond to the ⟨key⟩ and the ⟨value⟩, respectively.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[headerAttributes, underscores=false]{markdown}
    -\markdownSetup{
    -  renderers = {
    -    attributeIdentifier = {%
    -      \par
    -      \emph{(Identifier: #1)}
    -      \par
    -    },
    -    attributeClassName = {%
    -      \par
    -      \emph{(Class name: #1)}
    -      \par
    -    },
    -    attributeKeyValue = {%
    -      \par
    -      \emph{(Key: #1, Value: #2)}
    -      \par
    -    },
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -
    -# First top-level heading {jane=doe}
    -
    -## A subheading {#identifier}
    -
    -# Second top-level heading {.class_name}
    -
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    2.3.1.27 Attribute Renderers

    +

    The following macros are only produced, when the +headerAttributes option is enabled.

    +

    \markdownRendererAttributeIdentifier represents the +⟨identifier⟩ of a markdown element +(id="identifier" in HTML and +#identifier⟩ in Markdown’s +headerAttributes syntax extension). The +macro receives a single attribute that corresponds to the +⟨identifier⟩.

    +

    \markdownRendererAttributeClassName represents the +⟨class name⟩ of a markdown element +(class="class name⟩ …" in HTML and +.class name⟩ in Markdown’s +headerAttributes syntax extension). The +macro receives a single attribute that corresponds to the .

    +

    \markdownRendererAttributeKeyValue represents a HTML +attribute in the form ⟨key=value⟩ that +is neither an identifier nor a class name. The macro receives two +attributes that correspond to the ⟨key⟩ and the +⟨value⟩, respectively.

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[headerAttributes, underscores=false]{markdown}
    +\markdownSetup{
    +  renderers = {
    +    attributeIdentifier = {%
    +      \par
    +      \emph{(Identifier: #1)}
    +      \par
    +    },
    +    attributeClassName = {%
    +      \par
    +      \emph{(Class name: #1)}
    +      \par
    +    },
    +    attributeKeyValue = {%
    +      \par
    +      \emph{(Key: #1, Value: #2)}
    +      \par
    +    },
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +
    +# First top-level heading {jane=doe}
    +
    +## A subheading {#identifier}
    +
    +# Second top-level heading {.class_name}
    +
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    First top-level heading

    (Key: Jane, Value: Doe)

    @@ -6759,41 +9383,52 @@ Thomas,Edison,1847

    Second top-level heading

    (Class name: class_name)

    -

    2.3.1.28 Header Attribute Context Renderers

    -

    The following macros are only produced, when the headerAttributes option is enabled.

    -

    The \markdownRendererHeaderAttributeContextBegin and \markdownRendererHeaderAttributeContextEnd macros represent the beginning and the end of a section in which the attributes of a heading apply. The macros receive no arguments.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[headerAttributes]{markdown}
    -\markdownSetup{
    -  renderers = {
    -    headerAttributeContextBegin = {%
    -      \par
    -      \emph{(The beginning of a header attribute context)}
    -      \par
    -    },
    -    headerAttributeContextBegin = {%
    -      \par
    -      \emph{(The end of a header attribute context)}
    -      \par
    -    },
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -
    -# First top-level heading
    -
    -## A subheading {#identifier}
    -
    -# Second top-level heading {.class_name}
    -
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    2.3.1.28 Header Attribute Context +Renderers

    +

    The following macros are only produced, when the +headerAttributes option is enabled.

    +

    The \markdownRendererHeaderAttributeContextBegin and +\markdownRendererHeaderAttributeContextEnd macros represent +the beginning and the end of a section in which the attributes of a +heading apply. The macros receive no arguments.

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[headerAttributes]{markdown}
    +\markdownSetup{
    +  renderers = {
    +    headerAttributeContextBegin = {%
    +      \par
    +      \emph{(The beginning of a header attribute context)}
    +      \par
    +    },
    +    headerAttributeContextBegin = {%
    +      \par
    +      \emph{(The end of a header attribute context)}
    +      \par
    +    },
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +
    +# First top-level heading
    +
    +## A subheading {#identifier}
    +
    +# Second top-level heading {.class_name}
    +
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    First top-level heading

    (The beginning of a header attribute context)

    @@ -6803,350 +9438,465 @@ Thomas,Edison,1847

    Second top-level heading

    (The end of a header attribute context)

    -

    2.3.1.29 Strike-Through Renderer

    -

    The \markdownRendererStrikeThrough 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 strikeThrough option is enabled.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownOptionStrikeThrough{true}
    -\input soulutf8.sty
    -\def\markdownRendererStrikeThrough#1{\st{#1}}
    -\markdownBegin
    -This is ~~a lunar roving vehicle~~ strike-through text.
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    2.3.1.29 Strike-Through +Renderer

    +

    The \markdownRendererStrikeThrough 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 strikeThrough option is +enabled.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownOptionStrikeThrough{true}
    +\input soulutf8.sty
    +\def\markdownRendererStrikeThrough#1{\st{#1}}
    +\markdownBegin
    +This is ~~a lunar roving vehicle~~ strike-through text.
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    This is a lunar roving vehicle strike-through text.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[strikeThrough]{markdown}
    -\usepackage{soulutf8}
    -\markdownSetup{
    -  renderers = {
    -    strikeThrough = {\st{#1}},
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -This is ~~a lunar roving vehicle~~ strike-through text.
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[strikeThrough]{markdown}
    +\usepackage{soulutf8}
    +\markdownSetup{
    +  renderers = {
    +    strikeThrough = {\st{#1}},
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +This is ~~a lunar roving vehicle~~ strike-through text.
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    This is a lunar roving vehicle strike-through text.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[strikeThrough = yes]
    -\def\markdownRendererStrikeThrough#1{\overstrikes{#1}}
    -\starttext
    -\startmarkdown
    -This is ~~a lunar roving vehicle~~ strike-through text.
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[strikeThrough = yes]
    +\def\markdownRendererStrikeThrough#1{\overstrikes{#1}}
    +\starttext
    +\startmarkdown
    +This is ~~a lunar roving vehicle~~ strike-through text.
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    This is a lunar roving vehicle strike-through text.

    -

    2.3.1.30 Superscript Renderer

    -

    The \markdownRendererSuperscript 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 superscripts option is enabled.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownOptionSuperscripts{true}
    -\def\markdownRendererSuperscript#1{ taken to the power of #1}
    -\markdownBegin
    -2^10^ is 1024.
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    2.3.1.30 Superscript Renderer

    +

    The \markdownRendererSuperscript 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 superscripts option is +enabled.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownOptionSuperscripts{true}
    +\def\markdownRendererSuperscript#1{ taken to the power of #1}
    +\markdownBegin
    +2^10^ is 1024.
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    2 taken to the power of 10 is 1024.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[superscripts]{markdown}
    -\markdownSetup{
    -  renderers = {
    -    superscript = { taken to the power of #1},
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -2^10^ is 1024.
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[superscripts]{markdown}
    +\markdownSetup{
    +  renderers = {
    +    superscript = { taken to the power of #1},
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +2^10^ is 1024.
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    2 taken to the power of 10 is 1024.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[superscripts = yes]
    -\def\markdownRendererSuperscript#1{ taken to the power of #1}
    -\starttext
    -\startmarkdown
    -2^10^ is 1024.
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[superscripts = yes]
    +\def\markdownRendererSuperscript#1{ taken to the power of #1}
    +\starttext
    +\startmarkdown
    +2^10^ is 1024.
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    2 taken to the power of 10 is 1024.

    -

    2.3.1.31 Subscript Renderer

    -

    The \markdownRendererSubscript 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 subscripts option is enabled.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownOptionSubscripts{true}
    -\def\markdownRendererSubscript#1{ (#1 moles) and }
    -\markdownBegin
    -H~2~O is a liquid.
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    2.3.1.31 Subscript Renderer

    +

    The \markdownRendererSubscript 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 subscripts option is +enabled.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownOptionSubscripts{true}
    +\def\markdownRendererSubscript#1{ (#1 moles) and }
    +\markdownBegin
    +H~2~O is a liquid.
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    H (2 moles) and O is liquid.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[subscripts]{markdown}
    -\markdownSetup{
    -  renderers = {
    -    subscript = { (#1 moles) and },
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -H~2~O is a liquid.
    -\end{markdown}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[subscripts]{markdown}
    +\markdownSetup{
    +  renderers = {
    +    subscript = { (#1 moles) and },
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +H~2~O is a liquid.
    +\end{markdown}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    H (2 moles) and O is liquid.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[subscripts = yes]
    -\def\markdownRendererSubscript#1{ (#1 moles) and }
    -\starttext
    -\startmarkdown
    -H~2~O is a liquid.
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[subscripts = yes]
    +\def\markdownRendererSubscript#1{ (#1 moles) and }
    +\starttext
    +\startmarkdown
    +H~2~O is a liquid.
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    H (2 moles) and O is liquid.

    -

    2.3.2 Token Renderer Prototypes

    -

    By default, token renderers point to package-defined TeX macros, further referred to as prototypes, which provide useful default definitions.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownRendererTildePrototype{%
    -  Packages can specify token renderer prototypes.%
    -}
    -\markdownBegin
    -~
    -\markdownEnd
    -
    -\def\markdownRendererTilde{%
    -  User-defined token renderers take precedence.%
    -}
    -\markdownBegin
    -~
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    2.3.2 Token Renderer +Prototypes

    +

    By default, token renderers point to package-defined TeX macros, further referred to as +prototypes, which provide useful default definitions.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownRendererTildePrototype{%
    +  Packages can specify token renderer prototypes.%
    +}
    +\markdownBegin
    +~
    +\markdownEnd
    +
    +\def\markdownRendererTilde{%
    +  User-defined token renderers take precedence.%
    +}
    +\markdownBegin
    +~
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Packages can specify token renderer prototypes.

    User-defined token renderers take precedence.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage{markdown}
    -\markdownSetup{
    -  rendererPrototypes = {
    -    tilde = {Packages can specify token renderer prototypes.},
    -  },
    -}
    -\begin{document}
    -\begin{markdown}
    -~
    -\end{markdown}
    -
    -\begin{markdown*}{
    -  renderers = {
    -    tilde = {User-defined token renderers take precedence.},
    -  },
    -}
    -~
    -\end{markdown*}
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage{markdown}
    +\markdownSetup{
    +  rendererPrototypes = {
    +    tilde = {Packages can specify token renderer prototypes.},
    +  },
    +}
    +\begin{document}
    +\begin{markdown}
    +~
    +\end{markdown}
    +
    +\begin{markdown*}{
    +  renderers = {
    +    tilde = {User-defined token renderers take precedence.},
    +  },
    +}
    +~
    +\end{markdown*}
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Packages can specify token renderer prototypes.

    User-defined token renderers take precedence.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\def\markdownRendererTildePrototype{%
    -  Packages can specify token renderer prototypes.%
    -}
    -\starttext
    -\startmarkdown
    -~
    -\stopmarkdown
    -
    -\def\markdownRendererTilde{%
    -  User-defined token renderers take precedence.%
    -}
    -\startmarkdown
    -~
    -\stopmarkdown
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\def\markdownRendererTildePrototype{%
    +  Packages can specify token renderer prototypes.%
    +}
    +\starttext
    +\startmarkdown
    +~
    +\stopmarkdown
    +
    +\def\markdownRendererTilde{%
    +  User-defined token renderers take precedence.%
    +}
    +\startmarkdown
    +~
    +\stopmarkdown
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Packages can specify token renderer prototypes.

    User-defined token renderers take precedence.

    -

    2.3.2.1 YAML Metadata Renderer Prototypes

    -

    By default, the renderer prototypes for YAML metadata provide a high-level interface that can be programmed using the markdown/jekyllData key–values from the l3keys module of the 3 kernel.

    -
    Plain TeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \input markdown
    -\def\markdownOptionJekyllData{true}
    -\ExplSyntaxOn
    -\keys_define:nn
    -  { markdown/jekyllData }
    -  {
    -    name .code:n = { \gdef\name{#1} },
    -    age  .code:n = { \gdef\age{#1}  },
    -  }
    -\ExplSyntaxOff
    -\def\markdownRendererJekyllDataEnd{%
    -  \name{} is \age{} years old.}
    -\markdownBegin
    ----
    -name: Jane Doe
    -age:  99
    ----
    -\markdownEnd
    -\bye
    -

    Next, invoke LuaTeX from the terminal:

    -
    luatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +

    2.3.2.1 YAML Metadata Renderer +Prototypes

    +

    By default, the renderer prototypes for YAML metadata provide a +high-level interface that can be programmed using the +markdown/jekyllData key–values from the l3keys module of +the 3 kernel.

    +
    Plain TeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \input markdown
    +\def\markdownOptionJekyllData{true}
    +\ExplSyntaxOn
    +\keys_define:nn
    +  { markdown/jekyllData }
    +  {
    +    name .code:n = { \gdef\name{#1} },
    +    age  .code:n = { \gdef\age{#1}  },
    +  }
    +\ExplSyntaxOff
    +\def\markdownRendererJekyllDataEnd{%
    +  \name{} is \age{} years old.}
    +\markdownBegin
    +---
    +name: Jane Doe
    +age:  99
    +---
    +\markdownEnd
    +\bye
    +

    Next, invoke LuaTeX from the terminal:

    +
    luatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Jane Doe is 99 years old.

    -
    LaTeX Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \documentclass{article}
    -\usepackage[jekyllData]{markdown}
    -\markdownSetup{
    -  jekyllDataRenderers = {
    -    name = {\gdef\name{#1}},
    -    code = {\gdef\age{#1}},
    -  },
    -  renderers = {
    -    jekyllDataEnd = {\name{} is \age{} years old.},
    -  }
    -}
    -\begin{document}
    -
    -\begin{markdown}
    ----
    -name: Jane Doe
    -age:  99
    ----
    -\end{markdown}
    -
    -\end{document}
    -

    Next, invoke LuaTeX from the terminal:

    -
    lualatex document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    LaTeX Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \documentclass{article}
    +\usepackage[jekyllData]{markdown}
    +\markdownSetup{
    +  jekyllDataRenderers = {
    +    name = {\gdef\name{#1}},
    +    code = {\gdef\age{#1}},
    +  },
    +  renderers = {
    +    jekyllDataEnd = {\name{} is \age{} years old.},
    +  }
    +}
    +\begin{document}
    +
    +\begin{markdown}
    +---
    +name: Jane Doe
    +age:  99
    +---
    +\end{markdown}
    +
    +\end{document}
    +

    Next, invoke LuaTeX from the terminal:

    +
    lualatex document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Jane Doe is 99 years old.

    -
    ConTeXt Example
    -

    Using a text editor, create a text document named document.tex with the following content:

    -
    \usemodule[t][markdown]
    -\setupmarkdown[jekyllData = yes]
    -\ExplSyntaxOn
    -\keys_define:nn
    -  { markdown/jekyllData }
    -  {
    -    name .code:n = { \gdef\name{#1} },
    -    age  .code:n = { \gdef\age{#1}  },
    -  }
    -\ExplSyntaxOff
    -\def\markdownRendererJekyllDataEnd{%
    -  \name{} is \age{} years old.}
    -\starttext
    -
    -\startmarkdown
    ----
    -name: Jane Doe
    -age:  99
    ----
    -\stopmarkdown
    -
    -\stoptext
    -

    Next, invoke LuaTeX from the terminal:

    -
    context document.tex
    -

    A PDF document named document.pdf should be produced and contain the following text:

    +
    ConTeXt Example
    +

    Using a text editor, create a text document named +document.tex with the following content:

    +
    \usemodule[t][markdown]
    +\setupmarkdown[jekyllData = yes]
    +\ExplSyntaxOn
    +\keys_define:nn
    +  { markdown/jekyllData }
    +  {
    +    name .code:n = { \gdef\name{#1} },
    +    age  .code:n = { \gdef\age{#1}  },
    +  }
    +\ExplSyntaxOff
    +\def\markdownRendererJekyllDataEnd{%
    +  \name{} is \age{} years old.}
    +\starttext
    +
    +\startmarkdown
    +---
    +name: Jane Doe
    +age:  99
    +---
    +\stopmarkdown
    +
    +\stoptext
    +

    Next, invoke LuaTeX from the terminal:

    +
    context document.tex
    +

    A PDF document named document.pdf should be produced and +contain the following text:

    Jane Doe is 99 years old.

    -
    +

      -
    1. Here is the footnote.↩︎

    2. +
    3. Here is the footnote.↩︎

    4. Here’s one with multiple blocks.

      -

      Subsequent paragraphs are indented to show that they belong to the previous footnote.

      +

      Subsequent paragraphs are indented to show that they belong to the +previous footnote.

      { some.code }
      -

      The whole paragraph can be indented, or just the first line. In this way, multi-paragraph footnotes work like multi-paragraph list items.↩︎

    5. -
    6. Here is the footnote.↩︎

    7. +

      The whole paragraph can be indented, or just the first line. In this +way, multi-paragraph footnotes work like multi-paragraph list items.↩︎

      +
    8. Here is the footnote.↩︎

    9. Here’s one with multiple blocks.

      -

      Subsequent paragraphs are indented to show that they belong to the previous footnote.

      +

      Subsequent paragraphs are indented to show that they belong to the +previous footnote.

      { some.code }
      -

      The whole paragraph can be indented, or just the first line. In this way, multi-paragraph footnotes work like multi-paragraph list items.↩︎

    10. -
    11. Inlines notes are easier to write, since you don’t have to pick an identifier and move down to type the note.↩︎

    12. -
    13. Inlines notes are easier to write, since you don’t have to pick an identifier and move down to type the note.↩︎

    14. +

      The whole paragraph can be indented, or just the first line. In this +way, multi-paragraph footnotes work like multi-paragraph list items.↩︎

      +
    15. Inlines notes are easier to write, +since you don’t have to pick an identifier and move down to type the +note.↩︎

    16. +
    17. Inlines notes are easier to write, +since you don’t have to pick an identifier and move down to type the +note.↩︎

    diff --git a/macros/generic/markdown/markdown.pdf b/macros/generic/markdown/markdown.pdf index b3ab782400..8d6d35f4b9 100644 Binary files a/macros/generic/markdown/markdown.pdf and b/macros/generic/markdown/markdown.pdf differ diff --git a/macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.dtx b/macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.dtx index 1e6e286a73..2a1e2a8d5e 100644 --- a/macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.dtx +++ b/macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.dtx @@ -111,8 +111,8 @@ % \end{macrocode} % % \begin{macrocode} -\def\LaTeXFirstAidDate{2022/02/20} -\def\LaTeXFirstAidVersion{v1.0r} +\def\LaTeXFirstAidDate{2022/06/23} +\def\LaTeXFirstAidVersion{v1.0s} % \end{macrocode} % % \begin{macrocode} @@ -586,6 +586,27 @@ % \end{macrocode} % % +% \subsection{First aid for \pkg{memoir}} +% +% The introduction of \cs{stockheight} and \cs{stockwidth} into the +% kernel requires some first aid. This has to go in \emph{before} +% loading the class, so we cannot check the version string here. +% \begin{macrocode} +\AddToHook{file/memoir.cls/before}[firstaid]{% + \expandafter\def\expandafter\@tempa\string\dimen{}% + \edef\kernel@stockheight{\expandafter\@tempa\meaning\stockheight}% + \edef\kernel@stockwidth{\expandafter\@tempa\meaning\stockwidth}% + \let\stockheight\@undefined + \let\stockwidth\@undefined +} +\AddToHook{file/memoir.cls/after}[firstaid]{% + \dimen\kernel@stockheight=\stockheight + \dimen\kernel@stockwidth=\stockwidth + \dimendef\stockheight=\kernel@stockheight + \dimendef\stockwidth=\kernel@stockwidth +} +% \end{macrocode} +% % % \subsection[Temporary fixes for the kernel (until the next % patch-level release)] diff --git a/macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.pdf b/macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.pdf index b1d179b6ed..04325d3fe5 100644 Binary files a/macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.pdf and b/macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.pdf differ diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/README b/macros/latex/contrib/biblatex-contrib/biblatex-publist/README index 03fc943a6a..2204ba29df 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/README +++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/README @@ -46,6 +46,9 @@ instructions. == CHANGES == +* V. 1.27 (2022-10-03): + - Fix once more plauthor check with non-ASCII chars and macros. + * V. 1.26 (2022-01-05): - Provide means to add peer review information. - Add a data model (*.dbx) file. diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf index 449d209f27..168b332893 100644 Binary files a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf and b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf differ diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex index d36ea6480b..e1b2115212 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex +++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex @@ -102,7 +102,7 @@ \thanks{Please report issues via \protect\url{https://github.com/jspitz/biblatex-publist}.}% } -\date{Version 1.26 2022/01/05} +\date{Version 1.27 2022/10/03} \maketitle \begin{abstract} @@ -625,15 +625,22 @@ which has to be passed to \jfcsmacro{printbibliography}, as in: This will effectively print only publications which have been authored or edited by the person(s) specified as via \jcsmacro{plauthorname} (or the corresponding option). -Of course, you can also use other filter possibilities provided by -\bibltx, such as filtering by type or by keyword. So if you want -to extract all of your articles from a larger database with entries +If you do not use reverse numbering (see below), you can also use other filter +possibilities provided by \bibltx, such as filtering by type or by keyword. +So if you want to extract all of your articles from a larger database with entries of diverse type and authors, specify: \begin{lstlisting}[moretexcs={[1]{printbibliography}}] \printbibliography[heading=none,filter=mine,type=article] \end{lstlisting} % -Note that several reruns of \texttt{latex} might be required to fix the numbering. +Note that this method sometimes requires several reruns of \texttt{latex} +to fix the numbering (with standard ascending numbers). + +With reverse (descending) numbering (\joption{reversenumbering=true}), +the numbering does not correctly work if you filter by type or keyword. +If you need descending numbering, please resort to separated bibliography databases +(as advised in sec.~\ref{sec:example}) rather than to \joption{type} or +\joption{keyword} filtering! \section{Sorting\label{sec:sorting}} @@ -709,6 +716,11 @@ or \begin{description} + \item [{V. 1.27 (2022-10-03):}]~ + \begin{itemize} + \item Fix once more plauthor check with non-ASCII chars and macros. + \end{itemize} + \item [{V. 1.26 (2022-01-05):}]~ \begin{itemize} \item Provide means to add peer review information (see section~\ref{sec:peerreview}). @@ -969,9 +981,9 @@ Gregorio.% Thanks go to Enrico Gregorio (egreg on \emph{tex.stackexchange.com}) for helping me with correct name parsing (actually, the code the package uses is completely his), user gusbrs on \emph{tex.stackexchange.com}, -Marko Budii\'{c}, Ulrike Fischer, Clea F. Rees, Yannick Kalff, Moritz Wemheuer and many -other users for testing, bug reports and suggestions, Nicolas Markey for -\emph{publist.bst} and of course Philipp Lehman and the current +Marko Budii\'{c}, David Carlisle, Ulrike Fischer, Clea F. Rees, Yannick Kalff, +Moritz Wemheuer and many other users for testing, bug reports and suggestions, +Nicolas Markey for \emph{publist.bst} and of course Philipp Lehman and the current \bibltx\ team (Philipp Kime, Moritz Wemheuer, Audrey Boruvka and Joseph Wright) for \bibltx. diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx index d8309df788..c89a6f821f 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx @@ -25,8 +25,8 @@ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\bpl@version{1.26} -\def\bpl@rdate{2022/01/05} +\def\bpl@version{1.27} +\def\bpl@rdate{2022/10/03} \ProvidesFile{publist.bbx}[\bpl@rdate\space v.\bpl@version\space biblatex bibliography style (JSP)] @@ -285,7 +285,7 @@ % 2. Fully expanded macro content comparison \NewExpandableDocumentCommand{\bpl@ifstreq}{ m m m m } { - \str_if_eq:eeTF { #1 } { #2 } { #3 } { #4 } + \str_if_eq:eeTF { \text_purify:n { #1 } } { \text_purify:n { #2 } } { #3 } { #4 } } \ExplSyntaxOff @@ -1512,24 +1512,10 @@ % Link titles if so requested \AtBeginDocument{% -\iftoggle{bpl@linktitle}{% - \DeclareStyleSourcemap{ - \maps[datatype=bibtex]{ - \map[overwrite=true]{ - \step[fieldsource=title, - match=\regexp{(.*)}, - replace=\regexp{\\usebibmacro{bpl:linked}{$1}}, - final=true] - } - \map[overwrite=true]{ - \step[fieldsource=subtitle, - match=\regexp{(.*)}, - replace=\regexp{\\usebibmacro{bpl:linked}{$1}}, - final=true] - } - } - } -}{} + \iftoggle{bpl@linktitle}{% + \DeclareFieldInputHandler{title}{\def\NewValue{\usebibmacro{bpl:linked}{#1}}} + \DeclareFieldInputHandler{subtitle}{\def\NewValue{\usebibmacro{bpl:linked}{#1}}} + }{} } diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx index 06b5b151c6..2de500984f 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx @@ -26,8 +26,8 @@ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\bpl@version{1.26} -\def\bpl@rdate{2022/01/05} +\def\bpl@version{1.27} +\def\bpl@rdate{2022/10/03} \ProvidesFile{publist.cbx}[\bpl@rdate\space v.\bpl@version\space biblatex citation style (JSP)] diff --git a/macros/latex/contrib/clicks/LICENSE.txt b/macros/latex/contrib/clicks/LICENSE.txt new file mode 100644 index 0000000000..bd949ffdab --- /dev/null +++ b/macros/latex/contrib/clicks/LICENSE.txt @@ -0,0 +1,21 @@ +(The MIT License) + +Copyright (c) 2021-2022 Yegor Bugayenko + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the 'Software'), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/macros/latex/contrib/clicks/README.md b/macros/latex/contrib/clicks/README.md index f77fe27323..5357152b3b 100644 --- a/macros/latex/contrib/clicks/README.md +++ b/macros/latex/contrib/clicks/README.md @@ -1,4 +1,4 @@ -[![make](https://github.com/yegor256/clicks/actions/workflows/latexmk.yml/badge.svg)](https://github.com/yegor256/clicks/actions/workflows/latexmk.yml) +[![make](https://github.com/yegor256/clicks/actions/workflows/l3build.yml/badge.svg)](https://github.com/yegor256/clicks/actions/workflows/l3build.yml) [![CTAN](https://img.shields.io/ctan/v/clicks)](https://ctan.org/pkg/clicks) [![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/clicks/blob/master/LICENSE.txt) @@ -20,9 +20,6 @@ And then live happily ever after. \end{document} ``` -The full example and all commands are available in the -[`clicks.tex`](https://github.com/yegor256/clicks/blob/master/clicks.tex) file. - If you want to contribute yourself, make a fork, then create a branch, then run `make` in the root directory. It should compile everything without errors. If not, submit an issue and wait. diff --git a/macros/latex/contrib/clicks/clicks.dtx b/macros/latex/contrib/clicks/clicks.dtx new file mode 100644 index 0000000000..d103ee064f --- /dev/null +++ b/macros/latex/contrib/clicks/clicks.dtx @@ -0,0 +1,234 @@ +% \iffalse meta-comment +% (The MIT License) +% +% Copyright (c) 2021-2022 Yegor Bugayenko +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the 'Software'), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% \fi + +% \CheckSum{0} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} + +% \GetFileInfo{clicks.dtx} +% \DoNotIndex{\endgroup,\begingroup,\let,\else,\fi,\newcommand,\newenvironment} + +% \iffalse +%<*driver> +\ProvidesFile{clicks.dtx} +% +%\NeedsTeXFormat{LaTeX2e} +%\ProvidesPackage{clicks} +%<*package> +[2022-10-03 0.4.1 Slide Deck Animation] +% +%<*driver> +\documentclass{ltxdoc} +\usepackage[tt=false, type1=true]{libertine} +\usepackage{clicks} +\usepackage{href-ul} +\PageIndex +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{clicks.dtx} + \PrintChanges + \PrintIndex +\end{document} +% +% \fi + +% \title{|clicks|: \LaTeX{} Package \\ for Slide Deck Animation\thanks{The sources are in GitHub at \href{https://github.com/yegor256/clicks}{yegor256/clicks}}} +% \author{Yegor Bugayenko \\ \texttt{yegor256@gmail.com}} +% \date{\filedate, \fileversion} +% +% \maketitle +% +% \section{Introduction} +% +% This package helps simulate animation in PDF documents. You put +% some content on the page, then you ``click'' and the pages ends, +% while the content gets copied to the next page. There, you add new +% content. In the full-screen presentation mode this will look +% like animation, similar to what you can get with MS PowerPoint: +%\iffalse +%<*verb> +%\fi +\begin{verbatim} +\documentclass{article} +\usepackage{clicks} +\begin{document} +\print{Here is your wedding plan:}\click +\print{1. Buy a ring}\click +\print{2. Propose}\click +\print{3. Get married}\flush +\end{document} +\end{verbatim} +%\iffalse +% +%\fi + +% You can make it shorter, with the help of +% |\plick| and |\plush| commands: +%\iffalse +%<*verb> +%\fi +\begin{verbatim} +\documentclass{article} +\usepackage{clicks} +\begin{document} +\plick[2]{Here is your wedding plan:} +\plick[3]{1. Buy a ring} +\plick[5]{2. Propose} +\plush[1]{3. Get married} +\end{document} +\end{verbatim} +%\iffalse +% +%\fi + +% The optional parameters at |\plick| and |\plush| +% are the minutes: how long you are planning to stay at this animation. +% The minutes are accumulated in the |minutes| counter, which +% you can show, for example, at your header. This will help you track +% time during the presentation. The commands +% |\click| and |\flush| also have the +% same optional arguments. + +% \section{Package Options} + +% \begin{macro}{static} +% If you need to render the document without animation, just +% use the |static| package option. +% \end{macro} + +% \StopEventually{} + +% \section{Implementation} + +% \changes{v0.1.0}{2021/09/13}{Initial version} + +% First, we include a few packages: +% \begin{macrocode} +\RequirePackage{xkeyval} +\RequirePackage{etoolbox} +% \end{macrocode} + +% Then, we parse package options: +% \begin{macrocode} +\makeatletter +\newif\ifclicks@static +\DeclareOption{static}{\clicks@statictrue} +\makeatother +\ProcessOptions\relax +% \end{macrocode} + +% Then, we define a few supplementary commands: +% \begin{macrocode} +\makeatletter\newcommand*\clicks@body{}\makeatother +\makeatletter\newcommand\clicks@flush{% + \clicks@body\vspace*{0pt}\newpage% +}\makeatother +% \end{macrocode} + +% Then, we declare a counter of minutes: +% \begin{macrocode} +\newcounter{minutes} +% \end{macrocode} + +% \begin{macro}{\print} +% Then, we define |\print| command: +% \begin{macrocode} +\makeatletter\newcommand\print[1]{% + \gappto\clicks@body{{#1\par}}% +}\makeatother +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\flush} +% Then, we define |\flush| command: +% \begin{macrocode} +\makeatletter\newcommand\flush[1][1]{% + \ifx\clicks@body\empty\else% + \clicks@flush% + \renewcommand*\clicks@body{}% + \fi% + \ifclicks@static\else% + \addtocounter{minutes}{#1}% + \fi% +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\click} +% Then, we define |\click| command: +% \begin{macrocode} +\makeatletter\newcommand\click[1][0]{% + \ifclicks@static\else% + \addtocounter{minutes}{#1}% + \fi% + \ifclicks@static\else% + \clicks@flush% + \fi% +}\makeatother +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\plush} +% Then, we define |\plush| command: +% \begin{macrocode} +\newcommand\plush[2][1]{% + \print{#2}% + \flush[#1]% +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\plick} +% Then, we define |\plick| command: +% \begin{macrocode} +\newcommand\plick[2][1]{% + \print{#2}% + \click[#1]% +} +% \end{macrocode} +% \end{macro} + +% \Finale + +%\clearpage +% +%\PrintChanges +%\clearpage +%\PrintIndex diff --git a/macros/latex/contrib/clicks/clicks.ins b/macros/latex/contrib/clicks/clicks.ins new file mode 100644 index 0000000000..28083d43ef --- /dev/null +++ b/macros/latex/contrib/clicks/clicks.ins @@ -0,0 +1,55 @@ +%% (The MIT License) +%% +%% Copyright (c) 2021-2022 Yegor Bugayenko +%% +%% Permission is hereby granted, free of charge, to any person obtaining a copy +%% of this software and associated documentation files (the 'Software'), to deal +%% in the Software without restriction, including without limitation the rights +%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +%% copies of the Software, and to permit persons to whom the Software is +%% furnished to do so, subject to the following conditions: +%% +%% The above copyright notice and this permission notice shall be included in all +%% copies or substantial portions of the Software. +%% +%% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +%% SOFTWARE. + +\input docstrip.tex +\keepsilent +\usedir{macros/latex/contrib/clicks} +\preamble +(The MIT License) + +Copyright (c) 2021-2022 Yegor Bugayenko + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the 'Software'), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +\endpreamble +\generate{\file{clicks.sty}{\from{clicks.dtx}{package}}} +\obeyspaces +\Msg{*** To finish the installation you have to move the ".sty"} +\Msg{*** file into a directory searched by TeX. To produce the} +\Msg{*** documentation run the file ".dtx" through LaTeX. If any} +\Msg{*** questions, submit a new GitHub issue.} +\endbatchfile diff --git a/macros/latex/contrib/clicks/clicks.pdf b/macros/latex/contrib/clicks/clicks.pdf index 41a3696a45..9f26f16493 100644 Binary files a/macros/latex/contrib/clicks/clicks.pdf and b/macros/latex/contrib/clicks/clicks.pdf differ diff --git a/macros/latex/contrib/clicks/clicks.sty b/macros/latex/contrib/clicks/clicks.sty deleted file mode 100644 index b2aa13ff69..0000000000 --- a/macros/latex/contrib/clicks/clicks.sty +++ /dev/null @@ -1,82 +0,0 @@ -% (The MIT License) -% -% Copyright (c) 2021-2022 Yegor Bugayenko -% -% Permission is hereby granted, free of charge, to any person obtaining a copy -% of this software and associated documentation files (the 'Software'), to deal -% in the Software without restriction, including without limitation the rights -% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -% copies of the Software, and to permit persons to whom the Software is -% furnished to do so, subject to the following conditions: -% -% The above copyright notice and this permission notice shall be included in all -% copies or substantial portions of the Software. -% -% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -% SOFTWARE. - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{clicks}[2022/09/13 0.3.1 Clicks] - -\RequirePackage{xkeyval} -\RequirePackage{etoolbox} - -\makeatletter\newif\ifclicks@static\makeatother -\makeatletter\DeclareOption{static}{\clicks@statictrue}\makeatother -\ProcessOptions\relax - -\makeatletter\newcommand*\clicks@body{}\makeatother -\makeatletter\newcommand\clicks@flush{% - \clicks@body\vspace*{0pt}\newpage% -}\makeatother - -\newcounter{minutes} - -% Print the content as is. -\makeatletter\newcommand\print[1]{% - \gappto\clicks@body{{#1\par}}% -}\makeatother - -% Flush the page: print the entire content. -\makeatletter\newcommand\flush[1][1]{% - \ifx\clicks@body\empty\else% - \clicks@flush% - \renewcommand*\clicks@body{}% - \fi% - \ifclicks@static\else% - \addtocounter{minutes}{#1}% - \fi% -} - -% Print the content and wait for more. -\makeatletter\newcommand\click[1][0]{% - \ifclicks@static\else% - \addtocounter{minutes}{#1}% - \fi% - \ifclicks@static\else% - \clicks@flush% - \fi% -}\makeatother - -% Print and flush -% [1]: How many minutes to stay here -% {1}: The content to print -\newcommand\plush[2][1]{% - \print{#2}% - \flush[#1]% -} - -% Print and click -% [1]: How many minutes to stay here -% {1}: The content to print -\newcommand\plick[2][1]{% - \print{#2}% - \click[#1]% -} - -\endinput diff --git a/macros/latex/contrib/clicks/clicks.tex b/macros/latex/contrib/clicks/clicks.tex deleted file mode 100644 index 7967601410..0000000000 --- a/macros/latex/contrib/clicks/clicks.tex +++ /dev/null @@ -1,92 +0,0 @@ -% (The MIT License) -% -% Copyright (c) 2021-2022 Yegor Bugayenko -% -% Permission is hereby granted, free of charge, to any person obtaining a copy -% of this software and associated documentation files (the 'Software'), to deal -% in the Software without restriction, including without limitation the rights -% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -% copies of the Software, and to permit persons to whom the Software is -% furnished to do so, subject to the following conditions: -% -% The above copyright notice and this permission notice shall be included in all -% copies or substantial portions of the Software. -% -% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -% SOFTWARE. - -\documentclass[12pt]{article} -\usepackage[T1]{fontenc} -\usepackage[tt=false,type1=true]{libertine} -\usepackage{clicks} -\usepackage{ffcode} - -\title{\ff{clicks}: \LaTeX{} Package \\ for Slide Deck Animation} -\author{Yegor Bugayenko} -\date{0.3.1 2022/09/13} - -\begin{document} -\pagenumbering{gobble} -\raggedbottom -\setlength{\parindent}{0pt} -\setlength{\columnsep}{32pt} -\setlength{\parskip}{6pt} - -\maketitle - -\section[Intro]{Introduction} - -This package helps simulate animation in PDF documents. You put -some content on the page, then you ``click'' and the pages ends, -while the content gets copied to the next page. There, you add new -content. In the full-screen presentation mode this will look -like animation, similar to what you can get with MS PowerPoint. - -\begin{ffcode} -\documentclass{article} -\usepackage{clicks} -\begin{document} -\print{Here is your wedding plan:}\click -\print{1. Buy a ring}\click -\print{2. Propose}\click -\print{3. Get married}\flush -\end{document} -\end{ffcode} - -You can make it shorter, with the help of -\ff{\char`\\plick\{\}} and \ff{\char`\\plush\{\}} commands: - -\begin{ffcode} -\documentclass{article} -\usepackage{clicks} -\begin{document} -\plick[2]{Here is your wedding plan:} -\plick[3]{1. Buy a ring} -\plick[5]{2. Propose} -\plush[1]{3. Get married} -\end{document} -\end{ffcode} - -If you need to render the document without animation, just -use the \ff{static} package option. - -The optional parameters at \ff{\char`\\plick\{\}} and \ff{\char`\\plush\{\}} -are the minutes: how long you are planning to stay at this animation. -The minutes are accumulated in the \ff{minutes} counter, which -you can show, for example, at your header. This will help you track -time during the presentation. The commands -\ff{\char`\\click\{\}} and \ff{\char`\\flush\{\}} also have the -same optional arguments. - -More details about this package you can find -in the \ff{yegor256/clicks} GitHub repository. - -If you want to add a feature or fix a bug, you are welcome -to submit an issue or make a pull request. - -\end{document} diff --git a/macros/latex/contrib/crumbs/DEPENDS.txt b/macros/latex/contrib/crumbs/DEPENDS.txt index 78c5e550c1..abac7d8497 100644 --- a/macros/latex/contrib/crumbs/DEPENDS.txt +++ b/macros/latex/contrib/crumbs/DEPENDS.txt @@ -1,3 +1,3 @@ hard xkeyval hard etoolbox -hard catchfile +hard catchfile \ No newline at end of file diff --git a/macros/latex/contrib/crumbs/LICENSE.txt b/macros/latex/contrib/crumbs/LICENSE.txt new file mode 100644 index 0000000000..bd949ffdab --- /dev/null +++ b/macros/latex/contrib/crumbs/LICENSE.txt @@ -0,0 +1,21 @@ +(The MIT License) + +Copyright (c) 2021-2022 Yegor Bugayenko + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the 'Software'), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/macros/latex/contrib/crumbs/README.md b/macros/latex/contrib/crumbs/README.md index d01b1cc418..121ee434bb 100644 --- a/macros/latex/contrib/crumbs/README.md +++ b/macros/latex/contrib/crumbs/README.md @@ -1,4 +1,5 @@ -[![make](https://github.com/yegor256/crumbs/actions/workflows/latexmk.yml/badge.svg)](https://github.com/yegor256/crumbs/actions/workflows/latexmk.yml) +[![make](https://github.com/yegor256/crumbs/actions/workflows/l3build.yml/badge.svg)](https://github.com/yegor256/crumbs/actions/workflows/l3build.yml) +[![CTAN](https://img.shields.io/ctan/v/crumbs)](https://ctan.org/pkg/crumbs) [![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/crumbs/blob/master/LICENSE.txt) This LaTeX package adds nagivation crumbs to your document, which diff --git a/macros/latex/contrib/crumbs/crumbs.dtx b/macros/latex/contrib/crumbs/crumbs.dtx new file mode 100644 index 0000000000..ee9a6b168c --- /dev/null +++ b/macros/latex/contrib/crumbs/crumbs.dtx @@ -0,0 +1,351 @@ +% \iffalse meta-comment +% (The MIT License) +% +% Copyright (c) 2021-2022 Yegor Bugayenko +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the 'Software'), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% \fi + +% \CheckSum{0} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} + +% \GetFileInfo{crumbs.dtx} +% \DoNotIndex{\endgroup,\begingroup,\let,\else,\fi,\newcommand,\newenvironment} + +% \iffalse +%<*driver> +\ProvidesFile{crumbs.dtx} +% +%\NeedsTeXFormat{LaTeX2e} +%\ProvidesPackage{crumbs} +%<*package> +[2022-10-03 0.4.1 Inputable Shell Executions] +% +%<*driver> +\documentclass{ltxdoc} +\usepackage[tt=false, type1=true]{libertine} +\usepackage{crumbs} +\usepackage{href-ul} +\PageIndex +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{crumbs.dtx} + \PrintChanges + \PrintIndex +\end{document} +% +% \fi + +% \title{|crumbs|: \LaTeX{} Package \\ for Navigation Crumbs\thanks{The sources are in GitHub at \href{https://github.com/yegor256/crumbs}{yegor256/crumbs}}} +% \author{Yegor Bugayenko \\ \texttt{yegor256@gmail.com}} +% \date{\filedate, \fileversion} +% +% \maketitle +% +% \section{Introduction} +% +% This package helps you add navigation crumbs to your document, +% which is most useful for presentations and slide decks: +%\iffalse +%<*verb> +%\fi +\begin{verbatim} +\documentclass{article} +\usepackage{crumbs} +\usepackage{fancyhdr} + \fancyhf{} + \pagestyle{fancy} + \fancyhead[L]{\crumbs / \subcrumbs} +\begin{document} +\section{Introduction} +Some text here. +\section{Related Works} +Some other text here. +\end{document} +\end{verbatim} +%\iffalse +% +%\fi + +% \begin{macro}{\crumb} +% You may redefine |\crumb{}| and |\subcrumb{}| +% commands, if you want your crumbs to look nicer, for example: +%\iffalse +%<*verb> +%\fi +\begin{verbatim} +\renewcommand\crumb[2]{{ + \ifnum\value{section}=\value{crumbi} + \color{orange} + \fi + #1 +}} +\end{verbatim} +%\iffalse +% +%\fi +% \end{macro} +% The command will be called by |\crumbs| with two arguments. The first one +% will be the short name of the crumb, the second one will be the long one. +% The counter |crumbi| will be equal to the position of the crumb +% being rendered, starting from zero. + +% \begin{macro}{\subcrumb} +% The same for |\subcrumb{}|, but the comparison should be +% done not between |section| and |crumbi|, but between +% |subsection| and |subcrumbi| counters. +% \end{macro} + +% \begin{macro}{\section} +% The first parameter of both |\crumb{}| and |\subcrumb{}| +% is the optional parameter of |\section{}| and |\subsection{}| +% calls respectively. The second one is the mandatory parameter of them, which +% is the full text of the section and sub-section. +% When you use |crumbs| package, you can use |\section| and |\subsection| with +% an optional argument, which will be used in the crumbs, e.g.: +%\iffalse +%<*verb> +%\fi +\begin{verbatim} +\section[Details]{More Details About The Method} +\subsection[SLR]{Systematic Literature Review} +\end{verbatim} +%\iffalse +% +%\fi +% \end{macro} + +% \section{Package Options} + +% \begin{macro}{dry} +% You may turn on the ``dry'' mode, which will prohibit the package to +% renew |\section{}| and |\subsection{}| commands. +% You will still be able to use the crumbs mechanism through +% |\crumbection{}| and |\subcrumbection{}| commands, for example: +%\iffalse +%<*verb> +%\fi +\begin{verbatim} +\documentclass{article} +\usepackage[dry]{crumbs} +\begin{document} +\crumbection[Intro]{Introduction} % Add it to \crumbs +\section{Introduction} % Print it to the page +Hello, world! +\end{document} +\end{verbatim} +%\iffalse +% +%\fi +% \end{macro} + +% \begin{macro}{increment} +% You can also instruct it to increment +% |\section{}| and |\subsection{}| +% on each call to |\crumbection{}| and |\subcrumbection{}| +% respectively. Just use the |increment| package option. +% \end{macro} + +% \section{How It Works} + +% On the first run, a new file |jobname.crumbs| is created, +% where all |\section| and |\subsection| commands +% are being logged. + +% On the second run, the file is loaded and two commands are being +% created: |\crumbs| and |\subcrumbs|. The first +% one is a collection of |\crumb{}| calls, while the second +% one is a collection of |\subcrumb{}| ones. + +% \StopEventually{} + +% \section{Implementation} + +% \changes{v0.2.0}{2021/07/10}{Initial version} + +% \iffalse +\RequirePackage{xkeyval} +\RequirePackage{etoolbox} +\makeatletter\newif\ifcrumbs@dry\makeatother +\makeatletter\DeclareOption{dry}{\crumbs@drytrue}\makeatother +\makeatletter\newif\ifcrumbs@increment\makeatother +\makeatletter\DeclareOption{increment}{\crumbs@incrementtrue}\makeatother +\ProcessOptions\relax +% \fi + +% \begin{macro}{\crumbs} +% It is implemented with the help of |catchfile| package. First, +% we define special commands for special characters inside the +% |jobname.crumbs| files, as suggested \href{https://tex.stackexchange.com/a/12414/1449}{here}: +% \begin{macrocode} +\makeatletter\newcommand\crumbs@back{\@backslashchar}\makeatother +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\appendtofile} +% Then, we define a new command |\appendtofile|: +% \begin{macrocode} +\RequirePackage{catchfile} + \newwrite\appendwrite + \ExplSyntaxOn\cs_new:Npn\appendtofile#1#2{% + \begingroup + \IfFileExists{#1}% + {\CatchFileDef{\filecontent}{#1}{\endlinechar=`^^J\catcode\endlinechar=12\relax}}% keep existing end-of-lines + {\let\filecontent\empty}% + \immediate\openout\appendwrite=#1\relax + \immediate\write\appendwrite{\unexpanded\expandafter{\filecontent} \text_purify:n{#2}}% + \immediate\closeout\appendwrite + \endgroup + }\ExplSyntaxOff +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\subcrumbs} +% The command |\subcrumbs| prints all sub-crumbs for the current subsection: +% \begin{macrocode} +\newcommand\subcrumbs{% + \ifnum\value{section}=0\else% + \expandafter\ifcsname crumbs\romannumeral\the\value{section}\endcsname% + \csname crumbs\romannumeral\the\value{section}\endcsname{}% + \fi% + \fi% +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\crumbection} +% The command |\crumbection| registers a new crumb: +% \begin{macrocode} +\makeatletter\newcommand\crumbection[2][]{% + \def\temp{#1}% + \ifx\crumbs\empty% + \appendtofile{\jobname.crumbs}{% + \crumbs@back ifx\crumbs@back crumbs\crumbs@back empty% + \crumbs@back gappto\crumbs@back crumbs\{\crumbs@back setcounter\{crumbi\}\{0\}\}% + \crumbs@back fi% + \crumbs@back gappto\crumbs@back crumbs\{\crumbs@back stepcounter\{crumbi\}\crumbs@back crumb{\ifx\temp\empty \{#2\}\else \{#1\}\fi}{\{#2\}}\}% + }% + \fi% + \ifcrumbs@increment\stepcounter{section}\fi% +}\makeatother +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\subcrumbection} +% The command |\subcrumbection| registers a new subcrumb: +% \begin{macrocode} +\makeatletter\newcommand\subcrumbection[2][]{% + \def\temp{#1}% + \ifx\crumbs\empty% + \appendtofile{\jobname.crumbs}{% + \crumbs@back ifcsname crumbs\romannumeral\the\value{section}\crumbs@back endcsname\crumbs@back else + \crumbs@back expandafter\crumbs@back newcommand\crumbs@back csname crumbs\romannumeral\the\value{section}\crumbs@back endcsname\{% + \crumbs@back setcounter\{subcrumbi\}\{0\}% + \}% + \crumbs@back fi% + \crumbs@back expandafter\crumbs@back gappto\crumbs@back csname crumbs\romannumeral\the\value{section}\crumbs@back endcsname\{% + \crumbs@back stepcounter\{subcrumbi\}% + \crumbs@back subcrumb{\ifx\temp\empty \{#2\}\else \{#1\}\fi}{\{#2\}}\}% + }% + \fi% + \ifcrumbs@increment\stepcounter{subsection}\fi% +}\makeatother +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\section} +% We also redefined |\section| and |\subsection| commands: +% \begin{macrocode} +\makeatletter\ifcrumbs@dry% + \message{Since "dry" mode is ON we don't renew "section" and "subsection" commands}% +\else% + \NewCommandCopy\crumbs@oldsection\section + \renewcommand\section[2][]{% + \crumbection[#1]{#2}% + \crumbs@oldsection{#2}% + } + \NewCommandCopy\crumbs@oldsubsection\subsection + \renewcommand\subsection[2][]{% + \subcrumbection[#1]{#2}% + \crumbs@oldsubsection{#2}% + } +\fi\makeatletter +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\crumb} +% We define default implementations of |\crumb| command: +% \begin{macrocode} +\ifcsname crumb\endcsname% + \message{The command "crumb" is already defined}% +\else% + \newcommand\crumb[2]{#1}% +\fi% +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\subcrumb} +% We define default implementations of |\subcrumb| command: +% \begin{macrocode} +\ifcsname subcrumb\endcsname% + \message{The command "subcrumb" is already defined}% +\else% + \newcommand\subcrumb[2]{#1}% +\fi% +% \end{macrocode} +% \end{macro} + +% \begin{macro}{crumbi} +% We also define a few counters: +% \begin{macrocode} +\newcommand*\crumbs{} +\newcounter{crumbi} +\newcounter{subcrumbi} +% \end{macrocode} +% \end{macro} + +% Finally, we load the file into the document: +% \begin{macrocode} +\AtBeginDocument{\IfFileExists{\jobname.crumbs}{\input{\jobname.crumbs}}{}} +% \end{macrocode} + +% \Finale + +%\clearpage +% +%\PrintChanges +%\clearpage +%\PrintIndex diff --git a/macros/latex/contrib/crumbs/crumbs.ins b/macros/latex/contrib/crumbs/crumbs.ins new file mode 100644 index 0000000000..019bc22d00 --- /dev/null +++ b/macros/latex/contrib/crumbs/crumbs.ins @@ -0,0 +1,55 @@ +%% (The MIT License) +%% +%% Copyright (c) 2021-2022 Yegor Bugayenko +%% +%% Permission is hereby granted, free of charge, to any person obtaining a copy +%% of this software and associated documentation files (the 'Software'), to deal +%% in the Software without restriction, including without limitation the rights +%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +%% copies of the Software, and to permit persons to whom the Software is +%% furnished to do so, subject to the following conditions: +%% +%% The above copyright notice and this permission notice shall be included in all +%% copies or substantial portions of the Software. +%% +%% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +%% SOFTWARE. + +\input docstrip.tex +\keepsilent +\usedir{macros/latex/contrib/crumbs} +\preamble +(The MIT License) + +Copyright (c) 2021-2022 Yegor Bugayenko + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the 'Software'), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +\endpreamble +\generate{\file{crumbs.sty}{\from{crumbs.dtx}{package}}} +\obeyspaces +\Msg{*** To finish the installation you have to move the ".sty"} +\Msg{*** file into a directory searched by TeX. To produce the} +\Msg{*** documentation run the file ".dtx" through LaTeX. If any} +\Msg{*** questions, submit a new GitHub issue.} +\endbatchfile diff --git a/macros/latex/contrib/crumbs/crumbs.pdf b/macros/latex/contrib/crumbs/crumbs.pdf index 9b06354575..93341aca89 100644 Binary files a/macros/latex/contrib/crumbs/crumbs.pdf and b/macros/latex/contrib/crumbs/crumbs.pdf differ diff --git a/macros/latex/contrib/crumbs/crumbs.sty b/macros/latex/contrib/crumbs/crumbs.sty deleted file mode 100644 index dc35f811c2..0000000000 --- a/macros/latex/contrib/crumbs/crumbs.sty +++ /dev/null @@ -1,120 +0,0 @@ -% (The MIT License) -% -% Copyright (c) 2021-2022 Yegor Bugayenko -% -% Permission is hereby granted, free of charge, to any person obtaining a copy -% of this software and associated documentation files (the 'Software'), to deal -% in the Software without restriction, including without limitation the rights -% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -% copies of the Software, and to permit persons to whom the Software is -% furnished to do so, subject to the following conditions: -% -% The above copyright notice and this permission notice shall be included in all -% copies or substantial portions of the Software. -% -% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -% SOFTWARE. - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{crumbs}[2022/09/21 0.3.2 Navigation Crumbs] - -\RequirePackage{xkeyval} -\RequirePackage{etoolbox} - -\makeatletter\newif\ifcrumbs@dry\makeatother -\makeatletter\DeclareOption{dry}{\crumbs@drytrue}\makeatother -\makeatletter\newif\ifcrumbs@increment\makeatother -\makeatletter\DeclareOption{increment}{\crumbs@incrementtrue}\makeatother -\ProcessOptions\relax - -% see https://tex.stackexchange.com/a/12414/1449 -\makeatletter\newcommand\crumbs@back{\@backslashchar}\makeatother -% \makeatletter\newcommand\crumbs@percent{\@percentchar}\makeatother -\RequirePackage{catchfile} - \newwrite\appendwrite - \ExplSyntaxOn\cs_new:Npn\appendtofile#1#2{% - \begingroup - \IfFileExists{#1}% - {\CatchFileDef{\filecontent}{#1}{\endlinechar=`^^J\catcode\endlinechar=12\relax}}% keep existing end-of-lines - {\let\filecontent\empty}% - \immediate\openout\appendwrite=#1\relax - \immediate\write\appendwrite{\unexpanded\expandafter{\filecontent} \text_purify:n{#2}}% - \immediate\closeout\appendwrite - \endgroup - }\ExplSyntaxOff - -\newcommand\subcrumbs{% - \ifnum\value{section}=0\else% - \expandafter\ifcsname crumbs\romannumeral\the\value{section}\endcsname% - \csname crumbs\romannumeral\the\value{section}\endcsname{}% - \fi% - \fi% -} - -\makeatletter\newcommand\crumbection[2][]{% - \def\temp{#1}% - \ifx\crumbs\empty% - \appendtofile{\jobname.crumbs}{% - \crumbs@back ifx\crumbs@back crumbs\crumbs@back empty% - \crumbs@back gappto\crumbs@back crumbs\{\crumbs@back setcounter\{crumbi\}\{0\}\}% - \crumbs@back fi% - \crumbs@back gappto\crumbs@back crumbs\{\crumbs@back stepcounter\{crumbi\}\crumbs@back crumb{\ifx\temp\empty \{#2\}\else \{#1\}\fi}{\{#2\}}\}% - }% - \fi% - \ifcrumbs@increment\stepcounter{section}\fi% -}\makeatother - -\makeatletter\newcommand\subcrumbection[2][]{% - \def\temp{#1}% - \ifx\crumbs\empty% - \appendtofile{\jobname.crumbs}{% - \crumbs@back ifcsname crumbs\romannumeral\the\value{section}\crumbs@back endcsname\crumbs@back else - \crumbs@back expandafter\crumbs@back newcommand\crumbs@back csname crumbs\romannumeral\the\value{section}\crumbs@back endcsname\{% - \crumbs@back setcounter\{subcrumbi\}\{0\}% - \}% - \crumbs@back fi% - \crumbs@back expandafter\crumbs@back gappto\crumbs@back csname crumbs\romannumeral\the\value{section}\crumbs@back endcsname\{% - \crumbs@back stepcounter\{subcrumbi\}% - \crumbs@back subcrumb{\ifx\temp\empty \{#2\}\else \{#1\}\fi}{\{#2\}}\}% - }% - \fi% - \ifcrumbs@increment\stepcounter{subsection}\fi% -}\makeatother - -\makeatletter\ifcrumbs@dry% - \message{Since "dry" mode is ON we don't renew "section" and "subsection" commands}% -\else% - \NewCommandCopy\crumbs@oldsection\section - \renewcommand\section[2][]{% - \crumbection[#1]{#2}% - \crumbs@oldsection{#2}% - } - \NewCommandCopy\crumbs@oldsubsection\subsection - \renewcommand\subsection[2][]{% - \subcrumbection[#1]{#2}% - \crumbs@oldsubsection{#2}% - } -\fi\makeatletter - -\ifcsname crumb\endcsname% - \message{The command "crumb" is already defined}% -\else% - \newcommand\crumb[2]{#1}% -\fi% -\ifcsname subcrumb\endcsname% - \message{The command "subcrumb" is already defined}% -\else% - \newcommand\subcrumb[2]{#1}% -\fi% - -\newcommand*\crumbs{} -\newcounter{crumbi} -\newcounter{subcrumbi} -\AtBeginDocument{\IfFileExists{\jobname.crumbs}{\input{\jobname.crumbs}}{}} - -\endinput diff --git a/macros/latex/contrib/crumbs/crumbs.tex b/macros/latex/contrib/crumbs/crumbs.tex deleted file mode 100644 index 8a76e866e6..0000000000 --- a/macros/latex/contrib/crumbs/crumbs.tex +++ /dev/null @@ -1,155 +0,0 @@ -% (The MIT License) -% -% Copyright (c) 2021-2022 Yegor Bugayenko -% -% Permission is hereby granted, free of charge, to any person obtaining a copy -% of this software and associated documentation files (the 'Software'), to deal -% in the Software without restriction, including without limitation the rights -% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -% copies of the Software, and to permit persons to whom the Software is -% furnished to do so, subject to the following conditions: -% -% The above copyright notice and this permission notice shall be included in all -% copies or substantial portions of the Software. -% -% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -% SOFTWARE. - -\documentclass[12pt]{article} -\usepackage[T1]{fontenc} -\usepackage[tt=false,type1=true]{libertine} -\usepackage{ffcode} -\usepackage{xcolor} -\usepackage{crumbs} -\usepackage{fancyhdr} - \fancyhf{} - \setlength{\headheight}{1.2in} - \renewcommand{\headrulewidth}{1pt} - \renewcommand\crumb[2]{{\sffamily[{\ifnum\value{section}=\value{crumbi}\color{orange}\fi#1}]\quad}} - \renewcommand\subcrumb[2]{{\sffamily[{\ifnum\value{subsection}=\value{subcrumbi}\color{orange}\fi#1}]$\;$}} - \fancyhead[L]{ - \ff{\char`\\crumbs}: \crumbs - \\[3pt] - \small\ff{\char`\\subcrumbs}: \subcrumbs - \\[3pt] - \footnotesize\ttfamily section=\the\value{section}, crumbi=\the\value{crumbi}, subcrumbi=\the\value{subcrumbi} - } - -\title{\ff{crumbs}: \LaTeX{} Package \\ for Navigation Crumbs} -\author{Yegor Bugayenko} -\date{0.3.2 2022/09/21} - -\begin{document} -\pagenumbering{gobble} -\raggedbottom -\setlength{\parindent}{0pt} -\setlength{\columnsep}{32pt} -\setlength{\parskip}{6pt} - -\maketitle -\pagestyle{fancy} -\thispagestyle{fancy} - -Before the first \ff{\char`\\section} command: - -\ff{\char`\\crumbs}: \crumbs -\\[3pt] -\small\ff{\char`\\subcrumbs}: \subcrumbs - -\section[Intro]{Introduction} - -This package helps you add navigation crumbs to your document, -which is most useful for presentation and slide decks: - -\begin{ffcode} -\documentclass{article} -\usepackage{crumbs} -\usepackage{fancyhdr} - \fancyhf{} - \pagestyle{fancy} - \fancyhead[L]{\crumbs / \subcrumbs} -\begin{document} -\section{Introduction} -Some text here. -\section{Related Works} -Some other text here. -\end{document} -\end{ffcode} - -You may redefine \ff{\char`\\crumb\{\}} and \ff{\char`\\subcrumb\{\}} -commands, if you want your crumbs to look nicer, for example: - -\begin{ffcode} -\renewcommand\crumb[2]{ - { - \ifnum\value{section}=\value{crumbi} - \color{orange} - \fi - #1 - } -} -\end{ffcode} - -The same for \ff{\char`\\subcrumb\{\}}, but the comparison should be -done not between \ff{section} and \ff{crumbi}, but between -\ff{subsection} and \ff{subcrumbi} counters. - -The first parameter of both \ff{\char`\\crumb\{\}} and \ff{\char`\\subcrumb\{\}} -is the optional parameter of \ff{\char`\\section\{\}} and \ff{\char`\\subsection\{\}} -calls respectively. The second one is the mandatory parameter of them, which -is the full text of the section and sub-section. - -You can use \ff{\char`\\section} and \ff{\char`\\subsection} with -an optional argument, which will be used in the crumbs, e.g.: - -\begin{ffcode} -\section[Details]{More Details About The Method} -\subsection[SLR]{Systematic Literature Review} -\end{ffcode} - -\subsection{How to Contribute} - -You may turn on the ``dry'' mode, which will prohibit the package to -renew \ff{\char`\\section\{\}} and \ff{\char`\\subsection\{\}} commands. -You will still be able to use the crumbs mechanism through -\ff{\char`\\crumbection\{\}} and \ff{\char`\\subcrumbection\{\}} -commands, for example: - -\begin{ffcode} -\documentclass{article} -\usepackage[dry]{crumbs} -\begin{document} -\crumbection[Intro]{Introduction} % Add it to \crumbs -\section{Introduction} % Print it to the page -Hello, world! -\end{document} -\end{ffcode} - -You can also instruct it to increment -\ff{\char`\\section\{\}} and \ff{\char`\\subsection\{\}} -on each call to \ff{\char`\\crumbection\{\}} and \ff{\char`\\subcrumbection\{\}} -respectively. Just use the \ff{increment} package option. - -More details about this package you can find -in the \ff{yegor256/crumbs} GitHub repository. - -If you want to add a feature or fix a bug, you are welcome -to submit an issue or make a pull request. - -\section{How It Works} - -On the first run, a new file \ff{\char`\\jobname.crumbs} is created, -where all \ff{\char`\\section} and \ff{\char`\\subsection} commands -are being logged. - -On the second run, the file is loaded and two commands are being -created: \ff{\char`\\crumbs} and \ff{\char`\\subcrumbs}. The first -one is a collection of \ff{\char`\\crumb\{\}} calls, while the second -one is a collection of \ff{\char`\\subcrumb\{\}} ones. - -\end{document} \ No newline at end of file diff --git a/macros/latex/contrib/debate/DEPENDS.txt b/macros/latex/contrib/debate/DEPENDS.txt index a468679b1f..7a17e9bd3f 100644 --- a/macros/latex/contrib/debate/DEPENDS.txt +++ b/macros/latex/contrib/debate/DEPENDS.txt @@ -1,3 +1,6 @@ +hard xkeyval hard xcolor hard tcolorbox -hard xkeyval +hard pdfcol +hard listings +hard listingsutf8 \ No newline at end of file diff --git a/macros/latex/contrib/debate/LICENSE.txt b/macros/latex/contrib/debate/LICENSE.txt new file mode 100644 index 0000000000..bd949ffdab --- /dev/null +++ b/macros/latex/contrib/debate/LICENSE.txt @@ -0,0 +1,21 @@ +(The MIT License) + +Copyright (c) 2021-2022 Yegor Bugayenko + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the 'Software'), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/macros/latex/contrib/debate/README.md b/macros/latex/contrib/debate/README.md index 3d8d0294c0..ff457dfa4b 100644 --- a/macros/latex/contrib/debate/README.md +++ b/macros/latex/contrib/debate/README.md @@ -1,4 +1,5 @@ -[![make](https://github.com/yegor256/debate/actions/workflows/latexmk.yml/badge.svg)](https://github.com/yegor256/debate/actions/workflows/latexmk.yml) +[![make](https://github.com/yegor256/debate/actions/workflows/l3build.yml/badge.svg)](https://github.com/yegor256/debate/actions/workflows/l3build.yml) +[![CTAN](https://img.shields.io/ctan/v/debate)](https://ctan.org/pkg/debate) [![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/debate/blob/master/LICENSE.txt) This LaTeX package helps you organize debates between a few reviewers diff --git a/macros/latex/contrib/debate/debate.dtx b/macros/latex/contrib/debate/debate.dtx new file mode 100644 index 0000000000..955229ae6f --- /dev/null +++ b/macros/latex/contrib/debate/debate.dtx @@ -0,0 +1,178 @@ +% \iffalse meta-comment +% (The MIT License) +% +% Copyright (c) 2021-2022 Yegor Bugayenko +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the 'Software'), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% \fi + +% \CheckSum{0} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} + +% \GetFileInfo{debate.dtx} +% \DoNotIndex{\endgroup,\begingroup,\let,\else,\fi,\newcommand,\newenvironment} + +% \iffalse +%<*driver> +\ProvidesFile{debate.dtx} +% +%\NeedsTeXFormat{LaTeX2e} +%\ProvidesPackage{debate} +%<*package> +[2022-10-03 0.2.0 Debates Between Reviewers] +% +%<*driver> +\documentclass{ltxdoc} +\usepackage[tt=false, type1=true]{libertine} +\usepackage{multicol} +\usepackage{debate} +\usepackage{href-ul} +\usepackage{xcolor} +\usepackage{microtype} +\PageIndex +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{debate.dtx} + \PrintChanges + \PrintIndex +\end{document} +% +% \fi + +% \title{|debate|: \LaTeX{} Package \\ for Debates Between Reviewers\thanks{The sources are in GitHub at \href{https://github.com/yegor256/debate}{yegor256/debate}}} +% \author{Yegor Bugayenko \\ \texttt{yegor256@gmail.com}} +% \date{\filedate, \fileversion} +% +% \maketitle +% +% \section{Introduction} +% +% This package helps you organize debates between a few people +% right inside your documents: + +% \begin{multicols}{2} +% \raggedcolumns +%\iffalse +%<*verb> +%\fi +\begin{verbatim} +\documentclass{article} +\usepackage[T1]{fontenc} +\usepackage{debate} +\begin{document} +I think apples are tastier +\debate[Jeff]{I don't think it's true!} +\debate[Anna]{It is indeed true!} +than pears! + +And I don't want to argue with me. +\end{document} +\end{verbatim} +%\iffalse +% +%\fi +% +% \columnbreak +% +% I think apples are tastier +% \debate[Jeff]{I don't think it's true!} +% \debate[Anna]{It is indeed true!} +% than pears! +% +% And I don't want to argue with me. +% \end{multicols} + +% \textbf{NB!} +% If you want to use |tcolorbox| package, make sure you include +% |debate| first. + +% \section{Package Options} + +% \begin{macro}{hide} +% You can hide them all using |hide| package option. +% \end{macro} + +% \StopEventually{} + +% \section{Implementation} + +% \changes{v0.1.0}{2021/09/26}{Initial version} + +% First, we include a few packages: +% \begin{macrocode} +\RequirePackage{xcolor} +\PassOptionsToPackage{most}{tcolorbox} +\RequirePackage{tcolorbox} +% \end{macrocode} + +% Then, we parse package options: +% \begin{macrocode} +\RequirePackage{xkeyval} +\makeatletter +\newif\ifdebate@hide +\DeclareOptionX{hide}{\debate@hidetrue} +\ProcessOptionsX\relax +\makeatother +% \end{macrocode} + +% \begin{macro}{\debate} +% Finally, we define |\debate| command: +% \begin{macrocode} +\makeatletter\newcommand\debate[2][Reviewer]{% + \ifdebate@hide% + #1% + \else% + {% + \begin{tcolorbox}[frame hidden,sharp corners,enhanced,borderline west={1pt}{0pt}{red},interior hidden,boxsep=0pt,left=0pt,right=0pt,top=0pt,bottom=0pt,beforeafter skip balanced=0pt] + \sffamily\color{gray}% + \raggedright% + \addtolength\leftskip{18pt}\setlength\parskip{0pt}\setlength\parindent{0pt}% + \textcolor{red}{\bfseries\scshape #1}: #2 + \end{tcolorbox} + \vspace{-\parskip} + }% + \fi% +}\makeatother +% \end{macrocode} +% \end{macro} + +% \Finale + +%\clearpage +% +%\PrintChanges +%\clearpage +%\PrintIndex diff --git a/macros/latex/contrib/debate/debate.ins b/macros/latex/contrib/debate/debate.ins new file mode 100644 index 0000000000..b1e10ebfcf --- /dev/null +++ b/macros/latex/contrib/debate/debate.ins @@ -0,0 +1,55 @@ +%% (The MIT License) +%% +%% Copyright (c) 2021-2022 Yegor Bugayenko +%% +%% Permission is hereby granted, free of charge, to any person obtaining a copy +%% of this software and associated documentation files (the 'Software'), to deal +%% in the Software without restriction, including without limitation the rights +%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +%% copies of the Software, and to permit persons to whom the Software is +%% furnished to do so, subject to the following conditions: +%% +%% The above copyright notice and this permission notice shall be included in all +%% copies or substantial portions of the Software. +%% +%% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +%% SOFTWARE. + +\input docstrip.tex +\keepsilent +\usedir{macros/latex/contrib/debate} +\preamble +(The MIT License) + +Copyright (c) 2021-2022 Yegor Bugayenko + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the 'Software'), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +\endpreamble +\generate{\file{debate.sty}{\from{debate.dtx}{package}}} +\obeyspaces +\Msg{*** To finish the installation you have to move the ".sty"} +\Msg{*** file into a directory searched by TeX. To produce the} +\Msg{*** documentation run the file ".dtx" through LaTeX. If any} +\Msg{*** questions, submit a new GitHub issue.} +\endbatchfile diff --git a/macros/latex/contrib/debate/debate.pdf b/macros/latex/contrib/debate/debate.pdf index b6ac58b76f..336aed0d9f 100644 Binary files a/macros/latex/contrib/debate/debate.pdf and b/macros/latex/contrib/debate/debate.pdf differ diff --git a/macros/latex/contrib/debate/debate.sty b/macros/latex/contrib/debate/debate.sty deleted file mode 100644 index 6650f4bfc5..0000000000 --- a/macros/latex/contrib/debate/debate.sty +++ /dev/null @@ -1,53 +0,0 @@ -% (The MIT License) -% -% Copyright (c) 2021 Yegor Bugayenko -% -% Permission is hereby granted, free of charge, to any person obtaining a copy -% of this software and associated documentation files (the 'Software'), to deal -% in the Software without restriction, including without limitation the rights -% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -% copies of the Software, and to permit persons to whom the Software is -% furnished to do so, subject to the following conditions: -% -% The above copyright notice and this permission notice shall be included in all -% copies or substantial portions of the Software. -% -% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -% SOFTWARE. - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{debate}[2021/10/10 0.1.1 Debates Between Reviewers] - -\RequirePackage{xcolor} -\PassOptionsToPackage{most}{tcolorbox} -\RequirePackage{tcolorbox} - -\RequirePackage{xkeyval} -\makeatletter -\newif\ifdebate@hide -\DeclareOptionX{hide}{\debate@hidetrue} -\ProcessOptionsX\relax -\makeatother - -\makeatletter\newcommand\debate[2][Author]{% - \ifdebate@hide% - #1% - \else% - {% - \begin{tcolorbox}[frame hidden,sharp corners,enhanced,borderline west={1pt}{0pt}{red},interior hidden,boxsep=0pt,left=0pt,right=0pt,top=0pt,bottom=0pt,beforeafter skip balanced=0pt] - \sffamily\color{gray}% - \raggedright% - \addtolength\leftskip{18pt}\setlength\parskip{0pt}\setlength\parindent{0pt}% - \textcolor{red}{\bfseries\scshape #1}: #2 - \end{tcolorbox} - \vspace{-\parskip} - }% - \fi% -}\makeatother - -\endinput diff --git a/macros/latex/contrib/debate/debate.tex b/macros/latex/contrib/debate/debate.tex deleted file mode 100644 index e6d09c3a34..0000000000 --- a/macros/latex/contrib/debate/debate.tex +++ /dev/null @@ -1,80 +0,0 @@ -% (The MIT License) -% -% Copyright (c) 2021 Yegor Bugayenko -% -% Permission is hereby granted, free of charge, to any person obtaining a copy -% of this software and associated documentation files (the 'Software'), to deal -% in the Software without restriction, including without limitation the rights -% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -% copies of the Software, and to permit persons to whom the Software is -% furnished to do so, subject to the following conditions: -% -% The above copyright notice and this permission notice shall be included in all -% copies or substantial portions of the Software. -% -% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -% SOFTWARE. - -\documentclass[12pt]{article} -\usepackage[T1]{fontenc} -\usepackage[tt=false,type1=true]{libertine} -\usepackage{multicol} -\usepackage{debate} -\usepackage{ffcode} -\usepackage{xcolor} -\usepackage{microtype} -\title{\ff{debate}: \LaTeX{} Package \\ for Debates Between Reviewers} -\author{Yegor Bugayenko} -\date{0.1.1 2021/10/10} -\begin{document} -\pagenumbering{gobble} -\raggedbottom -\setlength{\parindent}{0pt} -\setlength{\columnsep}{32pt} -\setlength{\parskip}{6pt} -\maketitle - -This package helps you organize debates between a few people -right inside your documents: - -\begin{multicols}{2} -\scriptsize -\raggedcolumns -\begin{verbatim} -\documentclass{article} -\usepackage[T1]{fontenc} -\usepackage{debate} -\begin{document} -I think apples are tastier -\debate[Jeff]{I don't think it's true!} -\debate[Anna]{It is indeed true!} -than pears! - -And I don't want to argue with me. -\end{document} -\end{verbatim} - -\columnbreak - -I think apples are tastier -\debate[Jeff]{I don't think it's true!} -\debate[Anna]{It is indeed true!} -than pears! - -And I don't want to argue with me. -\end{multicols} - -You can hide them all using \ff{hide} package option. - -If you want to use \ff{tcolorbox} package, make sure you include -\ff{debate} first. - -More details about this package you can find -in the \ff{yegor256/debate} GitHub repository. - -\end{document} \ No newline at end of file diff --git a/macros/latex/contrib/ffcode/DEPENDS.txt b/macros/latex/contrib/ffcode/DEPENDS.txt index 935840f850..52a46fbc48 100644 --- a/macros/latex/contrib/ffcode/DEPENDS.txt +++ b/macros/latex/contrib/ffcode/DEPENDS.txt @@ -1,3 +1,5 @@ hard xkeyval hard minted hard tcolorbox +hard pgf +hard environ diff --git a/macros/latex/contrib/ffcode/LICENSE.txt b/macros/latex/contrib/ffcode/LICENSE.txt new file mode 100644 index 0000000000..bd949ffdab --- /dev/null +++ b/macros/latex/contrib/ffcode/LICENSE.txt @@ -0,0 +1,21 @@ +(The MIT License) + +Copyright (c) 2021-2022 Yegor Bugayenko + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the 'Software'), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/macros/latex/contrib/ffcode/README.md b/macros/latex/contrib/ffcode/README.md index 13e012d767..fe0332ddfe 100644 --- a/macros/latex/contrib/ffcode/README.md +++ b/macros/latex/contrib/ffcode/README.md @@ -1,4 +1,5 @@ -[![make](https://github.com/yegor256/ffcode/actions/workflows/latexmk.yml/badge.svg)](https://github.com/yegor256/ffcode/actions/workflows/latexmk.yml) +[![make](https://github.com/yegor256/ffcode/actions/workflows/l3build.yml/badge.svg)](https://github.com/yegor256/ffcode/actions/workflows/l3build.yml) +[![CTAN](https://img.shields.io/ctan/v/ffcode)](https://ctan.org/pkg/ffcode) [![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/ffcode/blob/master/LICENSE.txt) This LaTeX package helps you write source code in your academic papers diff --git a/macros/latex/contrib/ffcode/ffcode.dtx b/macros/latex/contrib/ffcode/ffcode.dtx new file mode 100644 index 0000000000..c6d717c7b5 --- /dev/null +++ b/macros/latex/contrib/ffcode/ffcode.dtx @@ -0,0 +1,383 @@ +% \iffalse meta-comment +% (The MIT License) +% +% Copyright (c) 2021-2022 Yegor Bugayenko +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the 'Software'), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% \fi + +% \CheckSum{0} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} + +% \GetFileInfo{ffcode.dtx} +% \DoNotIndex{\endgroup,\begingroup,\let,\else,\fi,\newcommand,\newenvironment} + +% \iffalse +%<*driver> +\ProvidesFile{ffcode.dtx} +% +%\NeedsTeXFormat{LaTeX2e} +%\ProvidesPackage{ffcode} +%<*package> +[03.10.2022 0.5.0 Fixed Font Code] +% +%<*driver> +\documentclass{ltxdoc} +\usepackage[T1]{fontenc} +\usepackage[tt=false,type1=true]{libertine} +\usepackage{microtype} +\usepackage{href-ul} +\usepackage{ffcode} +\usepackage{amsmath} +\usepackage{multicol} +\usepackage{xcolor} +\PageIndex +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{ffcode.dtx} + \PrintChanges + \PrintIndex +\end{document} +% +% \fi + +% \title{|ffcode|: \LaTeX{} Package \\ for Fixed-Font Code Blocks\thanks{The sources are in GitHub at \href{https://github.com/yegor256/ffcode}{yegor256/ffcode}}} +% \author{Yegor Bugayenko \\ \texttt{yegor256@gmail.com}} +% \date{\filedate, \fileversion} +% +% \maketitle +% +% \section{Introduction} +% +% This package helps you write source code in your articles +% and make sure it looks nice. Install it from CTAN and then +% use like this (pay attention to |\ff| command +% and |ffcode| environment): +% \begin{multicols}{2} +% \setlength{\parskip}{0pt} +% \raggedcolumns +%\iffalse +%<*verb> +%\fi +\begin{verbatim} +\documentclass{article} +\usepackage{ffcode} +\begin{document} +The function \ff{fibo()} +is recursive: +\begin{ffcode} +int fibo(int n) { + if (n < 2) { + return n; |$\label{ln:ret}$| + } + return fibo(n-1)+fibo(n-2); +} +\end{ffcode} +The line no.~\ref{ln:ret} +terminates it. +\end{document} +\end{verbatim} +%\iffalse +% +%\fi +% +% \columnbreak +% +% The function \ff{fibo()} is recursive: +% +%\iffalse +%<*verb> +%\fi +\begin{ffcode} +int fibo(int n) { + if (n < 2) { + return n; |$\label{ln:ret}$| + } + return fibo(n-1)+fibo(n-2); +} +\end{ffcode} +%\iffalse +% +%\fi +% +% The line no.~\ref{ln:ret} terminates it. +% \end{multicols} + +% \section{Package Options} + +% \begin{macro}{nopygments} +% You have to run |pdflatex| with |--shell-escape| flag +% in order to let |minted| (the package we use) to run Pygments +% and format the code. If you don't want this to happen, +% just use |nopygments| option. +% \end{macro} + +% \begin{macro}{noframes} +% If you want to omit the light gray frames around |\ff| +% texts, use the package option |noframes|. +% \end{macro} + +% \begin{macro}{nobars} +% To omit the vertical gray bar at the left side of each snippet, +% use |nobars| option of the package. +% \end{macro} + +% \begin{macro}{nonumbers} +% To omit the line numbers, use |nonumbers| option of the package. +% \end{macro} + +% \begin{macro}{nocn} +% By default, the numbering is continuous: line numbers start at the +% first snippet and increment until the end of the document. If you +% want them to start from one at each snippet, use |nocn| +% (stands for ``no continuous numbering'') +% option of the package. +% \end{macro} + +% \section{Typesetting} + +% By the way, the package correctly formats low-height texts, for example, just +% a dot: \ff{.} + +% A pair of vertical lines decorate a TeX command inside the snippet. +% If you want to print a single vertical line, use this: +% \ff{|\char`\\vert|}. + +% The command |\ff| behaves differently in math mode --- it doesn't +% add gray frames: +% \begin{multicols}{2} +% \setlength{\parskip}{0pt} +% \raggedcolumns +%\iffalse +%<*verb> +%\fi +\begin{verbatim} +\documentclass{article} +\usepackage{ffcode} +\begin{document} +\begin{equation} +x = \int_\ff{home}^N f(x). +\end{equation} +\end{document} +\end{verbatim} +%\iffalse +% +%\fi +% +% \columnbreak +% +%\iffalse +%<*verb> +%\fi +% \begin{equation} +% x = \int_\ff{home}^N f(x). +% \end{equation} +%\iffalse +% +%\fi +% \end{multicols} + +% \section{Line Highlighting} + +% You can highlight some lines in your |ffcode| environment, +% or can use any other additional configuration parameters from +% |minted| package: + +% \begin{multicols}{2} +% \setlength{\parskip}{0pt} +% \raggedcolumns +%\iffalse +%<*verb> +%\fi +\begin{verbatim} +\documentclass{article} +\usepackage{ffcode} +\begin{document} +\begin{ffcode*} + {highlightlines={1,4-5}} +while (true) { + print("Hello!") + print("Enter your name:") + scan(x) + print("You name is " + x) +} +\end{ffcode*} +\end{document} +\end{verbatim} +%\iffalse +% +%\fi +% +% \columnbreak +% +%\iffalse +%<*verb> +%\fi +\begin{ffcode*}{highlightlines={7,10-11}} +while (true) { + print("Hello!") + print("Enter your name:") + scan(x) + print("You name is " + x) +} +\end{ffcode*} +%\iffalse +% +%\fi +% \end{multicols} + +% Using this second argument of |ffcode*| (with the trailing asterisk), +% you can provide any other options from |minted| package to the +% snippet. + +% \StopEventually{} + +% \section{Implementation} + +% \changes{v0.2.0}{2021/07/10}{Initial version} + +% First, we parse package options: +% \begin{macrocode} +\RequirePackage{xkeyval} +\makeatletter +\DeclareOptionX{nopygments}{\PassOptionsToPackage{draft=true}{minted}} +\newif\ifff@noframes +\DeclareOptionX{noframes}{\ff@noframestrue} +\newif\ifff@nobars +\DeclareOptionX{nobars}{\ff@nobarstrue} +\newif\ifff@nonumbers +\DeclareOptionX{nonumbers}{\ff@nonumberstrue} +\newif\ifff@nocn +\DeclareOptionX{nocn}{\ff@nocntrue} +\ProcessOptionsX\relax +\makeatother +% \end{macrocode} + +% Then, we configure |minted| package: +% \begin{macrocode} +\RequirePackage{minted} +\setminted{breaklines} +\setminted{escapeinside=||,mathescape} +\setminted{highlightcolor=gray!25} +\usemintedstyle{bw} +% \end{macrocode} + +% \begin{macro}{ffcode} +% Then, we define |ffcode| environment: +% \begin{macrocode} +\makeatletter\ifff@nonumbers + \ifff@nobars + \newminted[ffcode]{text}{} + \else + \newminted[ffcode]{text}{framesep=6pt, + framerule=1pt,rulecolor=gray,frame=leftline} + \fi +\else + \renewcommand{\theFancyVerbLine}{\textcolor{gray} + {\tiny\oldstylenums{\ttfamily\arabic{FancyVerbLine}}}} + \ifff@nocn + \ifff@nobars + \newminted[ffcode]{text}{ + linenos,numbersep=2pt + } + \else + \newminted[ffcode]{text}{ + framesep=6pt,framerule=1pt,rulecolor=gray, + frame=leftline,linenos,numbersep=2pt + } + \fi + \else + \ifff@nobars + \newminted[ffcode]{text}{ + firstnumber=last,linenos,numbersep=2pt + } + \else + \newminted[ffcode]{text}{ + framesep=6pt,framerule=1pt,rulecolor=gray, + frame=leftline,firstnumber=last,linenos,numbersep=2pt + } + \fi + \fi +\fi\makeatother +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\ff@print} +% Then, we define supplementary commands |\ff@print| and |\ff@printx|: +% \begin{macrocode} +\makeatletter +\newcommand\ff@print{\begingroup\obeyspaces\ff@printx} +\newcommand\ff@printx[1]{\texttt{#1}\endgroup} +\makeatother +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\ff@rule} +% Then, we define supplementary command |\ff@rule|: +% \begin{macrocode} +\makeatletter\newcommand\ff@rule + {\vrule height 6pt depth 1pt width 0pt} +\makeatother +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\ff} +% Finally, we define |\ff| command: +% \begin{macrocode} +\makeatletter\ifff@noframes + \newcommand\ff[1]{\ff@rule\ff@print{#1}} +\else + \RequirePackage{tcolorbox} + \newtcbox\ff@box{nobeforeafter,colframe=gray!80!white, + colback=gray!5!white,boxrule=0.1pt,arc=1pt, + boxsep=1.2pt,left=0.5pt,right=0.5pt,top=0.2pt,bottom=0.2pt, + tcbox raise base} + \newcommand\ff[1]{\relax\ifmmode% + {\ff@rule\ff@print{#1}}% + \else% + {\ff@box{\ff@rule\ff@print{#1}}} + \fi} +\fi\makeatother +% \end{macrocode} +% \end{macro} + +% \Finale + +%\clearpage +% +%\PrintChanges +%\clearpage +%\PrintIndex diff --git a/macros/latex/contrib/ffcode/ffcode.ins b/macros/latex/contrib/ffcode/ffcode.ins new file mode 100644 index 0000000000..758b0a2a81 --- /dev/null +++ b/macros/latex/contrib/ffcode/ffcode.ins @@ -0,0 +1,55 @@ +%% (The MIT License) +%% +%% Copyright (c) 2021-2022 Yegor Bugayenko +%% +%% Permission is hereby granted, free of charge, to any person obtaining a copy +%% of this software and associated documentation files (the 'Software'), to deal +%% in the Software without restriction, including without limitation the rights +%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +%% copies of the Software, and to permit persons to whom the Software is +%% furnished to do so, subject to the following conditions: +%% +%% The above copyright notice and this permission notice shall be included in all +%% copies or substantial portions of the Software. +%% +%% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +%% SOFTWARE. + +\input docstrip.tex +\keepsilent +\usedir{macros/latex/contrib/ffcode} +\preamble +(The MIT License) + +Copyright (c) 2021-2022 Yegor Bugayenko + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the 'Software'), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +\endpreamble +\generate{\file{ffcode.sty}{\from{ffcode.dtx}{package}}} +\obeyspaces +\Msg{*** To finish the installation you have to move the ".sty"} +\Msg{*** file into a directory searched by TeX. To produce the} +\Msg{*** documentation run the file ".dtx" through LaTeX. If any} +\Msg{*** questions, submit a new GitHub issue.} +\endbatchfile diff --git a/macros/latex/contrib/ffcode/ffcode.pdf b/macros/latex/contrib/ffcode/ffcode.pdf index 9f63f91545..1533df9d95 100644 Binary files a/macros/latex/contrib/ffcode/ffcode.pdf and b/macros/latex/contrib/ffcode/ffcode.pdf differ diff --git a/macros/latex/contrib/ffcode/ffcode.sty b/macros/latex/contrib/ffcode/ffcode.sty deleted file mode 100644 index ee3c25fed7..0000000000 --- a/macros/latex/contrib/ffcode/ffcode.sty +++ /dev/null @@ -1,100 +0,0 @@ -% (The MIT License) -% -% Copyright (c) 2021-2022 Yegor Bugayenko -% -% Permission is hereby granted, free of charge, to any person obtaining a copy -% of this software and associated documentation files (the 'Software'), to deal -% in the Software without restriction, including without limitation the rights -% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -% copies of the Software, and to permit persons to whom the Software is -% furnished to do so, subject to the following conditions: -% -% The above copyright notice and this permission notice shall be included in all -% copies or substantial portions of the Software. -% -% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -% SOFTWARE. - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ffcode}[2022/09/12 0.4.4 Fixed Font Code] - -\RequirePackage{xkeyval} - -\makeatletter -\DeclareOptionX{nopygments}{\PassOptionsToPackage{draft=true}{minted}} -\newif\ifff@noframes -\DeclareOptionX{noframes}{\ff@noframestrue} -\newif\ifff@nobars -\DeclareOptionX{nobars}{\ff@nobarstrue} -\newif\ifff@nonumbers -\DeclareOptionX{nonumbers}{\ff@nonumberstrue} -\newif\ifff@nocn -\DeclareOptionX{nocn}{\ff@nocntrue} -\ProcessOptionsX\relax -\makeatother - -\RequirePackage{minted} - -\setminted{breaklines} -\setminted{escapeinside=||,mathescape} -\setminted{highlightcolor=gray!30} -\usemintedstyle{bw} - -\makeatletter\ifff@nonumbers - \ifff@nobars - \newminted[ffcode]{text}{} - \else - \newminted[ffcode]{text}{ - framesep=6pt,framerule=1pt,rulecolor=gray,frame=leftline - } - \fi -\else - \renewcommand{\theFancyVerbLine}{\textcolor{gray}{\tiny\oldstylenums{\ttfamily\arabic{FancyVerbLine}}}} - \ifff@nocn - \ifff@nobars - \newminted[ffcode]{text}{ - linenos,numbersep=2pt - } - \else - \newminted[ffcode]{text}{ - framesep=6pt,framerule=1pt,rulecolor=gray,frame=leftline, - linenos,numbersep=2pt - } - \fi - \else - \ifff@nobars - \newminted[ffcode]{text}{ - firstnumber=last,linenos,numbersep=2pt - } - \else - \newminted[ffcode]{text}{ - framesep=6pt,framerule=1pt,rulecolor=gray,frame=leftline, - firstnumber=last,linenos,numbersep=2pt - } - \fi - \fi -\fi\makeatother - -\makeatletter -\newcommand\ff@print{\begingroup\obeyspaces\ff@printx} -\newcommand\ff@printx[1]{\texttt{#1}\endgroup} -\makeatother - -\makeatletter\newcommand\ff@rule{\vrule height 6pt depth 1pt width 0pt} -\makeatletter\ifff@noframes - \newcommand\ff[1]{\ff@rule\ff@print{#1}} -\else - \RequirePackage{tcolorbox} - \newtcbox\ff@box{nobeforeafter,colframe=gray!80!white, - colback=gray!5!white,boxrule=0.1pt,arc=1pt, - boxsep=1.2pt,left=0.5pt,right=0.5pt,top=0.2pt,bottom=0.2pt, - tcbox raise base} - \newcommand\ff[1]{\relax\ifmmode{\ff@rule\ff@print{#1}}\else{\ff@box{\ff@rule\ff@print{#1}}}\fi} -\fi\makeatother - -\endinput diff --git a/macros/latex/contrib/ffcode/ffcode.tex b/macros/latex/contrib/ffcode/ffcode.tex deleted file mode 100644 index 1d73cc21bb..0000000000 --- a/macros/latex/contrib/ffcode/ffcode.tex +++ /dev/null @@ -1,155 +0,0 @@ -% (The MIT License) -% -% Copyright (c) 2021-2022 Yegor Bugayenko -% -% Permission is hereby granted, free of charge, to any person obtaining a copy -% of this software and associated documentation files (the 'Software'), to deal -% in the Software without restriction, including without limitation the rights -% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -% copies of the Software, and to permit persons to whom the Software is -% furnished to do so, subject to the following conditions: -% -% The above copyright notice and this permission notice shall be included in all -% copies or substantial portions of the Software. -% -% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -% SOFTWARE. - -\documentclass[12pt]{article} -\usepackage[T1]{fontenc} -\usepackage[tt=false,type1=true]{libertine} -\usepackage{amsmath} -\usepackage{multicol} -\usepackage{ffcode} -\usepackage{xcolor} -\usepackage{microtype} -\title{\ff{ffcode}: \LaTeX{} Package \\ for Fixed-Font Code Blocks} -\author{Yegor Bugayenko} -\date{0.4.4 2022/09/12} -\begin{document} -\pagenumbering{gobble} -\raggedbottom -\setlength{\parindent}{0pt} -\setlength{\columnsep}{32pt} -\setlength{\parskip}{6pt} -\maketitle - -This package helps you write source code in your articles -and make sure it looks nice. Install it from CTAN and then -use like this (pay attention to \ff{\char`\\ff} command -and \ff{ffcode} environment): - -\begin{multicols}{2} -\setlength{\parskip}{0pt} -\scriptsize -\raggedcolumns -\begin{verbatim} -\documentclass{article} -\usepackage[T1]{fontenc} -\usepackage{ffcode} -\begin{document} -The function \ff{fibo()} is recursive: -\begin{ffcode} -int fibo(int n) { - if (n < 2) { - return n; |$\label{ln:ret}$| - } - return fibo(n - 1) + fibo(n - 2); -} -\end{ffcode} -The line no.~\ref{ln:ret} terminates it. -\end{document} -\end{verbatim} - -\columnbreak - -The function \ff{fibo()} is recursive: - -\begin{ffcode} -int fibo(int n) { - if (n < 2) { - return n; |$\label{ln:ret}$| - } - return fibo(n - 1) + fibo(n - 2); -} -\end{ffcode} - -The line no.~\ref{ln:ret} terminates it. -\end{multicols} - -You have to run \ff{pdflatex} with \ff{--shell-escape} flag -in order to let \ff{minted} (the package we use) to run Pygments -and format the code. If you don't want this to happen, -just use \ff{nopygments} option. - -A pair of vertical lines decorate a TeX command inside the snippet. -If you want to print a single vertical line, use this: -\ff{|\char`\\vert|}. - -If you want to omit the light gray frames around \ff{\char`\\ff} -texts, use the package option \ff{noframes}. - -The command \ff{\char`\\ff\char`\{...\char`\}} behaves differently in math mode: it doesn't -add gray frames: -\begin{equation} -x = \int_\ff{home}^N f(x). -\end{equation} - -To omit the vertical gray bar at the left side of each snippet, -use \ff{nobars} option of the package. - -To omit the line numbers, use \ff{nonumbers} option of the package. - -By default, the numbering is continuous: line numbers start at the -first snippet and increment until the end of the document. If you -want them to start from one at each snippet, use \ff{nocn} -(stands for ``no continuous numbering'') -option of the package. - -You can highlight some lines in your \ff{ffcode} environment, -or can use any other additional configuration parameters from -\ff{minted} package: - -\begin{multicols}{2} -\setlength{\parskip}{0pt} -\scriptsize -\raggedcolumns -\begin{verbatim} -\begin{ffcode*}{highlightlines={1,4-5}} -while (true) { - print("Hello!") - print("Enter your name:") - scan(x) - print("You name is " + x) -} -\end{ffcode*} -\end{verbatim} - -\columnbreak - -\begin{ffcode*}{highlightlines={7,10-11}} -while (true) { - print("Hello!") - print("Enter your name:") - scan(x) - print("You name is " + x) -} -\end{ffcode*} -\end{multicols} - -Using this second argument of \ff{ffcode*} (with the trailing asterisk), -you can provide any other options from \ff{minted} package to the -snippet. - -By the way, the package correctly formats low-height texts, for example, just -a dot: \ff{.} - -More details about this package you can find -in \ff{yegor256/ffcode} GitHub repository. - -\end{document} \ No newline at end of file diff --git a/macros/latex/contrib/href-ul/LICENSE.txt b/macros/latex/contrib/href-ul/LICENSE.txt new file mode 100644 index 0000000000..bd949ffdab --- /dev/null +++ b/macros/latex/contrib/href-ul/LICENSE.txt @@ -0,0 +1,21 @@ +(The MIT License) + +Copyright (c) 2021-2022 Yegor Bugayenko + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the 'Software'), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/macros/latex/contrib/href-ul/README.md b/macros/latex/contrib/href-ul/README.md index 67b18d010e..c508666cf1 100644 --- a/macros/latex/contrib/href-ul/README.md +++ b/macros/latex/contrib/href-ul/README.md @@ -1,7 +1,8 @@ -[![make](https://github.com/yegor256/href-ul/actions/workflows/make.yml/badge.svg)](https://github.com/yegor256/href-ul/actions/workflows/make.yml) +[![make](https://github.com/yegor256/href-ul/actions/workflows/l3build.yml/badge.svg)](https://github.com/yegor256/href-ul/actions/workflows/l3build.yml) +[![CTAN](https://img.shields.io/ctan/v/href-ul)](https://ctan.org/pkg/href-ul) [![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/href-ul/blob/master/LICENSE.txt) -This LaTeX package makes hyperlinks underscored. +This LaTeX package makes hyperlinks underlined. The package uses [`hyperref`](https://ctan.org/pkg/hyperref) and [`ulem`](https://ctan.org/pkg/ulem) packages. diff --git a/macros/latex/contrib/href-ul/href-ul.dtx b/macros/latex/contrib/href-ul/href-ul.dtx new file mode 100644 index 0000000000..41d4a9d0b5 --- /dev/null +++ b/macros/latex/contrib/href-ul/href-ul.dtx @@ -0,0 +1,144 @@ +% \iffalse meta-comment +% (The MIT License) +% +% Copyright (c) 2021-2022 Yegor Bugayenko +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the 'Software'), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% \fi + +% \CheckSum{0} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} + +% \GetFileInfo{href-ul.dtx} +% \DoNotIndex{\endgroup,\begingroup,\let,\else,\fi,\newcommand,\newenvironment} + +% \iffalse +%<*driver> +\ProvidesFile{href-ul.dtx} +% +%\NeedsTeXFormat{LaTeX2e} +%\ProvidesPackage{href-ul} +%<*package> +[03.10.2022 0.2.0 Underlined Hyperlinks] +% +%<*driver> +\documentclass{ltxdoc} +\usepackage[tt=false, type1=true]{libertine} +\usepackage{microtype} +\usepackage{href-ul} +\usepackage{xcolor} +\PageIndex +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{href-ul.dtx} + \PrintChanges + \PrintIndex +\end{document} +% +% \fi + +% \title{|href-ul|: \LaTeX{} Package \\ That Makes Underscored Links\thanks{The sources are in GitHub at \href{https://github.com/yegor256/href-ul}{yegor256/href-ul}}} +% \author{Yegor Bugayenko \\ \texttt{yegor256@gmail.com}} +% \date{\filedate, \fileversion} +% +% \maketitle +% +% \section{Introduction} +% +% This package helps you make your hyperlinks underlined: +% +% \begin{multicols}{2} +% \setlength{\parskip}{0pt} +% \raggedcolumns +%\iffalse +%<*verb> +%\fi +\begin{verbatim} +\documentclass{article} +\usepackage{href-ul} +\begin{document} +Go to + \href{https://google.com}{Google}! +\end{document} +\end{verbatim} +%\iffalse +% +%\fi +% +% \columnbreak +% +% Go to \href{https://google.com}{Google}! +% \end{multicols} + +% Changing the {\color{red}\href{https://github.com/yegor256/href-ul}{color}} of the text also changes the color of the line. + +% Changing the {\Large\href{https://github.com/yegor256/href-ul}{size}} of the text doesn't change the height of the line. + +% \StopEventually{} + +% \section{Implementation} + +% \changes{v0.2.0}{2021/06/11}{Initial version} + +% First, we include two packages: +% \begin{macrocode} +\PassOptionsToPackage{normalem}{ulem} +\RequirePackage{ulem} +\PassOptionsToPackage{hidelinks}{hyperref} +\RequirePackage{hyperref} +% \end{macrocode} + +% \begin{macro}{\href} +% Then, we define the |\href| command: +% \begin{macrocode} +\makeatletter\begingroup% +\catcode`\$=6 % +\catcode`\#=12 % +\gdef\href@split$1#$2#$3\\$4{% + \hyper@@link{$1}{$2}{\uline{$4}}% + \endgroup% +}% +\endgroup\makeatother +% \end{macrocode} +% \end{macro} + +% \Finale + +%\clearpage +% +%\PrintChanges +%\clearpage +%\PrintIndex diff --git a/macros/latex/contrib/href-ul/href-ul.ins b/macros/latex/contrib/href-ul/href-ul.ins new file mode 100644 index 0000000000..582fd9ba13 --- /dev/null +++ b/macros/latex/contrib/href-ul/href-ul.ins @@ -0,0 +1,55 @@ +%% (The MIT License) +%% +%% Copyright (c) 2021-2022 Yegor Bugayenko +%% +%% Permission is hereby granted, free of charge, to any person obtaining a copy +%% of this software and associated documentation files (the 'Software'), to deal +%% in the Software without restriction, including without limitation the rights +%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +%% copies of the Software, and to permit persons to whom the Software is +%% furnished to do so, subject to the following conditions: +%% +%% The above copyright notice and this permission notice shall be included in all +%% copies or substantial portions of the Software. +%% +%% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +%% SOFTWARE. + +\input docstrip.tex +\keepsilent +\usedir{macros/latex/contrib/href-ul} +\preamble +(The MIT License) + +Copyright (c) 2021-2022 Yegor Bugayenko + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the 'Software'), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +\endpreamble +\generate{\file{href-ul.sty}{\from{href-ul.dtx}{package}}} +\obeyspaces +\Msg{*** To finish the installation you have to move the ".sty"} +\Msg{*** file into a directory searched by TeX. To produce the} +\Msg{*** documentation run the file ".dtx" through LaTeX. If any} +\Msg{*** questions, submit a new GitHub issue.} +\endbatchfile diff --git a/macros/latex/contrib/href-ul/href-ul.pdf b/macros/latex/contrib/href-ul/href-ul.pdf index f480b994d3..37a3867c0e 100644 Binary files a/macros/latex/contrib/href-ul/href-ul.pdf and b/macros/latex/contrib/href-ul/href-ul.pdf differ diff --git a/macros/latex/contrib/href-ul/href-ul.sty b/macros/latex/contrib/href-ul/href-ul.sty deleted file mode 100644 index 570f4ca51a..0000000000 --- a/macros/latex/contrib/href-ul/href-ul.sty +++ /dev/null @@ -1,40 +0,0 @@ -% (The MIT License) -% -% Copyright (c) 2021 Yegor Bugayenko -% -% Permission is hereby granted, free of charge, to any person obtaining a copy -% of this software and associated documentation files (the 'Software'), to deal -% in the Software without restriction, including without limitation the rights -% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -% copies of the Software, and to permit persons to whom the Software is -% furnished to do so, subject to the following conditions: -% -% The above copyright notice and this permission notice shall be included in all -% copies or substantial portions of the Software. -% -% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -% SOFTWARE. - -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{href-ul}[2021/06/13 0.1.0 Underscored Hyperlinks] - -\PassOptionsToPackage{normalem}{ulem} -\RequirePackage{ulem} -\PassOptionsToPackage{hidelinks}{hyperref} -\RequirePackage{hyperref} - -\makeatletter\begingroup% -\catcode`\$=6 % -\catcode`\#=12 % -\gdef\href@split$1#$2#$3\\$4{% - \hyper@@link{$1}{$2}{\uline{$4}}% - \endgroup% -}% -\endgroup\makeatother - -\endinput diff --git a/macros/latex/contrib/href-ul/href-ul.tex b/macros/latex/contrib/href-ul/href-ul.tex deleted file mode 100644 index 3f60b3f3ea..0000000000 --- a/macros/latex/contrib/href-ul/href-ul.tex +++ /dev/null @@ -1,70 +0,0 @@ -% (The MIT License) -% -% Copyright (c) 2021 Yegor Bugayenko -% -% Permission is hereby granted, free of charge, to any person obtaining a copy -% of this software and associated documentation files (the 'Software'), to deal -% in the Software without restriction, including without limitation the rights -% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -% copies of the Software, and to permit persons to whom the Software is -% furnished to do so, subject to the following conditions: -% -% The above copyright notice and this permission notice shall be included in all -% copies or substantial portions of the Software. -% -% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -% SOFTWARE. - -\documentclass[12pt]{article} -\usepackage{href-ul} % the package from the current dir -\usepackage{ffcode} -\usepackage{multicol} -\usepackage{xcolor} -\title{\ff{href-ul}: \LaTeX{} Package \newline That Makes Underscored Links} -\author{Yegor Bugayenko} -\date{0.1.0 2021/06/13} - -\begin{document} -\pagenumbering{gobble} -\raggedbottom -\setlength{\parindent}{0pt} -\setlength{\columnsep}{32pt} -\setlength{\parskip}{6pt} -\maketitle - -This package helps you make your hyperlinks underscored: - -\begin{multicols}{2} -\setlength{\parskip}{0pt} -\scriptsize -\raggedcolumns -\begin{verbatim} -\documentclass{article} -\usepackage{href-ul} -\begin{document} -Go to \href{https://google.com}{Google}! -\end{document} -\end{verbatim} - -\columnbreak - -Go to \href{https://google.com}{Google}! -\end{multicols} - -Changing the {\color{red}\href{https://github.com/yegor256/href-ul}{color}} of the text also changes the color of the line. - -Changing the {\Large\href{https://github.com/yegor256/href-ul}{size}} of the text doesn't change the width of the line. - -The package uses -\ff{\href{https://ctan.org/pkg/hyperref}{hyperref}} -and \ff{\href{https://ctan.org/pkg/ulem}{ulem}} packages. - -More details about this package you can find -in the \ff{\href{https://github.com/yegor256/href-ul}{yegor256/href-ul}} GitHub repository. - -\end{document} \ No newline at end of file diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf index fb6a67967d..b050328eed 100644 Binary files a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf and b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf differ diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex index 237021230d..d2df28ed97 100644 --- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex +++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex @@ -18,6 +18,10 @@ \usepackage[group-minimum-digits=4]{siunitx} \usepackage{fancyvrb} \usepackage{fancyhdr} +\usepackage{multicol} +%\makeatletter +% \@addtoreset{section}{part} +%\makeatother %fancy \fancyhf{} \renewcommand{\headrulewidth}{0pt} @@ -57,8 +61,8 @@ \setlength{\parindent}{0pt} \definecolor{LightGray}{gray}{0.9} -\def\PLversion{1.2.7} -\def\PLdate{1\ier{} Octobre 2022} +\def\PLversion{1.2.9} +\def\PLdate{3 Octobre 2022} \tcbset{vignettes/.style={% nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,% @@ -272,7 +276,9 @@ Des commandes pour effectuer des calculs de probas (lois binomiale, exponentiell \newpage -\section{Introduction} +\part{Introduction} + +\section{Le package ProfLycee} \subsection{\og Philosophie \fg{} du package} @@ -359,6 +365,8 @@ Les options précédentes sont cumulables, et, pour info, elles conditionnent le \end{itemize} \end{codeinfo} +\section{Compléments} + \subsection{Le système de \og clés/options \fg} \begin{codeidee} @@ -447,6 +455,8 @@ En dehors de cela, ce sont des tests multiples et variés qui permettront de dé \newpage +\part{Outils pour l'analyse} + \section{L'outil \og splinetikz \fg} \subsection{Courbe d'interpolation} @@ -465,11 +475,7 @@ On va utiliser les notions suivantes pour paramétrer le tracé \og automatique Pour déclarer les paramètres : % \begin{itemize} - \item liste des points de contrôle par : \verb|liste=x1/y1/d1§x2/y2/d2§...| - \begin{itemize} - \item il faut au-moins deux points ; - \item avec les points \pverb|(xi;yi)| et \vverb|f'(xi)=di|. - \end{itemize} + \item liste des points de contrôle (minimum 2 !!) par : \verb|liste=x1/y1/d1§x2/y2/d2§...| avec les points \pverb|(xi;yi)| et \vverb|f'(xi)=di| ; \item coefficients de contrôle par \verb|coeffs=...| : \begin{itemize} \item \averb|coeffs=x| pour mettre tous les coefficients à x ; @@ -499,7 +505,7 @@ Certains paramètres peuvent être gérés directement dans la commande \ctex{\t \item l'épaisseur de la courbe par la \textsf{clé} \Cle{epaisseur} ;\hfill{}défaut \Cle{1.25pt} \item du style supplémentaire pour la courbe peut être rajouté, grâce à la \textsf{clé} \Cle{style=} ;\hfill{}défaut \Cle{vide} \item les coefficients de \textit{compensation} gérés par la \textsf{clé} \Cle{coeffs} ;\hfill{}défaut \Cle{3} - \item les points de contrôle ne sont pas affichés par défaut, mais la \textsf{clé booléenne} \Cle{affpoints} permet de les afficher ;\hfill{}défaut \Cle{true} + \item les points de contrôle non affichés par défaut, mais la \textsf{clé booléenne} \Cle{affpoints} permet de les afficher ;\hfill{}défaut \Cle{true} \item la taille des points de contrôle est géré par la \textsf{clé} \Cle{taillepoints}.\hfill{}défaut \Cle{2pt} \end{itemize} \end{codecles} @@ -764,6 +770,179 @@ On obtient le résultat suivant (avec les éléments rajoutés utiles à la comp \newpage +\section{Suites récurrentes et \og toile \fg}\label{recurr} + +\subsection{Idée} + +\begin{codeidee} +L'idée est d'obtenir une commande pour tracer (en \TikZ) la \og toile \fg{} permettant d'obtenir -- graphiquement -- les termes d'une suite récurrente définie par une relation $u_{n+1}=f(u_n)$. + +\smallskip + +Comme pour les autres commandes \TikZ, l'idée est de laisser l'utilisateur définir et créer son environnement \TikZ, et d'insérer la commande \ctex{recurrPL} pour afficher la \og toile \fg. +\end{codeidee} + +\subsection{Commandes} + +\begin{codetex}[listing only] +... +\begin{tikzpicture}[] + ... + \recurrPL[][][